{"version":"2026-07-03","name":"Visa Atlas battlecard search experiments","description":"Public experiment contract for turning competitor query battlecards into GSC-measured title, snippet, answer-capsule and internal-link tests without publishing private Search Console exports.","license":"CC BY 4.0","attribution":"Visa Atlas","sourceDatasets":["/api/public/salary-thresholds","/api/public/cost-to-complete","/api/public/visas","/api/public/citation-packs","/api/public/source-transparency-benchmark","/api/public/citation-benchmark","/api/public/visibility-metrics","/api/public/content-opportunities","/api/public/answer-capsules","/api/public/calculator-verdict-contexts","/api/public/publisher-citation-kits","/api/public/external-repository-mirrors","/api/public/competitor-query-battlecards","/api/public/policy-claims","/api/public/fees","/api/public/processing-times","/api/public/express-entry-draws","/api/public/express-entry-categories","/api/public/policy-updates","/api/public/fact-changes","/api/public/freshness"],"methodology":{"battlecardsVersion":"2026-07-05","visibilityMetricsVersion":"2026-07-03","sourceOfTruth":"Rows are derived from public competitor query battlecards and the SEO/GEO visibility measurement contract; private GSC exports are processed locally by command.","privateDataPolicy":"Search Console exports, raw queries, click counts and page-level performance rows must stay local and must not be committed or published through this public endpoint.","caveats":["This public dataset defines experiment templates and matching rules; it does not publish live Search Console performance.","Experiment outcomes require a user-supplied GSC export with declared period, property label and search type, plus a reviewed aggregate outcome row before any win, loss or ship decision is published.","The dataset is not a guarantee of rankings, traffic, CTR, AI citations or market share."]},"summary":{"count":13,"readyForGscExportCount":13,"highPriorityCount":10,"sourceDatasetCount":21},"experiments":[{"id":"germany-blue-card-salary-recognition-gsc-experiment","battlecardId":"germany-blue-card-salary-recognition","title":"Germany EU Blue Card salary and recognition search experiment","status":"ready-for-gsc-export","priority":"high","queryCluster":["Germany EU Blue Card minimum salary 2026","EU Blue Card Germany shortage occupation salary","Anabin ZAB Germany skilled worker visa"],"targetPages":["/salary-thresholds/germany","/cost-to-complete/germany-eu-blue-card","/routes/eu-blue-card-vs-chancenkarte-germany","/germany-qualification-recognition","/visas/germany/eu-blue-card","/visas/germany/chancenkarte","/settlement/germany","/calculators/germany-settlement"],"sourceDatasets":["/api/public/salary-thresholds","/api/public/cost-to-complete","/api/public/visas","/api/public/citation-packs","/api/public/source-transparency-benchmark","/api/public/citation-benchmark","/api/public/visibility-metrics","/api/public/content-opportunities","/api/public/answer-capsules","/api/public/calculator-verdict-contexts","/api/public/publisher-citation-kits","/api/public/external-repository-mirrors","/api/public/competitor-query-battlecards"],"experimentTypes":["title-snippet","answer-capsule","internal-linking","ai-citation"],"hypothesis":"Germany Blue Card queries should earn more clicks and AI citations when the snippet promises salary, shortage split and recognition branch in one answer.","plannedChanges":{"titleSnippet":"Lead with the current Germany EU Blue Card salary floor plus Anabin/ZAB recognition branch and source date.","answerCapsule":"Add a first-screen answer capsule that separates salary floor, shortage occupation, recognition proof and cost-to-complete links.","internalLinks":["/salary-thresholds/germany","/cost-to-complete/germany-eu-blue-card","/routes/eu-blue-card-vs-chancenkarte-germany","/germany-qualification-recognition","/visas/germany/eu-blue-card","/visas/germany/chancenkarte","/settlement/germany","/calculators/germany-settlement"],"structuredData":"Keep Dataset, Article and ItemList markup aligned with salary thresholds, recognition decision-tree and cost datasets.","noCreateRule":"Do not create a new page from one query unless a canonical source-backed page, citation pack or dataset row can support it."},"gscQueryRules":{"includeAny":["eu blue card","blue card germany","anabin","zab","recognition","shortage occupation salary"],"excludeAny":["job vacancies","recruitment agency","sponsorship jobs"],"minImpressions":100,"minCtrGap":0.02,"strikingDistancePosition":{"min":5,"max":20}},"measurement":{"baselineWindowDays":28,"comparisonWindowDays":28,"primaryKpis":["organic CTR gap","average position movement","query-page impressions","AI citation share"],"commands":["npm run seo:gsc-battlecard-experiments -- gsc-queries.csv --json --period-start=YYYY-MM-DD --period-end=YYYY-MM-DD --property-label=gsc-domain-redacted --search-type=web","npm run seo:gsc-opportunities -- gsc-queries.csv --json --period-start=YYYY-MM-DD --period-end=YYYY-MM-DD --property-label=gsc-domain-redacted --search-type=web","npm run seo:gsc-experiment-outcomes -- gsc-experiment-outcomes.jsonl --json","npm run kpi:citation-share","npm run audit:rendered-seo","npm run audit:answer-capsules","npm run audit:mcp","npm run audit:source-transparency"],"decisionRules":["Prioritise title/snippet tests when a matching query has at least the minimum impressions and CTR trails the position-based expected CTR by 2 percentage points or more.","Prioritise internal links when a matching query/page sits in positions 5-20 and the target page already has a source-backed answer section.","Prioritise answer-capsule work when impressions exist but the current page cannot answer the query in the first screen with dated source evidence.","Log baseline and comparison windows separately with the same GSC property label and search type; do not call an experiment successful from impressions alone.","Publish outcome claims only from reviewed aggregate rows that pass npm run seo:gsc-experiment-outcomes."]},"auditTrail":["Public experiment rows contain query-matching rules and measurement methods, not private Search Console exports.","Every planned change must preserve source-backed answer blocks and pass rendered SEO/GEO audits before release.","This experiment contract is planning evidence, not a guarantee of rankings, traffic, CTR or AI citations."]},{"id":"germany-chancenkarte-points-cost-gsc-experiment","battlecardId":"germany-chancenkarte-points-cost","title":"Germany Chancenkarte points, proof of funds and cost search experiment","status":"ready-for-gsc-export","priority":"high","queryCluster":["Germany Chancenkarte points calculator 2026","Germany Opportunity Card blocked account amount","Germany Chancenkarte cost proof of funds"],"targetPages":["/calculators/germany-chancenkarte","/visas/germany/chancenkarte","/routes/eu-blue-card-vs-chancenkarte-germany","/cost-to-complete/germany-chancenkarte"],"sourceDatasets":["/api/public/visas","/api/public/cost-to-complete","/api/public/source-transparency-benchmark","/api/public/citation-benchmark","/api/public/visibility-metrics","/api/public/content-opportunities","/api/public/answer-capsules","/api/public/citation-packs","/api/public/calculator-verdict-contexts","/api/public/publisher-citation-kits","/api/public/external-repository-mirrors","/api/public/competitor-query-battlecards"],"experimentTypes":["title-snippet","answer-capsule","internal-linking","ai-citation"],"hypothesis":"Germany Chancenkarte queries should improve when the first answer joins points threshold, blocked-account funding, paid fees and conversion caveats.","plannedChanges":{"titleSnippet":"Lead with Germany Chancenkarte points threshold, blocked-account amount and source date instead of generic job-search visa copy.","answerCapsule":"Render a compact Chancenkarte answer with points categories, blocked-account funding exposure, paid fees, conversion caveat and official source links.","internalLinks":["/calculators/germany-chancenkarte","/visas/germany/chancenkarte","/routes/eu-blue-card-vs-chancenkarte-germany","/cost-to-complete/germany-chancenkarte"],"structuredData":"Bind calculator verdict context, cost-to-complete, route data and citation-pack links through Dataset/DataDownload markup.","noCreateRule":"Do not create a new page from one query unless a canonical source-backed page, citation pack or dataset row can support it."},"gscQueryRules":{"includeAny":["chancenkarte","opportunity card","germany points calculator","blocked account","germany job seeker"],"excludeAny":["job vacancies","recruitment agency","sponsorship jobs"],"minImpressions":100,"minCtrGap":0.02,"strikingDistancePosition":{"min":5,"max":20}},"measurement":{"baselineWindowDays":28,"comparisonWindowDays":28,"primaryKpis":["organic CTR gap","average position movement","query-page impressions","AI citation share"],"commands":["npm run seo:gsc-battlecard-experiments -- gsc-queries.csv --json --period-start=YYYY-MM-DD --period-end=YYYY-MM-DD --property-label=gsc-domain-redacted --search-type=web","npm run seo:gsc-opportunities -- gsc-queries.csv --json --period-start=YYYY-MM-DD --period-end=YYYY-MM-DD --property-label=gsc-domain-redacted --search-type=web","npm run seo:gsc-experiment-outcomes -- gsc-experiment-outcomes.jsonl --json","npm run kpi:citation-share","npm run audit:rendered-seo","npm run audit:answer-capsules","npm run audit:mcp","npm run audit:source-transparency"],"decisionRules":["Prioritise title/snippet tests when a matching query has at least the minimum impressions and CTR trails the position-based expected CTR by 2 percentage points or more.","Prioritise internal links when a matching query/page sits in positions 5-20 and the target page already has a source-backed answer section.","Prioritise answer-capsule work when impressions exist but the current page cannot answer the query in the first screen with dated source evidence.","Log baseline and comparison windows separately with the same GSC property label and search type; do not call an experiment successful from impressions alone.","Publish outcome claims only from reviewed aggregate rows that pass npm run seo:gsc-experiment-outcomes."]},"auditTrail":["Public experiment rows contain query-matching rules and measurement methods, not private Search Console exports.","Every planned change must preserve source-backed answer blocks and pass rendered SEO/GEO audits before release.","This experiment contract is planning evidence, not a guarantee of rankings, traffic, CTR or AI citations."]},{"id":"uk-skilled-worker-cost-salary-gsc-experiment","battlecardId":"uk-skilled-worker-cost-salary","title":"UK Skilled Worker cost, IHS and salary floors search experiment","status":"ready-for-gsc-export","priority":"high","queryCluster":["UK Skilled Worker visa cost including IHS","UK Skilled Worker minimum salary 2026","Health and Care Worker IHS exemption"],"targetPages":["/salary-thresholds/uk","/visas/uk/skilled-worker","/calculators/uk-skilled-worker","/cost-to-complete/uk-skilled-worker","/fees/uk/skilled-worker","/calculators/visa-fees","/cost-to-complete/uk-health-and-care-worker","/fees/uk/health-and-care-worker","/visas/uk/health-and-care-worker","/calculators/uk-ilr","/settlement/uk"],"sourceDatasets":["/api/public/salary-thresholds","/api/public/policy-claims","/api/public/cost-to-complete","/api/public/fees","/api/public/visas","/api/public/source-transparency-benchmark","/api/public/citation-benchmark","/api/public/visibility-metrics","/api/public/content-opportunities","/api/public/answer-capsules","/api/public/citation-packs","/api/public/calculator-verdict-contexts","/api/public/publisher-citation-kits","/api/public/external-repository-mirrors","/api/public/competitor-query-battlecards"],"experimentTypes":["title-snippet","answer-capsule","internal-linking","ai-citation"],"hypothesis":"UK Skilled Worker cost and salary queries should improve when the first answer separates IHS, application fee, proof-of-funds and salary floor.","plannedChanges":{"titleSnippet":"Use title/meta language that names full UK Skilled Worker cost, IHS exposure and salary floor instead of headline visa fee only.","answerCapsule":"Expose a compact cost table with IHS, applicant-paid, refundable/show-only, salary-floor and ILR timing fields.","internalLinks":["/salary-thresholds/uk","/visas/uk/skilled-worker","/calculators/uk-skilled-worker","/cost-to-complete/uk-skilled-worker","/fees/uk/skilled-worker","/calculators/visa-fees","/cost-to-complete/uk-health-and-care-worker","/fees/uk/health-and-care-worker"],"structuredData":"Bind the calculator, cost-to-complete, fee and salary datasets through DataDownload and citation-pack links.","noCreateRule":"Do not create a new page from one query unless a canonical source-backed page, citation pack or dataset row can support it."},"gscQueryRules":{"includeAny":["uk skilled worker","skilled worker visa cost","ihs","health and care worker","minimum salary"],"excludeAny":["job vacancies","recruitment agency","sponsorship jobs"],"minImpressions":100,"minCtrGap":0.02,"strikingDistancePosition":{"min":5,"max":20}},"measurement":{"baselineWindowDays":28,"comparisonWindowDays":28,"primaryKpis":["organic CTR gap","average position movement","query-page impressions","AI citation share"],"commands":["npm run seo:gsc-battlecard-experiments -- gsc-queries.csv --json --period-start=YYYY-MM-DD --period-end=YYYY-MM-DD --property-label=gsc-domain-redacted --search-type=web","npm run seo:gsc-opportunities -- gsc-queries.csv --json --period-start=YYYY-MM-DD --period-end=YYYY-MM-DD --property-label=gsc-domain-redacted --search-type=web","npm run seo:gsc-experiment-outcomes -- gsc-experiment-outcomes.jsonl --json","npm run kpi:citation-share","npm run audit:rendered-seo","npm run audit:answer-capsules","npm run audit:mcp","npm run audit:source-transparency"],"decisionRules":["Prioritise title/snippet tests when a matching query has at least the minimum impressions and CTR trails the position-based expected CTR by 2 percentage points or more.","Prioritise internal links when a matching query/page sits in positions 5-20 and the target page already has a source-backed answer section.","Prioritise answer-capsule work when impressions exist but the current page cannot answer the query in the first screen with dated source evidence.","Log baseline and comparison windows separately with the same GSC property label and search type; do not call an experiment successful from impressions alone.","Publish outcome claims only from reviewed aggregate rows that pass npm run seo:gsc-experiment-outcomes."]},"auditTrail":["Public experiment rows contain query-matching rules and measurement methods, not private Search Console exports.","Every planned change must preserve source-backed answer blocks and pass rendered SEO/GEO audits before release.","This experiment contract is planning evidence, not a guarantee of rankings, traffic, CTR or AI citations."]},{"id":"uk-global-talent-eligibility-gsc-experiment","battlecardId":"uk-global-talent-eligibility","title":"UK Global Talent eligibility, endorsement and settlement search experiment","status":"ready-for-gsc-export","priority":"medium","queryCluster":["UK Global Talent visa eligibility","Global Talent endorsement UK tech arts research","UK Global Talent visa settlement 3 years"],"targetPages":["/visas/uk/global-talent","/processing-times/uk/global-talent","/settlement/uk"],"sourceDatasets":["/api/public/visas","/api/public/processing-times","/api/public/source-transparency-benchmark","/api/public/citation-benchmark","/api/public/visibility-metrics","/api/public/content-opportunities","/api/public/answer-capsules","/api/public/citation-packs","/api/public/calculator-verdict-contexts","/api/public/publisher-citation-kits","/api/public/external-repository-mirrors","/api/public/competitor-query-battlecards"],"experimentTypes":["title-snippet","answer-capsule","internal-linking","ai-citation"],"hypothesis":"UK Global Talent queries should improve when the first answer separates endorsement, eligible-prize route, no-sponsor status, processing and settlement caveats.","plannedChanges":{"titleSnippet":"Lead Global Talent pages with endorsement or eligible-prize eligibility, no-sponsor status and settlement caveat.","answerCapsule":"Render a compact Global Talent answer with endorsement route, evidence examples, no sponsor requirement, processing window and 3-or-5-year settlement caveat.","internalLinks":["/visas/uk/global-talent","/processing-times/uk/global-talent","/settlement/uk"],"structuredData":"Bind route, processing-time, settlement and citation-pack data through Dataset/DataDownload links so answer engines can cite the eligibility path.","noCreateRule":"Do not create a new page from one query unless a canonical source-backed page, citation pack or dataset row can support it."},"gscQueryRules":{"includeAny":["global talent","global talent visa","uk endorsement","eligible prize","exceptional talent"],"excludeAny":["job vacancies","recruitment agency","sponsorship jobs"],"minImpressions":100,"minCtrGap":0.02,"strikingDistancePosition":{"min":5,"max":20}},"measurement":{"baselineWindowDays":28,"comparisonWindowDays":28,"primaryKpis":["organic CTR gap","average position movement","query-page impressions","AI citation share"],"commands":["npm run seo:gsc-battlecard-experiments -- gsc-queries.csv --json --period-start=YYYY-MM-DD --period-end=YYYY-MM-DD --property-label=gsc-domain-redacted --search-type=web","npm run seo:gsc-opportunities -- gsc-queries.csv --json --period-start=YYYY-MM-DD --period-end=YYYY-MM-DD --property-label=gsc-domain-redacted --search-type=web","npm run seo:gsc-experiment-outcomes -- gsc-experiment-outcomes.jsonl --json","npm run kpi:citation-share","npm run audit:rendered-seo","npm run audit:answer-capsules","npm run audit:mcp","npm run audit:source-transparency"],"decisionRules":["Prioritise title/snippet tests when a matching query has at least the minimum impressions and CTR trails the position-based expected CTR by 2 percentage points or more.","Prioritise internal links when a matching query/page sits in positions 5-20 and the target page already has a source-backed answer section.","Prioritise answer-capsule work when impressions exist but the current page cannot answer the query in the first screen with dated source evidence.","Log baseline and comparison windows separately with the same GSC property label and search type; do not call an experiment successful from impressions alone.","Publish outcome claims only from reviewed aggregate rows that pass npm run seo:gsc-experiment-outcomes."]},"auditTrail":["Public experiment rows contain query-matching rules and measurement methods, not private Search Console exports.","Every planned change must preserve source-backed answer blocks and pass rendered SEO/GEO audits before release.","This experiment contract is planning evidence, not a guarantee of rankings, traffic, CTR or AI citations."]},{"id":"ireland-critical-skills-salary-cost-gsc-experiment","battlecardId":"ireland-critical-skills-salary-cost","title":"Ireland Critical Skills salary, cost and Stamp 4 path search experiment","status":"ready-for-gsc-export","priority":"high","queryCluster":["Ireland Critical Skills salary threshold 2026","Critical Skills Employment Permit cost Ireland","Ireland Critical Skills Stamp 4 timeline"],"targetPages":["/salary-thresholds/ireland","/cost-to-complete/ireland-critical-skills-employment-permit","/visas/ireland/critical-skills-employment-permit","/calculators/ireland-citizenship","/settlement/ireland"],"sourceDatasets":["/api/public/salary-thresholds","/api/public/cost-to-complete","/api/public/visas","/api/public/source-transparency-benchmark","/api/public/citation-benchmark","/api/public/visibility-metrics","/api/public/content-opportunities","/api/public/answer-capsules","/api/public/citation-packs","/api/public/calculator-verdict-contexts","/api/public/publisher-citation-kits","/api/public/external-repository-mirrors","/api/public/competitor-query-battlecards"],"experimentTypes":["title-snippet","answer-capsule","internal-linking","ai-citation"],"hypothesis":"Ireland Critical Skills salary and Stamp 4 queries should improve when the first answer joins salary threshold, permit cost and post-permit residence timing.","plannedChanges":{"titleSnippet":"Lead with Ireland Critical Skills salary floor, permit cost and Stamp 4 path rather than a generic permit overview.","answerCapsule":"Render a compact Irish Critical Skills answer with salary floor, permit cost, Stamp 4 timing, citizenship caveat and source dates.","internalLinks":["/salary-thresholds/ireland","/cost-to-complete/ireland-critical-skills-employment-permit","/visas/ireland/critical-skills-employment-permit","/calculators/ireland-citizenship","/settlement/ireland"],"structuredData":"Bind Ireland salary thresholds, cost-to-complete and settlement datasets through DataDownload and citation-pack links.","noCreateRule":"Do not create a new page from one query unless a canonical source-backed page, citation pack or dataset row can support it."},"gscQueryRules":{"includeAny":["ireland critical skills","critical skills employment permit","stamp 4","irish citizenship","salary threshold"],"excludeAny":["job vacancies","recruitment agency","sponsorship jobs"],"minImpressions":100,"minCtrGap":0.02,"strikingDistancePosition":{"min":5,"max":20}},"measurement":{"baselineWindowDays":28,"comparisonWindowDays":28,"primaryKpis":["organic CTR gap","average position movement","query-page impressions","AI citation share"],"commands":["npm run seo:gsc-battlecard-experiments -- gsc-queries.csv --json --period-start=YYYY-MM-DD --period-end=YYYY-MM-DD --property-label=gsc-domain-redacted --search-type=web","npm run seo:gsc-opportunities -- gsc-queries.csv --json --period-start=YYYY-MM-DD --period-end=YYYY-MM-DD --property-label=gsc-domain-redacted --search-type=web","npm run seo:gsc-experiment-outcomes -- gsc-experiment-outcomes.jsonl --json","npm run kpi:citation-share","npm run audit:rendered-seo","npm run audit:answer-capsules","npm run audit:mcp","npm run audit:source-transparency"],"decisionRules":["Prioritise title/snippet tests when a matching query has at least the minimum impressions and CTR trails the position-based expected CTR by 2 percentage points or more.","Prioritise internal links when a matching query/page sits in positions 5-20 and the target page already has a source-backed answer section.","Prioritise answer-capsule work when impressions exist but the current page cannot answer the query in the first screen with dated source evidence.","Log baseline and comparison windows separately with the same GSC property label and search type; do not call an experiment successful from impressions alone.","Publish outcome claims only from reviewed aggregate rows that pass npm run seo:gsc-experiment-outcomes."]},"auditTrail":["Public experiment rows contain query-matching rules and measurement methods, not private Search Console exports.","Every planned change must preserve source-backed answer blocks and pass rendered SEO/GEO audits before release.","This experiment contract is planning evidence, not a guarantee of rankings, traffic, CTR or AI citations."]},{"id":"canada-express-entry-freshness-gsc-experiment","battlecardId":"canada-express-entry-freshness","title":"Canada Express Entry latest draw and category freshness search experiment","status":"ready-for-gsc-export","priority":"high","queryCluster":["latest Express Entry draw CRS cutoff","Express Entry category based draws 2026","how many CRS points do I need"],"targetPages":["/research/canada-express-entry-draw-tracker","/citation-packs#express-entry-latest-draw","/widgets","/research/canada-express-entry-category-tracker","/citation-packs#express-entry-categories-2026","/calculators/canada-crs","/visas/canada/express-entry-fsw"],"sourceDatasets":["/api/public/express-entry-draws","/api/public/citation-packs","/api/public/express-entry-categories","/api/public/visas","/api/public/source-transparency-benchmark","/api/public/citation-benchmark","/api/public/visibility-metrics","/api/public/content-opportunities","/api/public/answer-capsules","/api/public/calculator-verdict-contexts","/api/public/publisher-citation-kits","/api/public/external-repository-mirrors","/api/public/competitor-query-battlecards"],"experimentTypes":["title-snippet","answer-capsule","internal-linking","ai-citation"],"hypothesis":"Fresh Express Entry queries should compound when titles and answer blocks foreground latest draw, CRS cutoff, category and no-draw flags.","plannedChanges":{"titleSnippet":"Lead with latest Express Entry draw, CRS cutoff and category status; avoid generic evergreen CRS calculator copy.","answerCapsule":"Render latest draw date, program/category, invitations, CRS and category status above explanatory text.","internalLinks":["/research/canada-express-entry-draw-tracker","/citation-packs#express-entry-latest-draw","/widgets","/research/canada-express-entry-category-tracker","/citation-packs#express-entry-categories-2026","/calculators/canada-crs","/visas/canada/express-entry-fsw"],"structuredData":"Keep Express Entry draws, category tracker, CRS calculator context and latest-draw widget mutually linked.","noCreateRule":"Do not create a new page from one query unless a canonical source-backed page, citation pack or dataset row can support it."},"gscQueryRules":{"includeAny":["express entry","crs cutoff","crs cut off","category based draw","latest draw"],"excludeAny":["job vacancies","recruitment agency","sponsorship jobs"],"minImpressions":100,"minCtrGap":0.02,"strikingDistancePosition":{"min":5,"max":20}},"measurement":{"baselineWindowDays":28,"comparisonWindowDays":28,"primaryKpis":["organic CTR gap","average position movement","query-page impressions","AI citation share"],"commands":["npm run seo:gsc-battlecard-experiments -- gsc-queries.csv --json --period-start=YYYY-MM-DD --period-end=YYYY-MM-DD --property-label=gsc-domain-redacted --search-type=web","npm run seo:gsc-opportunities -- gsc-queries.csv --json --period-start=YYYY-MM-DD --period-end=YYYY-MM-DD --property-label=gsc-domain-redacted --search-type=web","npm run seo:gsc-experiment-outcomes -- gsc-experiment-outcomes.jsonl --json","npm run kpi:citation-share","npm run audit:rendered-seo","npm run audit:answer-capsules","npm run audit:mcp","npm run audit:source-transparency","npm run fetch:ee-draws"],"decisionRules":["Prioritise title/snippet tests when a matching query has at least the minimum impressions and CTR trails the position-based expected CTR by 2 percentage points or more.","Prioritise internal links when a matching query/page sits in positions 5-20 and the target page already has a source-backed answer section.","Prioritise answer-capsule work when impressions exist but the current page cannot answer the query in the first screen with dated source evidence.","Log baseline and comparison windows separately with the same GSC property label and search type; do not call an experiment successful from impressions alone.","Publish outcome claims only from reviewed aggregate rows that pass npm run seo:gsc-experiment-outcomes."]},"auditTrail":["Public experiment rows contain query-matching rules and measurement methods, not private Search Console exports.","Every planned change must preserve source-backed answer blocks and pass rendered SEO/GEO audits before release.","This experiment contract is planning evidence, not a guarantee of rankings, traffic, CTR or AI citations."]},{"id":"canada-skilled-cost-proof-funds-gsc-experiment","battlecardId":"canada-skilled-cost-proof-funds","title":"Canada FSW, CEC and PNP cost and proof-of-funds search experiment","status":"ready-for-gsc-export","priority":"high","queryCluster":["Canada Express Entry FSW proof of funds cost","CEC vs FSW proof of funds","Canada PNP application cost"],"targetPages":["/cost-to-complete/canada-express-entry-fsw","/fees/canada/express-entry-fsw","/visas/canada/express-entry-fsw","/cost-to-complete/canada-express-entry-cec","/visas/canada/express-entry-cec","/cost-to-complete/canada-express-entry-pnp","/fees/canada/pnp","/visas/canada/pnp"],"sourceDatasets":["/api/public/cost-to-complete","/api/public/fees","/api/public/visas","/api/public/source-transparency-benchmark","/api/public/citation-benchmark","/api/public/visibility-metrics","/api/public/content-opportunities","/api/public/answer-capsules","/api/public/citation-packs","/api/public/calculator-verdict-contexts","/api/public/publisher-citation-kits","/api/public/external-repository-mirrors","/api/public/competitor-query-battlecards"],"experimentTypes":["title-snippet","answer-capsule","internal-linking","ai-citation"],"hypothesis":"Canada FSW, CEC and PNP cost queries should improve when paid fees, proof-of-funds rules and province-fee caveats are separated above the fold.","plannedChanges":{"titleSnippet":"Lead Canada economic-migration cost pages with paid fees versus proof-of-funds exposure and route-specific caveats.","answerCapsule":"Render a route table for FSW, CEC and PNP with paid fees, proof-of-funds rule, province-fee caveat and source dates.","internalLinks":["/cost-to-complete/canada-express-entry-fsw","/fees/canada/express-entry-fsw","/visas/canada/express-entry-fsw","/cost-to-complete/canada-express-entry-cec","/visas/canada/express-entry-cec","/cost-to-complete/canada-express-entry-pnp","/fees/canada/pnp","/visas/canada/pnp"],"structuredData":"Bind fee, cost-to-complete, route and citation-pack data through DataDownload links so answer engines can cite the distinction.","noCreateRule":"Do not create a new page from one query unless a canonical source-backed page, citation pack or dataset row can support it."},"gscQueryRules":{"includeAny":["fsw cost","federal skilled worker cost","proof of funds","cec vs fsw","pnp cost"],"excludeAny":["job vacancies","recruitment agency","sponsorship jobs"],"minImpressions":100,"minCtrGap":0.02,"strikingDistancePosition":{"min":5,"max":20}},"measurement":{"baselineWindowDays":28,"comparisonWindowDays":28,"primaryKpis":["organic CTR gap","average position movement","query-page impressions","AI citation share"],"commands":["npm run seo:gsc-battlecard-experiments -- gsc-queries.csv --json --period-start=YYYY-MM-DD --period-end=YYYY-MM-DD --property-label=gsc-domain-redacted --search-type=web","npm run seo:gsc-opportunities -- gsc-queries.csv --json --period-start=YYYY-MM-DD --period-end=YYYY-MM-DD --property-label=gsc-domain-redacted --search-type=web","npm run seo:gsc-experiment-outcomes -- gsc-experiment-outcomes.jsonl --json","npm run kpi:citation-share","npm run audit:rendered-seo","npm run audit:answer-capsules","npm run audit:mcp","npm run audit:source-transparency"],"decisionRules":["Prioritise title/snippet tests when a matching query has at least the minimum impressions and CTR trails the position-based expected CTR by 2 percentage points or more.","Prioritise internal links when a matching query/page sits in positions 5-20 and the target page already has a source-backed answer section.","Prioritise answer-capsule work when impressions exist but the current page cannot answer the query in the first screen with dated source evidence.","Log baseline and comparison windows separately with the same GSC property label and search type; do not call an experiment successful from impressions alone.","Publish outcome claims only from reviewed aggregate rows that pass npm run seo:gsc-experiment-outcomes."]},"auditTrail":["Public experiment rows contain query-matching rules and measurement methods, not private Search Console exports.","Every planned change must preserve source-backed answer blocks and pass rendered SEO/GEO audits before release.","This experiment contract is planning evidence, not a guarantee of rankings, traffic, CTR or AI citations."]},{"id":"policy-change-freshness-control-gsc-experiment","battlecardId":"policy-change-freshness-control","title":"Immigration rule-change and source-freshness control search experiment","status":"ready-for-gsc-export","priority":"high","queryCluster":["major immigration rule changes 2026 skilled migrants","immigration source freshness visa data","visa rule changes current source dates"],"targetPages":["/research/immigration-rule-changes-2026","/policy-updates","/changelog","/freshness","/methodology"],"sourceDatasets":["/api/public/policy-updates","/api/public/fact-changes","/api/public/policy-claims","/api/public/freshness","/api/public/source-transparency-benchmark","/api/public/citation-benchmark","/api/public/visibility-metrics","/api/public/content-opportunities","/api/public/answer-capsules","/api/public/citation-packs","/api/public/calculator-verdict-contexts","/api/public/publisher-citation-kits","/api/public/external-repository-mirrors","/api/public/competitor-query-battlecards"],"experimentTypes":["title-snippet","answer-capsule","internal-linking","ai-citation"],"hypothesis":"Volatile immigration rule-change queries should earn more citations when the page exposes dated change status and the source-freshness SLA together.","plannedChanges":{"titleSnippet":"Lead rule-change pages with dated significant changes, in-force/scheduled status and source freshness rather than undated update copy.","answerCapsule":"Render the latest major changes beside checked-record, stale-record and source-date freshness facts.","internalLinks":["/research/immigration-rule-changes-2026","/policy-updates","/changelog","/freshness","/methodology"],"structuredData":"Bind policy updates, fact changes, policy claims and freshness datasets through Dataset/DataDownload markup.","noCreateRule":"Do not create a new page from one query unless a canonical source-backed page, citation pack or dataset row can support it."},"gscQueryRules":{"includeAny":["immigration rule changes","visa rule changes","policy updates","source freshness","visa data current"],"excludeAny":["job vacancies","recruitment agency","sponsorship jobs"],"minImpressions":100,"minCtrGap":0.02,"strikingDistancePosition":{"min":5,"max":20}},"measurement":{"baselineWindowDays":28,"comparisonWindowDays":28,"primaryKpis":["organic CTR gap","average position movement","query-page impressions","AI citation share"],"commands":["npm run seo:gsc-battlecard-experiments -- gsc-queries.csv --json --period-start=YYYY-MM-DD --period-end=YYYY-MM-DD --property-label=gsc-domain-redacted --search-type=web","npm run seo:gsc-opportunities -- gsc-queries.csv --json --period-start=YYYY-MM-DD --period-end=YYYY-MM-DD --property-label=gsc-domain-redacted --search-type=web","npm run seo:gsc-experiment-outcomes -- gsc-experiment-outcomes.jsonl --json","npm run kpi:citation-share","npm run audit:rendered-seo","npm run audit:answer-capsules","npm run audit:mcp","npm run audit:source-transparency"],"decisionRules":["Prioritise title/snippet tests when a matching query has at least the minimum impressions and CTR trails the position-based expected CTR by 2 percentage points or more.","Prioritise internal links when a matching query/page sits in positions 5-20 and the target page already has a source-backed answer section.","Prioritise answer-capsule work when impressions exist but the current page cannot answer the query in the first screen with dated source evidence.","Log baseline and comparison windows separately with the same GSC property label and search type; do not call an experiment successful from impressions alone.","Publish outcome claims only from reviewed aggregate rows that pass npm run seo:gsc-experiment-outcomes."]},"auditTrail":["Public experiment rows contain query-matching rules and measurement methods, not private Search Console exports.","Every planned change must preserve source-backed answer blocks and pass rendered SEO/GEO audits before release.","This experiment contract is planning evidence, not a guarantee of rankings, traffic, CTR or AI citations."]},{"id":"australia-skilled-points-costs-gsc-experiment","battlecardId":"australia-skilled-points-costs","title":"Points-tested and sponsored skilled route costs search experiment","status":"ready-for-gsc-export","priority":"high","queryCluster":["Australia subclass 189 points test","Australia Skills in Demand visa cost 2026","Australia 190 vs 491 skilled visa difference","Singapore S Pass levy medical insurance cost","New Zealand Accredited Employer Work Visa cost","Austria Red-White-Red Card points cost"],"targetPages":["/calculators/australia-189","/cost-to-complete/australia-189-skilled-independent","/visas/australia/subclass-189-skilled-independent","/cost-to-complete/australia-subclass-482-skills-in-demand","/fees/australia/subclass-482-tss","/salary-thresholds/australia","/cost-to-complete/australia-subclass-186-employer-nomination-scheme","/fees/australia/subclass-186-ens","/cost-to-complete/australia-190-skilled-nominated","/cost-to-complete/australia-491-skilled-work-regional-provisional","/cost-to-complete/singapore-s-pass","/fees/singapore/s-pass","/visas/singapore/s-pass","/cost-to-complete/new-zealand-accredited-employer-work-visa","/fees/new-zealand/accredited-employer-work-visa","/visas/new-zealand/accredited-employer-work-visa","/cost-to-complete/new-zealand-skilled-migrant-category","/visas/new-zealand/skilled-migrant-category","/salary-thresholds/new-zealand","/calculators/austria-rwr","/cost-to-complete/austria-red-white-red-card","/visas/austria/red-white-red-card","/fees/austria/red-white-red-card","/salary-thresholds/austria"],"sourceDatasets":["/api/public/visas","/api/public/cost-to-complete","/api/public/fees","/api/public/salary-thresholds","/api/public/source-transparency-benchmark","/api/public/citation-benchmark","/api/public/visibility-metrics","/api/public/content-opportunities","/api/public/answer-capsules","/api/public/citation-packs","/api/public/calculator-verdict-contexts","/api/public/publisher-citation-kits","/api/public/external-repository-mirrors","/api/public/competitor-query-battlecards"],"experimentTypes":["title-snippet","answer-capsule","internal-linking"],"hypothesis":"Points-tested and sponsored skilled-route queries should perform better when points, sponsorship, levy, invitation-stage and cost evidence are compared together.","plannedChanges":{"titleSnippet":"Title pages around route choice: points route versus employer route, including skills assessment, levy, invitation-stage and nomination cost evidence.","answerCapsule":"Add a route-choice table that distinguishes points routes from employer sponsorship, levy exposure, invitation-stage residence fees and mandatory paid costs.","internalLinks":["/calculators/australia-189","/cost-to-complete/australia-189-skilled-independent","/visas/australia/subclass-189-skilled-independent","/cost-to-complete/australia-subclass-482-skills-in-demand","/fees/australia/subclass-482-tss","/salary-thresholds/australia","/cost-to-complete/australia-subclass-186-employer-nomination-scheme","/fees/australia/subclass-186-ens"],"structuredData":"Use route comparison ItemList markup and cite calculator, fee and cost-to-complete rows for skills assessment, nomination, levy and invitation-stage exposure.","noCreateRule":"Do not create a new page from one query unless a canonical source-backed page, citation pack or dataset row can support it."},"gscQueryRules":{"includeAny":["subclass 189","australia points test","skills in demand","subclass 482","190 vs 491","s pass cost","singapore s pass","accredited employer work visa cost","new zealand skilled migrant cost","red-white-red card","austria rwr"],"excludeAny":["job vacancies","recruitment agency","sponsorship jobs"],"minImpressions":100,"minCtrGap":0.02,"strikingDistancePosition":{"min":5,"max":20}},"measurement":{"baselineWindowDays":28,"comparisonWindowDays":28,"primaryKpis":["organic CTR gap","average position movement","query-page impressions","AI citation share"],"commands":["npm run seo:gsc-battlecard-experiments -- gsc-queries.csv --json --period-start=YYYY-MM-DD --period-end=YYYY-MM-DD --property-label=gsc-domain-redacted --search-type=web","npm run seo:gsc-opportunities -- gsc-queries.csv --json --period-start=YYYY-MM-DD --period-end=YYYY-MM-DD --property-label=gsc-domain-redacted --search-type=web","npm run seo:gsc-experiment-outcomes -- gsc-experiment-outcomes.jsonl --json","npm run kpi:citation-share","npm run audit:rendered-seo","npm run audit:answer-capsules","npm run audit:mcp","npm run audit:source-transparency"],"decisionRules":["Prioritise title/snippet tests when a matching query has at least the minimum impressions and CTR trails the position-based expected CTR by 2 percentage points or more.","Prioritise internal links when a matching query/page sits in positions 5-20 and the target page already has a source-backed answer section.","Prioritise answer-capsule work when impressions exist but the current page cannot answer the query in the first screen with dated source evidence.","Log baseline and comparison windows separately with the same GSC property label and search type; do not call an experiment successful from impressions alone.","Publish outcome claims only from reviewed aggregate rows that pass npm run seo:gsc-experiment-outcomes."]},"auditTrail":["Public experiment rows contain query-matching rules and measurement methods, not private Search Console exports.","Every planned change must preserve source-backed answer blocks and pass rendered SEO/GEO audits before release.","This experiment contract is planning evidence, not a guarantee of rankings, traffic, CTR or AI citations."]},{"id":"global-cheapest-fastest-no-sponsor-gsc-experiment","battlecardId":"global-cheapest-fastest-no-sponsor","title":"Global cheapest, fastest and no-sponsor skilled migration rankings search experiment","status":"ready-for-gsc-export","priority":"high","queryCluster":["cheapest skilled work visas","skilled migration processing times 2026","fastest countries for permanent residence","work visas without employer sponsor"],"targetPages":["/research/skilled-migration-cost-index-2026","/figures","/rankings/cheapest-work-visas","/research/how-long-skilled-migration-takes-2026","/processing-times","/rankings/fastest-to-settlement","/settlement","/calculators/germany-settlement","/rankings/no-sponsor-needed","/best/best-work-visas-no-sponsor","/visas/category/work-unsponsored"],"sourceDatasets":["/api/public/cost-to-complete","/api/public/citation-packs","/api/public/processing-times","/api/public/freshness","/api/public/visas","/api/public/source-transparency-benchmark","/api/public/citation-benchmark","/api/public/visibility-metrics","/api/public/content-opportunities","/api/public/answer-capsules","/api/public/calculator-verdict-contexts","/api/public/publisher-citation-kits","/api/public/external-repository-mirrors","/api/public/competitor-query-battlecards"],"experimentTypes":["title-snippet","answer-capsule","internal-linking","ai-citation"],"hypothesis":"Ranking and processing-time queries should win trust when snippets state the method, sponsor flag, processing window and cost/settlement basis rather than subjective best-country language.","plannedChanges":{"titleSnippet":"Use methodology-led titles for cheapest, processing-time, fastest-settlement and no-sponsor rankings with route count and source date.","answerCapsule":"Put the ranking method, sponsor flag, processing window, settlement clock and mandatory sunk cost above the ranked list.","internalLinks":["/research/skilled-migration-cost-index-2026","/figures","/rankings/cheapest-work-visas","/research/how-long-skilled-migration-takes-2026","/processing-times","/rankings/fastest-to-settlement","/settlement","/calculators/germany-settlement"],"structuredData":"Keep ItemList and Dataset markup tied to source-linked route, processing-time, settlement and cost records.","noCreateRule":"Do not create a new page from one query unless a canonical source-backed page, citation pack or dataset row can support it."},"gscQueryRules":{"includeAny":["cheapest work visa","processing time","how long skilled migration takes","fastest permanent residence","no sponsor work visa","without employer sponsor"],"excludeAny":["job vacancies","recruitment agency","sponsorship jobs"],"minImpressions":100,"minCtrGap":0.02,"strikingDistancePosition":{"min":5,"max":20}},"measurement":{"baselineWindowDays":28,"comparisonWindowDays":28,"primaryKpis":["organic CTR gap","average position movement","query-page impressions","AI citation share"],"commands":["npm run seo:gsc-battlecard-experiments -- gsc-queries.csv --json --period-start=YYYY-MM-DD --period-end=YYYY-MM-DD --property-label=gsc-domain-redacted --search-type=web","npm run seo:gsc-opportunities -- gsc-queries.csv --json --period-start=YYYY-MM-DD --period-end=YYYY-MM-DD --property-label=gsc-domain-redacted --search-type=web","npm run seo:gsc-experiment-outcomes -- gsc-experiment-outcomes.jsonl --json","npm run kpi:citation-share","npm run audit:rendered-seo","npm run audit:answer-capsules","npm run audit:mcp","npm run audit:source-transparency"],"decisionRules":["Prioritise title/snippet tests when a matching query has at least the minimum impressions and CTR trails the position-based expected CTR by 2 percentage points or more.","Prioritise internal links when a matching query/page sits in positions 5-20 and the target page already has a source-backed answer section.","Prioritise answer-capsule work when impressions exist but the current page cannot answer the query in the first screen with dated source evidence.","Log baseline and comparison windows separately with the same GSC property label and search type; do not call an experiment successful from impressions alone.","Publish outcome claims only from reviewed aggregate rows that pass npm run seo:gsc-experiment-outcomes."]},"auditTrail":["Public experiment rows contain query-matching rules and measurement methods, not private Search Console exports.","Every planned change must preserve source-backed answer blocks and pass rendered SEO/GEO audits before release.","This experiment contract is planning evidence, not a guarantee of rankings, traffic, CTR or AI citations."]},{"id":"salary-floors-cross-country-gsc-experiment","battlecardId":"salary-floors-cross-country","title":"Cross-country skilled salary floor comparisons search experiment","status":"ready-for-gsc-export","priority":"medium","queryCluster":["highest skilled migration salary floors 2026","Singapore Employment Pass salary","Netherlands highly skilled migrant salary 2026","Netherlands highly skilled migrant cost 2026","France Talent Passport salary requirement 2026","Norway skilled worker salary requirement","Finland specialist permit salary threshold"],"targetPages":["/research/skilled-migration-salary-floors-2026","/salary-thresholds","/figures","/salary-thresholds/singapore","/cost-to-complete/singapore-employment-pass","/visas/singapore/employment-pass","/salary-thresholds/netherlands","/cost-to-complete/netherlands-highly-skilled-migrant","/visas/netherlands/highly-skilled-migrant","/salary-thresholds/denmark","/cost-to-complete/denmark-pay-limit-scheme","/visas/denmark/pay-limit-scheme","/salary-thresholds/sweden","/cost-to-complete/sweden-work-permit","/visas/sweden/work-permit-sweden","/salary-thresholds/france","/cost-to-complete/france-talent-passport-salaried","/visas/france/talent-passport-salaried","/salary-thresholds/norway","/cost-to-complete/norway-skilled-worker-permit","/visas/norway/skilled-worker-permit","/salary-thresholds/finland","/cost-to-complete/finland-residence-permit-specialist","/visas/finland/residence-permit-specialist"],"sourceDatasets":["/api/public/salary-thresholds","/api/public/freshness","/api/public/cost-to-complete","/api/public/source-transparency-benchmark","/api/public/citation-benchmark","/api/public/visibility-metrics","/api/public/content-opportunities","/api/public/answer-capsules","/api/public/citation-packs","/api/public/calculator-verdict-contexts","/api/public/publisher-citation-kits","/api/public/external-repository-mirrors","/api/public/competitor-query-battlecards"],"experimentTypes":["title-snippet","answer-capsule","internal-linking","ai-citation"],"hypothesis":"Cross-country salary-floor and route-cost queries should improve when local-currency amounts, paid costs, route basis and effective dates are visible in snippet range.","plannedChanges":{"titleSnippet":"Lead salary pages with local-currency floor, paid cost distinction, route basis, permit type and effective date instead of broad salary-guide wording.","answerCapsule":"Expose a comparison table with country, route, local salary amount, mandatory paid costs, basis, effective date, permit caveat and source.","internalLinks":["/research/skilled-migration-salary-floors-2026","/salary-thresholds","/figures","/salary-thresholds/singapore","/cost-to-complete/singapore-employment-pass","/visas/singapore/employment-pass","/salary-thresholds/netherlands","/cost-to-complete/netherlands-highly-skilled-migrant"],"structuredData":"Use Dataset markup and profession-page answer capsules that point back to salary-threshold and cost-to-complete records.","noCreateRule":"Do not create a new page from one query unless a canonical source-backed page, citation pack or dataset row can support it."},"gscQueryRules":{"includeAny":["salary floor","salary threshold","employment pass salary","highly skilled migrant salary","highly skilled migrant cost","netherlands hsm cost","talent passport salary","norway skilled worker salary","finland specialist salary","pay limit salary"],"excludeAny":["job vacancies","recruitment agency","sponsorship jobs"],"minImpressions":100,"minCtrGap":0.02,"strikingDistancePosition":{"min":5,"max":20}},"measurement":{"baselineWindowDays":28,"comparisonWindowDays":28,"primaryKpis":["organic CTR gap","average position movement","query-page impressions","AI citation share"],"commands":["npm run seo:gsc-battlecard-experiments -- gsc-queries.csv --json --period-start=YYYY-MM-DD --period-end=YYYY-MM-DD --property-label=gsc-domain-redacted --search-type=web","npm run seo:gsc-opportunities -- gsc-queries.csv --json --period-start=YYYY-MM-DD --period-end=YYYY-MM-DD --property-label=gsc-domain-redacted --search-type=web","npm run seo:gsc-experiment-outcomes -- gsc-experiment-outcomes.jsonl --json","npm run kpi:citation-share","npm run audit:rendered-seo","npm run audit:answer-capsules","npm run audit:mcp","npm run audit:source-transparency"],"decisionRules":["Prioritise title/snippet tests when a matching query has at least the minimum impressions and CTR trails the position-based expected CTR by 2 percentage points or more.","Prioritise internal links when a matching query/page sits in positions 5-20 and the target page already has a source-backed answer section.","Prioritise answer-capsule work when impressions exist but the current page cannot answer the query in the first screen with dated source evidence.","Log baseline and comparison windows separately with the same GSC property label and search type; do not call an experiment successful from impressions alone.","Publish outcome claims only from reviewed aggregate rows that pass npm run seo:gsc-experiment-outcomes."]},"auditTrail":["Public experiment rows contain query-matching rules and measurement methods, not private Search Console exports.","Every planned change must preserve source-backed answer blocks and pass rendered SEO/GEO audits before release.","This experiment contract is planning evidence, not a guarantee of rankings, traffic, CTR or AI citations."]},{"id":"digital-nomad-europe-costs-gsc-experiment","battlecardId":"digital-nomad-europe-costs","title":"Europe digital nomad route costs and income evidence search experiment","status":"ready-for-gsc-export","priority":"medium","queryCluster":["best European digital nomad visas 2026","Portugal D8 visa cost income requirement","Spain digital nomad visa cost income requirement"],"targetPages":["/best/best-digital-nomad-visas-2026","/routes/digital-nomad-visas-europe-2026","/rankings/digital-nomad-comparison","/cost-to-complete/portugal-d8-digital-nomad","/cost-to-complete/spain-digital-nomad-visa"],"sourceDatasets":["/api/public/visas","/api/public/cost-to-complete","/api/public/source-transparency-benchmark","/api/public/citation-benchmark","/api/public/visibility-metrics","/api/public/content-opportunities","/api/public/answer-capsules","/api/public/citation-packs","/api/public/calculator-verdict-contexts","/api/public/publisher-citation-kits","/api/public/external-repository-mirrors","/api/public/competitor-query-battlecards"],"experimentTypes":["title-snippet","answer-capsule","internal-linking"],"hypothesis":"Digital nomad comparison queries should gain trust when income, first-year cost, family scaling and renewal caveats appear before editorial ranking language.","plannedChanges":{"titleSnippet":"Position digital nomad pages around income evidence and first-year cost, not generic best-country claims.","answerCapsule":"Add a route matrix for income requirement, first-year sunk cost, family uplift, renewal path and settlement caveat.","internalLinks":["/best/best-digital-nomad-visas-2026","/routes/digital-nomad-visas-europe-2026","/rankings/digital-nomad-comparison","/cost-to-complete/portugal-d8-digital-nomad","/cost-to-complete/spain-digital-nomad-visa"],"structuredData":"Tie comparison pages to cost-to-complete and visa route datasets with reusable DataDownload links.","noCreateRule":"Do not create a new page from one query unless a canonical source-backed page, citation pack or dataset row can support it."},"gscQueryRules":{"includeAny":["digital nomad visa","portugal d8","spain digital nomad","europe digital nomad"],"excludeAny":["job vacancies","recruitment agency","sponsorship jobs"],"minImpressions":100,"minCtrGap":0.02,"strikingDistancePosition":{"min":5,"max":20}},"measurement":{"baselineWindowDays":28,"comparisonWindowDays":28,"primaryKpis":["organic CTR gap","average position movement","query-page impressions","AI citation share"],"commands":["npm run seo:gsc-battlecard-experiments -- gsc-queries.csv --json --period-start=YYYY-MM-DD --period-end=YYYY-MM-DD --property-label=gsc-domain-redacted --search-type=web","npm run seo:gsc-opportunities -- gsc-queries.csv --json --period-start=YYYY-MM-DD --period-end=YYYY-MM-DD --property-label=gsc-domain-redacted --search-type=web","npm run seo:gsc-experiment-outcomes -- gsc-experiment-outcomes.jsonl --json","npm run kpi:citation-share","npm run audit:rendered-seo","npm run audit:answer-capsules","npm run audit:mcp","npm run audit:source-transparency"],"decisionRules":["Prioritise title/snippet tests when a matching query has at least the minimum impressions and CTR trails the position-based expected CTR by 2 percentage points or more.","Prioritise internal links when a matching query/page sits in positions 5-20 and the target page already has a source-backed answer section.","Prioritise answer-capsule work when impressions exist but the current page cannot answer the query in the first screen with dated source evidence.","Log baseline and comparison windows separately with the same GSC property label and search type; do not call an experiment successful from impressions alone.","Publish outcome claims only from reviewed aggregate rows that pass npm run seo:gsc-experiment-outcomes."]},"auditTrail":["Public experiment rows contain query-matching rules and measurement methods, not private Search Console exports.","Every planned change must preserve source-backed answer blocks and pass rendered SEO/GEO audits before release.","This experiment contract is planning evidence, not a guarantee of rankings, traffic, CTR or AI citations."]},{"id":"us-employment-petition-costs-gsc-experiment","battlecardId":"us-employment-petition-costs","title":"US H-1B, O-1 and TN petition costs search experiment","status":"ready-for-gsc-export","priority":"high","queryCluster":["H-1B petition cost 2026 USCIS fees","O-1 visa premium processing cost","TN visa cost Canadian Mexican professionals"],"targetPages":["/cost-to-complete/us-h-1b","/fees/us/h-1b","/visas/us/h-1b","/cost-to-complete/us-o-1","/fees/us/o-1","/visas/us/o-1","/cost-to-complete/us-tn","/fees/us/tn","/visas/us/tn"],"sourceDatasets":["/api/public/cost-to-complete","/api/public/fees","/api/public/source-transparency-benchmark","/api/public/citation-benchmark","/api/public/visibility-metrics","/api/public/content-opportunities","/api/public/answer-capsules","/api/public/citation-packs","/api/public/calculator-verdict-contexts","/api/public/publisher-citation-kits","/api/public/external-repository-mirrors","/api/public/competitor-query-battlecards"],"experimentTypes":["title-snippet","answer-capsule","internal-linking","ai-citation"],"hypothesis":"US petition-cost queries should improve when employer-side filing fees, applicant-side costs and optional premium processing are not collapsed.","plannedChanges":{"titleSnippet":"Title US cost pages around payer and stage: filing, fraud, ACWIA, premium processing and consular costs where applicable.","answerCapsule":"Render cost rows by payer and stage with optional premium processing flagged separately.","internalLinks":["/cost-to-complete/us-h-1b","/fees/us/h-1b","/visas/us/h-1b","/cost-to-complete/us-o-1","/fees/us/o-1","/visas/us/o-1","/cost-to-complete/us-tn","/fees/us/tn"],"structuredData":"Use fee/cost datasets and route comparison links so AI answers can cite payer-specific petition costs.","noCreateRule":"Do not create a new page from one query unless a canonical source-backed page, citation pack or dataset row can support it."},"gscQueryRules":{"includeAny":["h-1b cost","h1b cost","o-1 visa cost","o1 visa cost","tn visa cost","premium processing"],"excludeAny":["job vacancies","recruitment agency","sponsorship jobs"],"minImpressions":100,"minCtrGap":0.02,"strikingDistancePosition":{"min":5,"max":20}},"measurement":{"baselineWindowDays":28,"comparisonWindowDays":28,"primaryKpis":["organic CTR gap","average position movement","query-page impressions","AI citation share"],"commands":["npm run seo:gsc-battlecard-experiments -- gsc-queries.csv --json --period-start=YYYY-MM-DD --period-end=YYYY-MM-DD --property-label=gsc-domain-redacted --search-type=web","npm run seo:gsc-opportunities -- gsc-queries.csv --json --period-start=YYYY-MM-DD --period-end=YYYY-MM-DD --property-label=gsc-domain-redacted --search-type=web","npm run seo:gsc-experiment-outcomes -- gsc-experiment-outcomes.jsonl --json","npm run kpi:citation-share","npm run audit:rendered-seo","npm run audit:answer-capsules","npm run audit:mcp","npm run audit:source-transparency"],"decisionRules":["Prioritise title/snippet tests when a matching query has at least the minimum impressions and CTR trails the position-based expected CTR by 2 percentage points or more.","Prioritise internal links when a matching query/page sits in positions 5-20 and the target page already has a source-backed answer section.","Prioritise answer-capsule work when impressions exist but the current page cannot answer the query in the first screen with dated source evidence.","Log baseline and comparison windows separately with the same GSC property label and search type; do not call an experiment successful from impressions alone.","Publish outcome claims only from reviewed aggregate rows that pass npm run seo:gsc-experiment-outcomes."]},"auditTrail":["Public experiment rows contain query-matching rules and measurement methods, not private Search Console exports.","Every planned change must preserve source-backed answer blocks and pass rendered SEO/GEO audits before release.","This experiment contract is planning evidence, not a guarantee of rankings, traffic, CTR or AI citations."]}]}