October 2026 Ahrefs fixes for review
Branch:SEO-fixes-October-2026
Base at branch creation: origin/staging, 2a43642790981be4a1ca4530d3f405f2b185e002
Pre-merge review base: origin/staging, 686ba1b8240e520b355f0ca4920eff9496d0a9f2 (October 12).
Tracking: CFO-9417
Evidence: Ahrefs Site Audit project 10266171, completed 2026-10-09 18:22:44 UTC. Health 81, 647 internal URLs, 120 URLs with errors, and 44 active issue categories/scopes. Counts overlap.
Current scope: original final pages and app behavior, with homepage pre-loading
Updated October 12 after the user’s explicit clarification that homepage pre-loading content can stay, provided the original final page is preserved. The shared loading introduction is restored only while the homepage experiment resolves or its Suspense boundary is pending. Once ready, the introduction is fully removed and the original V3, V4, V5 or Framer handoff renders. The final page’s body text, layout, styles, images, cards, controls and interactions retain their original implementation. Other retained changes are public SEO metadata, sitemap/crawler output, structured data and corrections to existing link destinations. The only component changes are the homepage router, its loading introduction and its regression tests. The full branch diff is empty for stylesheets,app/(app)/, app/layout.tsx, app/metadata.ts, app/(public)/layout.tsx, middleware.ts, API routes, hooks, and contexts. Sign-in, signup, community sign-in and SMS opt-in also match the base. Existing calculator and quiz logic is unchanged. Public metadata is isolated in lib/seo/public-metadata.ts; the original app helper and runtime-origin behavior are preserved. Private URLs are removed only from the public sitemap, without changing their access controls or pages.
The user authorized a PR and merge to staging on October 12. Production release, CMS publication, live IndexNow submission and outbound user messages remain outside scope. Workbook research, reminders and unrelated reporting are outside the branch. Ahrefs MCP was checked again before opening the PR and still reports the October 9 crawl; production release and a fresh crawl are required before claiming live findings have cleared.
Retained SEO fixes
Withdrawn to preserve visuals and app behavior
These earlier fixes are no longer in the net branch diff and must not be reported as resolved:- Prompt topic index and related-prompt rotation: the original directory and related cards are restored. The 82 orphan prompt findings remain open; the sitemap alone does not resolve an orphan-page issue.
- Institution-guide navigation, related quiz/calculator changes and the research cross-link: all original sections, cards and destinations are restored. The 41 main-site pages with one incoming followed link remain candidates for a separately approved visible change; the 42nd is the external trust center.
- About-page H1 conversion: the original paragraph tag is restored, leaving that heading finding open.
- New SMS terms navigation entry: removed. Its metadata and existing sitemap entry remain, but the missing internal link is not claimed as fixed.
- Wrapped, sign-in, signup, community sign-in, SMS opt-in and shared public-layout metadata changes: fully reverted to avoid changing app-adjacent routes or inherited behavior. Wrapped remains excluded from the public sitemap only.
- The companion navigation-skill patch for prompt and institution navigation remains withdrawn. The existing local patch documents only the permitted homepage pre-loading state and has not been published. In the final merge instruction, Bilal explicitly said “dont make any changes to the skills folder.” This overrides the agent skills-sync checklist for this request: no skills-folder or skills-repository changes are part of this merge. The prepared patch is unchanged and its publication is not claimed. Required GitHub review rules still apply.
Exact sitemap exclusions
The 18 authentication destinations removed are/accounts, /chat, /assets-liabilities, /private-investments, /public-investments, /research, /vault, /precious-metals, /product-updates, /crypto-holdings, /real-estate, /transactions, /goals, /collectibles, /vehicles, /radar, /liabilities, and /dashboard. /wrapped is also excluded. All retain their existing routes and access controls.
Source-link repairs
CFPB replacement content was retrievable through the web source tool; direct command-line requests from this environment were blocked with 403. Fifth Third’s replacement returned HTTP 200. A publisher can still block Ahrefs independently of whether a reference is correct.
Remaining editorial or external work
- Nine blog articles share a dead FINRA citation. The missing destination is
https://www.finra.org/investors/insights/get-off-bench-look-benchmarks. No verified relocation of that exact article was found. Selecting a different publication also requires reviewing the claim and citation label in the CMS. This branch does not silently substitute an unrelated citation. Affected articles: - Two authored CMS metadata items remain: the long title on What is a personal CFO? and the short description on Silvia Reborn. These need editorial changes in Sanity. The branch does not hardcode per-article content overrides.
- Trust center: trust.cfosilvia.com needs server-visible content/H1/navigation, a language attribute,
og:url, description cleanup and sitemap review in its separate hosting system. This Next.js repository does not serve that host. - Investor relations: investors.cfosilvia.com and two news-release URLs returned 403 to Ahrefs. The host/crawler policy needs verification; these are not internal 404s that should be redirected away.
- Eight external 403 destinations need normal-browser and crawler-policy verification: CNBC, PNC investor news, Rocket Money, SBA loan guidance, two Chime help articles, a Department of Labor retirement PDF and the Colorado attorney-general site. Valid citations should not be replaced just to bypass a bot restriction.
- Other external redirects: USAA’s
akredirectparameter is vendor behavior; CMS-owned Monarch, Origin, FINRA and other references require their own editorial pass. They are not treated as broken merely because they redirect. - Timing and ranking notices: Three crawler response times of roughly 1.1–1.3 seconds, eight estimated organic-traffic drops, a lost top-ten position, and search-engine title rewrites do not establish a code defect. Recheck after release and use Search Console/field performance data before attributing changes to SEO work.
- IndexNow delivery: inspect the configured production key/webhook and recrawl after release. The existing key route and Sanity publish submission flow are present. Ahrefs reports its own auto-submission as off, not a confirmed failure of this integration.
Verification of the retained scope
- 199 tests passed across 25 files in the preceding scope-reduction pass, before restoring homepage pre-loading. Coverage includes public/app metadata isolation, sitemap, blog metadata/link normalization, prompt metadata, institution content, calculators and assessments. Removed tests belonged exclusively to the withdrawn UI/helpers; original tests were restored with their original implementation.
- 21 landing tests passed across four files after restoring pre-loading. The router tests cover complete removal of the loading DOM for all three React variants and the Framer handoff, including tracked and untracked QA visits. Existing experiment-hook, Framer-proxy and Framer-handoff tests also pass.
- Final-state comparison: the ready-state router branches and Framer tracking props exactly match the branch base. V3, V4, V5, their component directories, the Framer handoff/proxy and all stylesheets are unchanged.
- Full TypeScript check passed after
next typegen, using an 8 GB Node heap. - ESLint passed on all 47 changed TypeScript/TSX files in the preceding pass and on all four restored/updated homepage files in this pass, with zero errors or warnings.
- JSX comparison before the pre-loading exception: parsed each changed TSX file against the branch base and compared all rendered JSX. All 24 files matched, allowing only the corrected
hrefvalues on two existing legal pages. Those files remain unchanged by the restoration; the homepage fallback/router and new loading component are the explicitly approved exception. New metadata-only layouts return their children without adding markup. The research schema change is outside visible JSX. - Content comparison: all five changed calculator/quiz/guide content catalogs matched their originals after normalizing citation URL fields. Labels, prose, questions, scoring inputs and related cards are unchanged.
- App scope: no net changes to final landing components, styles, authenticated routes, authentication pages, root/shared layouts, middleware, API routes, hooks or contexts. The dedicated public metadata helper has no signed-in consumer.
getSiteUrlremains unchanged;getAbsoluteUrlconsumers are public SEO/crawler surfaces. - Branch diff whitespace check passed against the original base. Restoring the original signup file also restores its pre-existing blank line at EOF; that file is absent from the net branch diff.
- Earlier schema validation remains applicable: Google’s code-mode test validated one Article and one Dataset from the local page’s JSON-LD. That markup is unchanged by this scope reduction. This is not evidence of a production deployment.
noindex, follow URLs, canonical host redirects, login redirects/query parameters, and vendor-managed Clerk script redirect remain unchanged. Ranking/latency notices still need measurement rather than speculative code changes.
See the original audit inventory for all 44 categories/scopes and source/target pairs. It remains a historical audit snapshot, not a list of completed fixes. Google’s Dataset documentation supports the retained schema fields.
Pre-merge validation on current staging
- Merged current staging into the SEO branch and resolved the only conflict in the sitemap, retaining staging’s protected-route exclusions and their explanatory comment.
- 221 tests passed across 29 files, including the new sitemap guard already on staging. Full TypeScript and ESLint on all 51 changed TypeScript files passed.
- Compared 24 rendered TSX files against current staging: unchanged markup except corrected legal link hrefs. Five content catalogs differ only in citation URLs. Homepage ready-state branches and all final landing components are unchanged. Authenticated routes, authentication pages, middleware, hooks, API routes and styles have no PR diff.
- Vercel project identity confirmed:
silvia-web,prj_hqjfEL7qOIJHYrbz3QjRWxibEAyZ, teamteam_WjUwLHzJL2h5B24WQcUmooc1. Production usesmain;stagingmaps to the separate staging environment atstaging.cfosilvia.com.
Final copy-preservation review — October 12
Only titles outside the audit length range are changed. The prompt-title guard includes Next.js’s inherited | Silvia suffix in its 70-character ceiling. Descriptions already within 160 characters retain their exact wording. These are audit guardrails, not a promise of search-engine display width or ranking.
- Restored 143 in-range prompt titles, 104 in-range prompt descriptions and both in-range AI Lab titles. The remaining 14 prompt title and 53 prompt description changes reflect the current 157-entry catalog; the October 9 production crawl predates some catalog changes already on staging.
- The prompt directory’s current original title is 71 characters (
150+), versus 70 characters (140) in the old crawl, so its shortening is retained. - Preserved the original 136-character descriptions on SMS terms and Security; only their short titles and canonical URLs change. Blog preview truncation leaves in-range copy untouched.
- Validation: 222 tests across 29 files, full TypeScript and changed-file ESLint passed. Twenty-eight local routes returned 200; their rendered titles match the final metadata, including all 14 shortened prompt titles and the two restored AI Lab titles. Skills folders, the prepared companion patch and the signed-in application remain unchanged in this follow-up.