Skip to calculator

Post-launch operations

SEO Monitoring Playbook

A practical operating cadence for a Google SEO calculator site after launch. It separates daily launch watch, weekly SEO review, monthly growth review, and incident response so optimization does not disturb the locked calculation engine.

4 cadences14 checks

Search Console submission loop

Sitemap, URL Inspection, and Page Indexing Checks

Use this loop after major releases, tax-data updates, or new SEO page clusters. It starts with the local smoke command, then moves into Google Search Console only after canonical and crawl signals are clean.

7 steps

1. Run production SEO smoke before submitting

npm run seo:smoke

Confirm homepage, canonical, robots.txt, sitemap.xml, llms.txt, trust copy, and high-risk YMYL phrase checks pass before touching Search Console.

Evidence: Passing command output

2. Submit or resubmit sitemap.xml

Google Search Console Sitemaps report

Submit https://www.roth-conversion-calculator-ai.shop/sitemap.xml and confirm Search Console can fetch it without parsing errors.

Evidence: Submitted sitemap row and last-read status

3. Run priority URL evidence check

npm run seo:gsc-evidence

Confirm priority URLs return 200, expose the expected canonical URL, appear in sitemap.xml, and do not send noindex signals before URL Inspection retries.

Evidence: Passing JSON output with priority URL status, canonical, sitemap, and noindex fields

4. Inspect priority URLs

Google Search Console URL Inspection

Inspect homepage, /methodology, /tax-data-update, /tax-brackets/2026, /roth-conversion-irmaa-guide, and /seo-monitoring after major releases.

Evidence: Inspection result, Google-selected canonical, and crawl/index state

5. Request indexing only after material changes

Google Search Console URL Inspection

Use request indexing for newly published or materially updated priority URLs after the live page, canonical, and sitemap are correct.

Evidence: Requested indexing confirmation or reason not requested

6. Review Page indexing report

Google Search Console Page indexing report

Compare indexed, not indexed, discovered, crawled, duplicate, and alternate canonical statuses against sitemap and internal-link expectations.

Evidence: Affected URL examples and status trend

7. Record and route exceptions

PROGRESS.md and release notes

Record affected URLs, status, likely cause, corrective action, and follow-up date; convert repeated issues into tests or smoke checks.

Evidence: Progress entry, issue note, or regression guard

GSC validation follow-up plan

Schedule Follow-Up Without Re-clicking Validate Fix

Once Page indexing shows Validation started, use npm run seo:gsc-validation-follow-up-validate to validate the next review window, allowed outcomes, blocked actions, and privacy boundary before returning to Search Console.

5 fields

sourceValidationAction

Every follow-up plan
Source
Sanitized GSC validation action record
Validation
Link docs/evidence/gsc-discovered-validation-final-2026-06-06.json so the follow-up plan starts from a validated Validate fix action.

followUpPlan

After Validation started
Source
Operations reviewer
Validation
Record firstReviewDate, secondReviewDate, cadence, and reviewSurface. Validate with npm run seo:gsc-validation-follow-up-validate before treating the issue as scheduled for follow-up.

reviewChecklist

Each GSC follow-up
Source
Search Console Page indexing issue detail plus site-side evidence
Validation
Check validation status, affected URL count, changed sample URLs, and failed samples. If sample URLs change, rerun seo:gsc-discovered-samples before editing site code.

blockedActions

Always
Source
Google SEO operations boundary
Validation
Prevent repeated Validate fix clicks, scaled request-indexing attempts, indexing-status inference from site-side evidence, and syncing account-UI screenshots without explicit approval.

privacyBoundary

Always
Source
Reviewer
Validation
Public follow-up JSON must exclude account identifiers, cookies, tokens, raw private GSC UI text, and screenshot paths.

GSC validation action record

Record Page Indexing Validation Without Publishing Account UI

After a reviewer clicks Validate fix for a Page indexing issue, keep screenshots local when they show account UI and sync only sanitized JSON evidence. Validate that record with npm run seo:gsc-validation-action-validate before adding it to a Search Console follow-up note.

4 fields

evidenceType

Every Page indexing validation action
Source
Sanitized GSC validation action record
Validation
Use gsc-indexing-validation-action and validate it with npm run seo:gsc-validation-action-validate before syncing the record.

gscResult.validationStarted

After clicking Validate fix
Source
Google Search Console Page indexing issue detail
Validation
Must be true only after the issue detail page visibly changes to Validation started with a retained validationStartDate.

siteEvidenceLinked

Before and after GSC validation is started
Source
Production technical evidence
Validation
Link docs/evidence/gsc-discovered-sample-evidence-2026-06-06.json and require sampleTechnicalEvidenceOk, sampleCount, and siteIndexLinkedSampleCount to match the observed sample URLs.

privacyBoundary

Always
Source
Reviewer
Validation
State that screenshots stay local when they contain account UI and that the public JSON excludes account identifiers, cookies, tokens, raw private UI text, and screenshot paths.

GSC indexing record template

Convert URL Inspection Screens Into Durable Evidence

Use docs/search-console-indexing-record-template.json after manual URL Inspection or Page indexing review. Generate a prefilled draft with npm run seo:gsc-indexing-record-draft -- --url https://www.roth-conversion-calculator-ai.shop/seo-monitoring --artifact tmp-round107-final-artifact --out docs/search-console-indexing-record-draft.json, run npm run seo:gsc-indexing-record-ready -- path/to/record.json to list the reviewer-supplied GSC fields still missing, run npm run seo:gsc-indexing-record-summary -- path/to/record.json after the record is completed, run npm run seo:gsc-indexing-records-manifest to inventory archived records and screenshot hashes, then validate the filled record with npm run seo:gsc-indexing-record-validate -- path/to/record.json before attaching it to a Search Console retry note. Site-side evidence can support the record, but it must not infer private Google Search Console status.

8 fields

recordStatus

Always
Source
Reviewer
Validation
Use docs/search-console-indexing-record-template.json with recordStatus template before capture, generate a draft with npm run seo:gsc-indexing-record-draft, run npm run seo:gsc-indexing-record-ready to list missing reviewer fields, run npm run seo:gsc-indexing-record-summary after recording, run npm run seo:gsc-indexing-records-manifest to inventory archived evidence, and use recorded only after a real GSC URL Inspection result is copied in.

inspectedUrl

Always
Source
Google Search Console URL Inspection
Validation
Must be an https URL on www.roth-conversion-calculator-ai.shop.

indexingState

Recorded status
Source
URL Inspection result
Validation
Use the observed state such as indexed, not_on_google, discovered_not_indexed, crawled_not_indexed, alternate_canonical, blocked, or duplicate_without_user_selected_canonical.

liveTestState

When live test is run
Source
URL Inspection live test
Validation
Use can_be_indexed, cannot_be_indexed, not_run, or unknown.

googleSelectedCanonical

Recorded status
Source
URL Inspection canonical panel
Validation
Copy the exact Google-selected canonical value or leave empty only when GSC does not show it.

requestIndexing

Every retry window
Source
Request indexing action
Validation
Record attempted, attemptedAt, outcome, and the exact Google message so transient errors do not become site-side regressions.

siteEvidence

Every recorded status
Source
Downloaded production-seo-evidence artifact
Validation
Link the GitHub Actions run id and commit SHA and confirm gscEvidenceOk, searchConsoleVerificationOk, internalLinkEvidenceOk, and htmlQualityEvidenceOk. The draft generator can prefill these from a downloaded production-seo-evidence artifact.

screenshots

Recorded status
Source
GSC screenshot or exported evidence
Validation
Include at least one real screenshot path or URL before treating the record as final evidence. Use the readiness command to confirm no reviewer-supplied GSC fields remain missing, then use the summary command and records manifest for archive or retry notes. Do not infer private GSC status from site-side evidence.

SEO evidence artifact review

Review the Downloaded Proof Package Before GSC Work

The SEO Smoke workflow keeps a 30-day production-seo-evidence artifact. Use this review checklist before sitemap resubmission, URL Inspection retries, indexing incident notes, or production SEO regression triage.

20 files

Confirm production smoke status

seo-smoke-result.json

Open the downloaded production-seo-evidence artifact and confirm the smoke result has ok: true for the canonical production host.

Pass signal
Homepage, robots.txt, sitemap.xml, llms.txt, canonical host, and trust-copy checks all pass.
Use before
Use before any Search Console sitemap resubmission or URL Inspection retry.

Confirm priority URL crawl signals

gsc-evidence-result.json

Review the priority URL array for statusCode, canonicalUrl, inSitemap, noindex, sitemapLastmod, and lastmodFresh fields.

Pass signal
Every priority URL returns HTTP 200, appears in sitemap.xml, has no noindex signal, and keeps lastmodFresh: true where required.
Use before
Use before deciding whether an indexing delay is site-side or Search Console-side.

Confirm discovered sample URL signals

gsc-discovered-sample-evidence-result.json

Review the GSC discovered-not-indexed sample URLs for HTTP status, canonical URL, sitemap inclusion, /site-index internal discovery, noindex status, lastmod, and title coverage.

Pass signal
The evidence has ok: true, failureCount: 0, sourceIssueState: discovered_not_indexed, siteIndex.linkedSampleCount equal to resultCount, and every sample URL returns 200, appears in sitemap.xml, is linked from /site-index, has no noindex signal, and keeps a self-canonical URL.
Use before
Use before deciding whether a discovered-not-indexed cluster needs a site-side canonical/sitemap fix or should remain in Google crawl-priority monitoring.

Confirm GSC validation action record

docs/evidence/gsc-discovered-validation-final-2026-06-06.json

Review the sanitized Page indexing validation action record after clicking Validate fix in Google Search Console.

Pass signal
The record validates with npm run seo:gsc-validation-action-validate, has evidenceType: gsc-indexing-validation-action, action: validate_fix_started, validationStarted: true, validationStartDate, affectedUrlCount, sampleTechnicalEvidenceOk: true, siteIndexLinkedSampleCount matching sampleCount, and a privacyBoundary excluding account identifiers, cookies, tokens, raw private UI text, and screenshot paths.
Use before
Use before treating the GSC Discovered - currently not indexed issue as in validation, before syncing evidence to GitHub, or before scheduling the next GSC follow-up.

Confirm GSC validation follow-up plan

docs/evidence/gsc-discovered-validation-follow-up-2026-06-06.json

Review the sanitized follow-up plan after the Page indexing validation action starts, before checking GSC again.

Pass signal
The record validates with npm run seo:gsc-validation-follow-up-validate, has evidenceType: gsc-indexing-validation-follow-up, validation start date, first and second review dates, allowed outcomes, blocked repeated Validate fix actions, linked sample evidence, linked validation-action evidence, and a privacyBoundary excluding account identifiers, cookies, tokens, raw private UI text, and screenshot paths.
Use before
Use before returning to GSC after Validation started, before recording validation passed or failed, or before deciding whether changed samples need new site-side evidence.

Confirm Search Console verification signals

search-console-verification-evidence-result.json

Review the site-side Search Console verification evidence after Google property, DNS, or HTML verification changes.

Pass signal
The evidence has ok: true, domainTxtVerified: true, htmlMetaVerified: true, spfRecordRetained: true, canonicalHostRetained: true, and gscUiOwnershipNotAsserted: true so reviewers know this proves public DNS and HTML signals, not the private Search Console UI ownership state.
Use before
Use before retrying domain property verification, switching between URL-prefix and domain properties, or diagnosing Search Console ownership warnings.

Confirm DNS and canonical host routing

dns-evidence-result.json

Review DNS and HTTPS evidence for the apex host and canonical www host after domain-provider changes or Vercel domain warnings.

Pass signal
The DNS evidence has ok: true, expectedCnameRetained: true, apexRedirectsToCanonical: true, wwwReturnsOk: true, apex HTTPS status 308, and canonical www HTTPS status 200.
Use before
Use before changing DNS records, resubmitting sitemap.xml, or diagnosing Search Console host verification warnings.

Confirm production security headers

security-headers-evidence-result.json

Review the live production response headers for CSP, HSTS, nosniff, referrer policy, permissions policy, frame ancestors, base URI, form action, and framework fingerprinting.

Pass signal
The security headers evidence has ok: true, securityHeadersOk: true, contentSecurityPolicyRetained: true, hstsRetained: true, nosniffRetained: true, frameAncestorsNone: true, baseUriSelf: true, formActionSelf: true, permissionsPolicyRetained: true, referrerPolicyRetained: true, and noPoweredByHeader: true.
Use before
Use before security, privacy, launch-readiness, or YMYL trust reviews.

Confirm production health endpoint

health-evidence-result.json

Review the live /api/health evidence for HTTP status, no-store cache control, tax-year metadata, content counts, enabled feature counts, pending professional-review status, and secret-key exposure checks.

Pass signal
The health evidence has ok: true, healthEndpointOk: true, statusOk: true, cacheNoStoreRetained: true, taxYearRetained: true, taxDataLastUpdatedRetained: true, professionalReviewPending: true, blogCoverageRetained: true, glossaryCoverageRetained: true, enabledFeatureCoverageRetained: true, and noSecretLikeKeys: true.
Use before
Use before launch-readiness, uptime, privacy, or production incident reviews.

Confirm crawl discovery endpoints

crawl-discovery-evidence-result.json

Review robots.txt, sitemap.xml, feed.xml, and llms.txt evidence for status, canonical host coverage, URL counts, RSS item counts, and AI-discovery coverage.

Pass signal
The crawl discovery evidence has ok: true, robotsDiscoveryRetained: true, sitemapUrlCountRetained: true, sitemapCanonicalHostRetained: true, sitemapRequiredPathsRetained: true, feedItemsRetained: true, feedBlogCoverageRetained: true, llmsCoreCoverageRetained: true, llmsBoundaryRetained: true, sitemap.urlCount at least 120, and feed.itemCount at least 13.
Use before
Use before sitemap resubmission, crawl-discovery incident review, RSS checks, or AI-search discovery review.

Confirm internal link health

internal-link-evidence-result.json

Review sitemap URL health and site-index coverage to confirm production internal discovery pages return HTTP 200, retain the canonical host, avoid noindex, and expose core internal links.

Pass signal
The internal link evidence has ok: true, allSitemapUrlsOk: true, canonicalHostRetained: true, noNoindexRetained: true, sitemapUrlHealthRetained: true, siteIndexInternalLinksRetained: true, siteIndexCorePathsRetained: true, sitemap.checkedUrlCount at least 120, and siteIndex.internalLinkCount at least 100.
Use before
Use before diagnosing crawl-depth, orphan-page, sitemap-health, or Search Console discovered-not-indexed issues.

Confirm HTML quality signals

html-quality-evidence-result.json

Review production HTML quality evidence for HTTP 200 status, html lang, one H1 per page, title and meta description coverage, canonical tags, image alt text, button names, and form labels.

Pass signal
The HTML quality evidence has ok: true, pageStatusRetained: true, htmlLangRetained: true, singleH1Retained: true, titleRetained: true, metaDescriptionRetained: true, canonicalRetained: true, imageAltRetained: true, buttonNameRetained: true, formLabelRetained: true, pageCount at least 120, and maxFailureCount: 0.
Use before
Use before diagnosing HTML SEO, accessibility, page-template, or rich-result eligibility regressions.

Confirm professional review packet

professional-review-packet-evidence-result.json

Review the professional review packet evidence before changing public review status or sending the site to a CPA, EA, or qualified tax professional.

Pass signal
The professional review packet evidence has ok: true, pageStatusOk: true, pageTermsRetained: true, sitemapRetained: true, llmsRetained: true, healthPendingReviewRetained: true, taxYearRetained: true, and professionalReviewPacketOk: true in the validator summary.
Use before
Use before professional review handoff, tax-data signoff, or changing review-pending language.

Confirm private evidence boundary

privacy-evidence-boundary-result.json

Review the GitHub main evidence scan before syncing private GSC screenshots, account UI images, or docs/evidence image files.

Pass signal
The privacy boundary evidence has ok: true, privacyEvidenceBoundaryOk: true, repository: TAO605/roth-conversion-calculator-ai, branch: main, allowlistRetained: true, gitignoreRulesRetained: true, remotePrivateEvidenceCount: 2, approvedRemotePrivateEvidenceCount: 2, unapprovedRemotePrivateEvidenceCount: 0, and privacyUnapprovedRemoteEvidenceCount: 0.
Use before
Use before syncing evidence to GitHub, attaching Search Console screenshots to public records, or reviewing private/public evidence boundaries.

Confirm AI endpoint security guard

ai-security-evidence-result.json

Review the CI-safe AI endpoint security evidence after AI route, CSP, rate-limit, or environment-default changes.

Pass signal
The AI security evidence has ok: true, aiSecurityOk: true, paidModelFuseRetained: true, originGuardRetained: true, rateLimitRetained: true, fallbackProviderHeaderRetained: true, envExampleSecretHygieneRetained: true, crossOriginProbeBlocked: true, crossOriginProbeStatus: 403, crossOriginProbeProvider: fallback, crossOriginProbeReason: origin_blocked, and homepageCspBlocksBrowserOpenAi: true.
Use before
Use before diagnosing API-key abuse, changing AI explainer model settings, or treating short site visits as paid provider spend evidence.

Confirm AI verifier regression stats

ai-verifier-regression-evidence-result.json

Review deterministic AI verifier pass, fail, and fallback evidence after AI route, verifier, disclaimer, or model-fuse changes.

Pass signal
The AI verifier regression evidence has ok: true, aiVerifierRegressionOk: true, aiVerifierRegressionScenarioCount: 6, statsPanel.totalFixtures: 6, statsPanel.passFixtures: 1, statsPanel.failFixtures: 4, statsPanel.fallbackFixtures: 1, deterministicCoverage: pass/fail/fallback, routeFailsClosedToFallback: true, and sameOriginFallbackProbeRetained: true.
Use before
Use before enabling paid-model explainer output, reviewing AI compliance changes, or treating model-generated explanations as production-safe.

Confirm validator summary

seo-evidence-validation-result.json

Confirm the retained validator result reports ok: true after checking smoke, GSC priority URLs, GSC discovered samples, DNS, security headers, health, crawl discovery, internal links, HTML quality, professional review packet, performance, structured data, blog discovery, professional UI evidence, private evidence boundary, AI security evidence, and AI verifier regression evidence together.

Pass signal
The validation summary records the expected host, gscDiscoveredSampleCount, searchConsoleVerificationOk: true, dnsCanonicalOk: true, securityHeadersOk: true, healthEndpointOk: true, crawlDiscoveryUrlCount, internalLinkCheckedUrlCount, htmlQualityPageCount, professionalReviewPacketOk: true, professionalUiScannedFileCount, privacyEvidenceBoundaryOk: true, privacyUnapprovedRemoteEvidenceCount: 0, aiSecurityOk: true, aiVerifierRegressionOk: true, aiVerifierRegressionScenarioCount: 6, and no contract failures.
Use before
Use before attaching the artifact to incident review or a GSC retry note.

Confirm professional UI source guard

professional-ui-evidence-result.json

Confirm the retained UI source guard scanned src/app and src/features for old glass-template surface classes.

Pass signal
The professional UI evidence has ok: true, scannedFileCount above zero, violationCount: 0, and an empty violations array.
Use before
Use before approving UI, route, or component changes as compliant with the no-glass professional surface system.

Confirm manifest traceability

seo-evidence-manifest.json

Confirm the manifest records artifactName, artifactSchemaVersion, generatedAt, eventName, gitHubRepository, gitHubServerUrl, gitHubRunId, gitHubRunAttempt, gitHubRunUrl, gitHubSha, gitHubCommitUrl, gitHubWorkflow, retentionDays, retained file names, byte sizes, and sha256 checksums for each source evidence file. Re-run npm run seo:evidence-manifest-validate after downloading the artifact.

Pass signal
The manifest includes artifactSchemaVersion, a valid generatedAt ISO timestamp, an allowed eventName, the expected gitHubRepository, the expected gitHubServerUrl, direct GitHub run and commit provenance URLs that match gitHubRunId and gitHubSha, a retained gitHubWorkflow and numeric gitHubRunAttempt for Actions runs, sha256 for every retained source evidence file, includes seo-evidence-manifest.json with selfDescribing: true, includes seo-evidence-manifest-validation-result.json with postManifestValidation: true, records the same run SHA as the workflow, and the checksum validator returns ok: true.
Use before
Use before treating the downloaded artifact as the durable proof package for that deployment.

Confirm manifest checksum validation result

seo-evidence-manifest-validation-result.json

Open the retained manifest checksum validation result after downloading the production-seo-evidence artifact.

Pass signal
The validation result has ok: true, generatedAtRetained: true, gitHubProvenanceConsistent: true, gitHubRepositoryRetained: true, gitHubServerUrlRetained: true, gitHubWorkflowRetained: true, runAttemptRetained: true, checkedFileCount: 19, sha256CheckedCount: 19, manifestFileCount: 21, and manifestValidationResultRetained: true.
Use before
Use before relying on the manifest checksum contract in Search Console retry notes or incident review.

Sitemap freshness evidence

Keep Priority Lastmod Signals Auditable

Priority pages need more than sitemap inclusion. The GSC evidence command now parses sitemap entries and records whether freshness-critical URLs still expose current lastmod coverage before Search Console retry work.

5 watched URLs

Homepage calculator

/

Must remain fresh after result-positioning, trust-copy, or first-viewport calculator updates.

Minimum lastmod
2026-05-30
Evidence
`npm run seo:gsc-evidence` returns lastmodFresh: true for the canonical homepage URL.

SEO monitoring playbook

/seo-monitoring

Must remain fresh after Search Console retry, exception, or evidence-loop changes.

Minimum lastmod
2026-05-30
Evidence
CI artifact `production-seo-evidence` includes the parsed sitemap lastmod for /seo-monitoring.

Methodology page

/methodology

Must remain fresh after methodology, canonical, or tax-data source disclosure changes.

Minimum lastmod
2026-05-30
Evidence
`npm run seo:gsc-evidence` verifies canonical, sitemap inclusion, noindex absence, and lastmodFresh.

Tax-data update playbook

/tax-data-update

Must remain fresh when tax-year update operations or IRS-source review workflows change.

Minimum lastmod
2026-05-30
Evidence
The sitemap entry is parsed directly instead of relying on a broad text match.

2026 tax brackets

/tax-brackets/2026

Must remain fresh after bracket-data, bracket-room, or tax-year reference updates.

Minimum lastmod
2026-05-30
Evidence
Search Console retry work must use the latest passing GSC evidence JSON before manual URL Inspection.

Indexing retry protocol

Retry Search Console Without Chasing Google Backend Errors

Use this protocol after a transient Request indexing failure. The site must pass production evidence checks before GSC retries, and a failed Google submission should not trigger unrelated calculator, sitemap, or YMYL copy changes.

4 controls

Confirm the site before touching GSC

Trigger
Before any manual URL Inspection retry or after a Search Console backend error.
Preflight
Run npm run seo:smoke and npm run seo:gsc-evidence; continue only when canonical, sitemap, noindex, and priority URL status checks pass.
Action
Treat passing evidence as the site-side source of truth and avoid changing calculator, metadata, or sitemap code just because Request indexing failed.
Stop condition
Stop immediately if either command fails and fix the site-side regression first.

Record: Command output, affected URL, timestamp, and the failing field if a command fails.

Use the verified URL-prefix property

Trigger
When inspecting www-host URLs while the domain property remains unverified.
Preflight
Open the verified https://www URL-prefix property and paste the full canonical URL into URL Inspection.
Action
Inspect the live page, note the indexed state, Google-selected canonical, and whether live testing reports the URL can be indexed.
Stop condition
Do not switch to the sc-domain property until DNS verification is complete and visible in Search Console.

Record: Property used, inspected URL, indexed state, live-test result, and canonical result.

Retry indexing once per operations window

Trigger
A materially updated priority URL is still not indexed or shows Discovered - currently not indexed.
Preflight
Confirm the URL is in sitemap.xml, linked internally, returns HTTP 200, and has no noindex signal.
Action
Click Request indexing once. If Google returns a transient submission error, let sitemap discovery continue and schedule the next retry window.
Stop condition
Stop after one failed Request indexing attempt in the same operations window to avoid repeating Google backend failures.

Record: Request indexing response, exact Google error text, retry date, and whether the failure is site-side or Search Console-side.

Escalate only when evidence changes

Trigger
The same URL remains unindexed across repeated review windows.
Preflight
Compare Page indexing report status, sitemap last-read date, internal links, server status, and canonical signals.
Action
Escalate to content depth, internal-linking, or canonical investigation only when Search Console evidence points beyond a transient request-indexing error.
Stop condition
Do not rewrite YMYL calculator copy or tax logic unless query data, compliance review, and tests support a specific content need.

Record: Page indexing trend, affected URL examples, chosen corrective action, test coverage, and follow-up date.

Search Console exception queue

Separate Google Workflow Issues From Site Issues

Record Search Console failures as evidence-backed exceptions before changing production code. If live tests pass and the sitemap is successful, indexing can proceed through normal discovery while retry windows are respected.

3 tracked

Domain property verification

Observed status
The sc-domain property was not verified because Google found only the SPF TXT record and not the Google verification token.
Likely cause
DNS TXT records are incomplete or the verification token was not added as a separate TXT record at the domain provider.
Next action
Continue operating the verified https://www URL-prefix property; fix DNS only when domain-wide reporting is needed.
Retry window
After DNS is edited, wait for propagation before rechecking the sc-domain property.

Evidence to record: Verification method, Google error text, visible TXT records, and provider save timestamp.

Sitemap submission

Observed status
The URL-prefix property accepted /sitemap.xml and reported a successful read on 2026-05-30.
Likely cause
The sitemap is reachable, valid, and tied to the verified canonical host.
Next action
Use the submitted sitemap as the primary discovery surface; review indexed URL count during the daily launch watch.
Retry window
Resubmit only after sitemap URL count or canonical host changes materially.

Evidence to record: Submitted sitemap path, last-read date, status, and discovered URL count.

URL Inspection indexing request

Observed status
The /seo-monitoring live test passed as indexable, but two Request indexing attempts returned Google's transient error.
Likely cause
Search Console request-indexing endpoint or account/session state failed after the live test, not a site crawlability failure.
Next action
Run npm run seo:gsc-evidence, retry once during the next operations window, and if it fails again let sitemap discovery proceed while Page indexing trends are inspected.
Retry window
Wait at least several hours before retrying to avoid repeated request-indexing failures.

Evidence to record: Inspected URL, live-test result, HTTP status, resource loading result, console messages, and request-indexing response.

Query opportunity matrix

Turn Search Console Queries Into Safe Content Work

Use actual GSC queries to choose the next page, result-copy refinement, or internal-link update. Each cluster keeps a review gate so high-intent tax questions do not become personal recommendations.

6 clusters

Core calculator intent

Compliance review gate

User wants an immediate estimate and clear assumptions before reading a guide.

roth conversion calculatorroth ira conversion calculatorroth conversion tax calculator 2026
Target surface
Homepage calculator, /calculators, keyword landing pages
Action
Keep the calculator visible in the first viewport, review title/meta CTR, and route users to methodology after results instead of before calculation.
Review gate
Run SEO smoke and YMYL language guard before changing primary calculator copy.

Bracket room questions

Professional review gate

User is modeling bracket capacity and wants the result translated into a planning range.

how much can i convert without going into the next tax bracketroth conversion tax bracket calculatorconvert to top of bracket
Target surface
Result summary, /tax-brackets/2026, tax bracket rate pages
Action
Use educational bracket-room language, expose tax-year source links, and avoid phrasing that tells the user what amount to convert.
Review gate
Professional review required before adding new bracket formulas or tax-year data.

Hidden tax interaction questions

Professional review gate

User suspects a conversion may affect income-linked taxes, premiums, or credits beyond regular brackets.

roth conversion irmaa impactroth conversion aca subsidyroth conversion social security tax
Target surface
Tax Impact Warnings, IRMAA/ACA/Social Security/NIIT/RMD guides
Action
Prioritize review warnings from inputs, link to deeper educational guides, and do not estimate unsupported external program amounts.
Review gate
New interaction logic needs a dedicated rule engine, source links, and regression tests.

Payment and withholding questions

Compliance review gate

User is comparing how tax payment method changes modeled after-tax value and cash needs.

pay roth conversion tax from iraroth conversion withholding calculatorpay conversion tax with outside funds
Target surface
Tax Payment Method Comparison and /tax-payment-methods pages
Action
Show side-by-side educational scenarios and document penalty or cash-flow review items without choosing for the user.
Review gate
Keep recommendation and optimal-action phrases blocked by the YMYL guard.

State and filing-status questions

Professional review gate

User needs state-rate and filing-status assumptions reflected without expecting full state tax law modeling.

roth conversion state tax calculatorroth conversion married filing jointlyroth conversion tax by state
Target surface
/states, /filing-status, calculator state tax input
Action
Keep state inputs assumption-based, link to state and filing-status pages, and mark exclusions plainly where state rules are not modeled.
Review gate
Professional review required before adding state-specific deductions, credits, or retirement-income exclusions.

Process, forms, and CPA handoff questions

Compliance review gate

User is preparing records, filing review, or advisor conversation after running an estimate.

roth conversion tax formshow to report roth conversionquestions to ask cpa about roth conversion
Target surface
CPA packet, forms guide, timeline guide, CPA questions guide
Action
Turn these queries into handoff checklists, document lists, and review prompts rather than filing instructions for a specific taxpayer.
Review gate
No personalized filing instructions without qualified professional review.

GSC query opportunity record

Convert Query Rows Into Review-Gated Backlog Items

Use docs/search-console-query-opportunity-template.json after a Search Console Performance export or screenshot. Once a reviewer supplies a real query row, run npm run seo:gsc-query-opportunity-draft -- --query "roth conversion irmaa impact" --start 2026-06-01 --end 2026-06-05 --impressions 44 --clicks 2 --ctr 4.5 --position 9.4 --evidence docs/evidence/gsc-query.png --out docs/search-console-query-opportunity-draft.json to draft the safe cluster, intent, target surface, action, and review gate. Then run npm run seo:gsc-query-opportunity-ready -- path/to/query-record.json to list what AI can draft and what still requires a reviewer-supplied GSC query row, metric export, or screenshot. Validate the filled record with npm run seo:gsc-query-opportunity-validate -- path/to/query-record.json before using it for metadata, internal-link, guide-refresh, or professional-review work. Run npm run seo:gsc-query-opportunity-backlog to summarize local query records by status, risk, cluster, and next action before content planning. The record keeps GSC query observations private and prevents keyword data from turning into personal tax advice.

10 fields

recordStatus

Always
Source
Reviewer
Validation
Use docs/search-console-query-opportunity-template.json with recordStatus template before capture, npm run seo:gsc-query-opportunity-import when a GSC Performance CSV export is available, npm run seo:gsc-query-opportunity-draft after a reviewer supplies a single real query row, npm run seo:gsc-query-opportunity-ready to list missing reviewer fields, recorded only after a real GSC query row or screenshot is attached, and npm run seo:gsc-query-opportunity-validate before content work begins.

source

Always
Source
Google Search Console Performance report
Validation
Keep the canonical https://www URL-prefix property, date range, exportedAt when available, and sourceType as gsc_performance_export, gsc_screenshot, or manual_gsc_review.

query

Draft or recorded status
Source
GSC query row
Validation
Copy the observed query exactly enough for review, but do not publish private Search Console exports directly on the site.

metrics

When exported
Source
GSC Performance report
Validation
Record clicks, impressions, CTR, and average position as non-negative numbers or null when the screenshot does not show the metric.

matchedCluster

Recorded status
Source
Query opportunity matrix
Validation
Map the query to an existing safe cluster such as core calculator, bracket room, hidden tax interaction, payment, state, or CPA handoff before choosing a content action. The draft generator can prefill this from the reviewer-supplied query, but the reviewer still confirms it before publication work.

recommendedAction

Recorded status
Source
SEO reviewer
Validation
Use educational actions such as metadata review, internal-link update, guide refresh, or professional-review handoff. Do not use best amount, should convert, guaranteed, absolute-accuracy, optimal conversion, or convert exactly phrasing.

riskLevel

Always
Source
SEO reviewer
Validation
Use low, review, or professional. Use professional when the query implies state-specific rules, new formulas, exact tax planning, or unsupported tax interactions.

reviewGate

Recorded status
Source
Compliance or professional reviewer
Validation
Professional-risk records must explicitly retain professional review before content, calculator logic, tax data, or state-specific modeling changes.

evidence

Recorded status
Source
GSC screenshot or export plus production SEO evidence
Validation
Attach screenshotOrExportPath and, when used for production work, link the latest production SEO evidence run id and commit SHA. If browser control is unavailable, export GSC Performance to CSV and run npm run seo:gsc-query-opportunity-import -- --csv <path> --start YYYY-MM-DD --end YYYY-MM-DD.

decision

Always
Source
Content operations
Validation
Use needs_review, planned, published, deferred, or rejected so query observations become an auditable backlog instead of ad hoc keyword chasing. Run npm run seo:gsc-query-opportunity-import for CSV batches and npm run seo:gsc-query-opportunity-backlog to summarize local query records by status, risk, cluster, and next action before content planning.

Daily Launch Watch

Catch indexing, uptime, analytics, and crawl issues during the first launch window.

daily

Check Google Search Console coverage

Google Search Console

Review indexing status, sitemap fetch state, and newly discovered pages.

Escalation: If valid pages are excluded unexpectedly, inspect canonical tags, robots rules, and sitemap URLs.

Review query impressions and CTR

Google Search Console

Track early impressions for Roth Conversion Calculator, Roth IRA Conversion Calculator, and long-tail pages.

Escalation: If impressions appear but CTR is weak, review title and meta description clarity.

Confirm calculator event flow

GA4

Verify privacy-safe calculator events and page views without sending exact financial inputs.

Escalation: If events disappear, check NEXT_PUBLIC_GA_MEASUREMENT_ID and production consent/privacy settings.

Check health endpoint

Vercel Analytics

Open /api/health and review production status, feature counts, and tax-year metadata.

Escalation: If the endpoint fails, inspect Vercel deployment status and recent release notes.

Weekly SEO Review

Improve crawl depth, content coverage, and performance after initial indexing begins.

weekly

Review Core Web Vitals

PageSpeed Insights

Run production Lighthouse/PageSpeed checks for homepage, calculator hubs, and content hubs.

Escalation: If LCP, INP, or CLS regresses, review recent UI modules and bundle changes.

Audit sitemap coverage

Google Search Console

Compare submitted sitemap URLs with indexed URLs and inspect important missing routes.

Escalation: If route groups are missing, confirm static generation, internal links, and canonical metadata.

Review internal links

Manual crawl

Check that site-index, blog, glossary, state, and tax-reference pages link users back to the calculator.

Escalation: If a cluster is isolated, add a contextual link from a hub page rather than modifying the calculator core.

Publish or refresh long-tail content

Editorial calendar

Add or update educational pages based on GSC query data and user questions.

Escalation: If a topic touches personal tax decisions, keep content educational and route users to professional review.

Monthly Growth Review

Use search data to plan content, technical SEO, and product improvements without changing locked core logic.

monthly

Review page clusters

Google Search Console

Group performance by calculators, blog, glossary, states, tax brackets, basis, and operations pages.

Escalation: If a cluster underperforms, improve hub copy, internal links, and metadata before creating new features.

Inspect crawl stats

Google Search Console

Review crawl requests, response codes, and large changes in crawl behavior.

Escalation: If crawl errors spike, compare against recent release notes and Vercel logs.

Review dependency and tax-data freshness

Release notes

Check dependencies, tax-year labels, methodology notes, and IRS update windows.

Escalation: If tax rules change, route work through a reviewed tax-data update rather than a small content-only release.

Incident Response

Respond quickly when rankings, crawlability, compliance, or production health deteriorates.

incident

Trigger rollback review

Vercel

Compare the incident time with the latest deployment and feature registry entry.

Escalation: If a new module caused the issue, disable or roll back that module before changing unrelated code.

Freeze risky content changes

Release notes

Pause tax-sensitive copy edits until compliance language and source assumptions are reviewed.

Escalation: If AI or calculator pages are involved, verify disclaimer visibility and no-advice boundaries first.

Document recovery evidence

Launch evidence

Record affected URLs, symptoms, action taken, rollback path, and verification output.

Escalation: If the same class of incident repeats, convert the finding into a regression test or launch checklist item.

Tool Coverage

Google Search ConsoleGA4Vercel AnalyticsPageSpeed InsightsManual crawlEditorial calendarRelease notesVercelLaunch evidence

This Roth Conversion Calculator is for educational and illustrative purposes only. It does NOT constitute tax, financial, legal, or investment advice. The calculation results are based on the information you provide and the latest IRS tax rules, which are subject to change. We do not guarantee the accuracy of the results. Please consult a licensed Certified Public Accountant (CPA), financial advisor, or tax professional before making any financial decisions.