fix(marketing): tighten SEO meta lengths across 36 pages (audit #12-14) - #87
Conversation
, #14) Three related findings from docs/audit/2026-05-13-marketing-audit.md: - #12 MED: 20 page titles over 60 chars (Google truncates ~60) - #13 MED: 13 meta descriptions over 170 chars (truncates ~155-160) - #14 MED: 10 meta descriptions under 100 chars (wasted SERP) Each rewrite mirrors the page's existing positioning - no new claims, no scope shift. Approach per category: - Long titles: collapse the brand suffix and the trailing qualifier ("Healthcare Compliance Platform - Clinical Governance & Accreditation | FormaOS" 78c -> "Healthcare Compliance Platform | FormaOS" 40c). - Long descriptions: drop redundant trailing fluff while keeping the vertical-list and value claim (homepage 219c -> 151c). - Short descriptions: expand from one-line summaries to ~130-150c using the page's actual content (trust/sla 89c -> 129c). Where a page also had openGraph/twitter description overrides, both were updated so social previews and SERP stay aligned. Verified post-rewrite: zero titles >60, zero descriptions >170, zero descriptions <100. tsc --noEmit clean. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: c382802942
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| export const metadata: Metadata = { | ||
| title: | ||
| 'FormaOS - Compliance Operating System for Australian Regulated Industries', | ||
| 'Compliance Operating System for Regulated Industries', |
There was a problem hiding this comment.
Keep the homepage title branded
Because the marketing layout uses title.template: '%s' (checked app/(marketing)/layout.tsx), this string is emitted exactly as the root page title. Removing FormaOS here means the homepage browser/search title and matching share metadata become a generic “Compliance Operating System…” label, unlike the rest of the marketing pages and the previous root title; root URL search/social snippets lose brand attribution in production.
Useful? React with 👍 / 👎.
There was a problem hiding this comment.
Pull request overview
This PR tightens SEO titles and meta descriptions across marketing pages to better fit SERP/social preview length targets while preserving page positioning.
Changes:
- Shortens long marketing page titles across industry, comparison, pricing, and trust pages.
- Expands short meta descriptions on trust/legal/action pages.
- Updates some Open Graph and Twitter metadata to stay closer to page-level metadata.
Reviewed changes
Copilot reviewed 36 out of 36 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
| app/(marketing)/page.tsx | Shortens homepage SEO/social metadata. |
| app/(marketing)/pricing/page.tsx | Shortens pricing title and updates description. |
| app/(marketing)/contact/page.tsx | Shortens sales contact title. |
| app/(marketing)/features/page.tsx | Rewrites features description. |
| app/(marketing)/integrations/page.tsx | Tightens integrations description. |
| app/(marketing)/industries/page.tsx | Shortens industries titles. |
| app/(marketing)/enterprise/page.tsx | Shortens enterprise title/description. |
| app/(marketing)/our-story/page.tsx | Expands story description. |
| app/(marketing)/roadmap/page.tsx | Tightens roadmap description. |
| app/(marketing)/changelog/page.tsx | Shortens changelog title. |
| app/(marketing)/terms/page.tsx | Expands terms metadata description. |
| app/(marketing)/legal/page.tsx | Expands legal metadata descriptions. |
| app/(marketing)/evaluate/page.tsx | Expands Evaluate metadata descriptions. |
| app/(marketing)/prove/page.tsx | Expands Prove metadata descriptions. |
| app/(marketing)/what-is-a-compliance-operating-system/page.tsx | Tightens explainer description. |
| app/(marketing)/audit-evidence-management/page.tsx | Shortens audit evidence title. |
| app/(marketing)/soc2-compliance-automation/page.tsx | Shortens SOC 2 title. |
| app/(marketing)/iso-compliance-software/page.tsx | Shortens ISO title. |
| app/(marketing)/ndis-providers/page.tsx | Shortens NDIS provider titles. |
| app/(marketing)/ndis-compliance-system/page.tsx | Shortens NDIS system title/description. |
| app/(marketing)/healthcare-compliance/page.tsx | Shortens healthcare compliance titles. |
| app/(marketing)/healthcare-compliance-platform/page.tsx | Shortens healthcare platform title/description. |
| app/(marketing)/financial-services-compliance/page.tsx | Shortens finance compliance metadata. |
| app/(marketing)/construction-compliance/page.tsx | Shortens construction compliance metadata. |
| app/(marketing)/childcare-compliance/page.tsx | Shortens childcare compliance metadata. |
| app/(marketing)/customer-stories/page.tsx | Shortens customer stories titles. |
| app/(marketing)/compare/page.tsx | Rewrites comparison index description. |
| app/(marketing)/compare/6clicks/page.tsx | Shortens 6clicks comparison titles. |
| app/(marketing)/compare/complispace/page.tsx | Shortens CompliSpace comparison titles. |
| app/(marketing)/compare/healthmetrics/page.tsx | Shortens HealthMetrics comparison titles. |
| app/(marketing)/compare/riskware/page.tsx | Shortens Riskware comparison titles. |
| app/(marketing)/trust/data-handling/page.tsx | Expands data handling descriptions. |
| app/(marketing)/trust/incident-response/page.tsx | Expands incident response descriptions. |
| app/(marketing)/trust/procurement/page.tsx | Expands procurement descriptions. |
| app/(marketing)/trust/sla/page.tsx | Expands SLA descriptions. |
| app/(marketing)/trust/subprocessors/page.tsx | Expands subprocessors descriptions. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| title: 'Compare FormaOS vs AU Compliance Platforms', | ||
| description: | ||
| 'Compare FormaOS against Ideagen Policy Logic, Riskware, 6clicks, and HealthMetrics. See how operational compliance execution beats traditional GRC and clinical-reporting tools for NDIS, aged care, and healthcare.', | ||
| 'Compare FormaOS to HealthMetrics, CompliSpace, Riskware, and 6clicks across pricing, frameworks, evidence integrity, and audit-readiness.', |
♿ Accessibility Test Results✅ PASSED - No critical accessibility issues found Tests Performed:
Artifacts: Download the accessibility reports from the "Artifacts" section for detailed results. |
Final PR of the Phase D pricing redesign pass. Closes the remaining §N+2 D-* findings from the marketing audit. D-5 (real bug — hydration gap) ------------------------------ The hero's "View pricing" CTA points at #pricing-table. That id was on a <section> inside PricingTiers, which is rendered behind a DeferredSection IntersectionObserver — so the id was absent from the initial SSR HTML and the anchor click had nothing to scroll to until the user had already scrolled near the section. Fixed by adding a stable <div id="pricing-table" scroll-mt-24 /> sibling immediately before the DeferredSection in PricingPageContent. The inner <section> drops its id to avoid duplicate-id violations and carries a comment explaining where the anchor lives. D-7 (no commercial change) -------------------------- User chose to surface the existing "cancel anytime" framing as the de-facto trial rather than invent a commercial trial that doesn't exist (the FAQ explicitly says "No"). Two moves: 1. The per-tier trustNote string moved from a small 11px line below the price to a visible bordered chip with a check icon, placed between the price block and the CTA. Emerald check on the featured (Growth) tier, slate on the others. 2. The Enterprise tier's trustNote was rephrased from "Annual agreements · invoice billing · custom SLA" to "Sandbox walkthrough · security review pack · custom SLA" — surfacing the evaluation path that already exists in the FAQ (sandbox tenant + guided walkthrough for procurement) instead of leading with billing mechanics. D-1, D-4, D-2, D-3 — verifications / annotations only ----------------------------------------------------- - D-1 verified against live (`curl https://www.formaos.com.au/pricing`): $297 / $797 / $1,800 all in SSR HTML. Audit claim was stale. - D-4 was already closed across #89 (hero version-badge strip) and #90 (comparison-table footer status). Annotation only. - D-2 / D-3 already shipped in #87 (meta-length pass). Annotation only. - D-6 (the "anchored to risk" CTA sentence) is preserved untouched through #89, #90, and this PR. The audit doc §N+2 entries are annotated with each item's resolution and the PR that closed it. Co-authored-by: ejaz <ejaz@local> Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
Summary
Three related findings in
docs/audit/2026-05-13-marketing-audit.md:Each rewrite mirrors the page's existing positioning — no new claims, no scope shift. Where a page has separate
openGraph/twitterdescription overrides, both were updated so social previews and SERP stay aligned.After this PR: zero titles >60, zero descriptions >170, zero descriptions <100 across
app/(marketing)/**.Test plan
/,/pricing,/healthcare-compliance-platform,/trust/sla