Content · FAQ · GEO — Master

2026-07-22 · strategy

Content · FAQ · GEO — Master

Everything about content quality, the FAQ overhaul, AI-citation (GEO), and editorial authority. The FAQ overhaul is the active workstream (handoff: bowtie note #181). Full 552-item FAQ inventory lives in the generated faq-master-index.md (data appendix, regenerate with scripts/faq-index.mjs).

Contents


FAQ Authoring Rules — The Binding Standard (build against this)

Consolidated from faq-authoring-rules.md · status: active

FAQ Authoring Rules — The Binding Standard

The rules every FAQ set is built and reviewed against. If a question or answer fails a rule here, it does not ship. This exists to prevent the one thing we will not do: generic questions padded onto a page for SEO volume.

Read alongside: faq-master-index.md (what exists), faq-corpus-audit.md (84% keep / provenance flag), faq-system-overhaul-spec.md (render + schema plan).


Rule 0 — The Tailoring Law (the one that matters most)

Every question must name the page's specific subject — its use case, niche, provider, or topic. A question that would read identically on ten different pages is banned.

The subject goes in the question, not just the answer:

❌ Generic (banned)✅ Tailored (required)
Is it worth paying for a VPN?Is a paid VPN worth it just for streaming, or is Netflix's own error-workaround enough?
Does a free VPN work?Does a free VPN actually unblock Netflix libraries, or do they all get detected?
Is a VPN good for gaming?Does a VPN lower ping to overseas game servers, or only add latency?
Are free VPNs safe?Are free Android VPNs safe, given 72% ship with tracking libraries?
How many devices are supported?Can I run NordVPN on my router and still cover my 6 personal devices?

Repurposable slots: max 2-3 per page, and even these are customized templates, never pasted verbatim. Allowed evergreen templates (each MUST take the page's [subject]):

If you can't make an evergreen slot page-specific, drop it and mine a real tailored question instead. We would rather ship 13 sharp questions than 20 with 5 generic ones.


Rule 1 — Structure: two tiers (internal buckets + user-facing labels)

Every FAQ carries two tags:

  1. Internal intent bucket (for our coverage/balance QA — never shown to users).
  2. User-facing topic label (what the visitor sees as the FAQ toggle/chip — "Speed", "Pricing", "Setup").

The user-facing label is the genericness test: if a question does not fit one clear, specific topic label, it is generic — rewrite it or cut it. "Is a VPN worth it?" fits no sharp label. "Does a VPN slow 4K streaming?" fits Speed. That difference is the whole rule.

Tier 1 — internal buckets (coverage check, hidden)

BucketThe jobTailored trigger
ResearchTeach the mechanism for this topic"How does [Netflix] detect VPNs?"
ObjectionKill the specific hesitation"Won't a VPN slow my [gaming ping]?"
Pre-purchaseHelp decide this option"Which VPN is #1 for [4K streaming]?"
OutcomeAfter they act — under-served (~10% today)"What if [the game] blocks my VPN?"

A page with 15 research and zero outcome questions fails. New sets over-index outcome until the site balances.

Tier 2 — user-facing labels (display + genericness gate)


User-facing label vocabulary (controlled — pick from these)

Labels are the visible toggles. Use only these; add a new label only if a real question genuinely fits none (and add it here). Each maps to a typical internal bucket so we keep balance while displaying topics.

VPN clusters (providers, best-X, use-case, hub)

Label (shown)Usual bucketFits questions about
How it worksResearchmechanism, what it does for this use case
SpeedObjectionslowdown, ping, throughput, buffering
StreamingPre-purchaseNetflix/Disney+/library access (use-case pages)
Safety & PrivacyObjection/Researchlogs, jurisdiction, breaches, audits, tracking
Free vs PaidObjectionfree-tier limits, "is free enough for [X]"
TechnicalResearchprotocols, kill switch, split tunneling, DNS leaks
LegalResearchlegality for this use/region (defer to are-vpns-legal, Rule 6)
PricingPre-purchasecost, plans, discounts, renewals
Money-backPre-purchaseguarantee window, refunds, free trials
DevicesPre-purchasesimultaneous connections, platform/router compatibility
SetupOutcomeinstall/configure for this device or use case
TroubleshootingOutcome"what if it's blocked / disconnects / leaks"

Domain broker

LabelBucketAbout
Fees & CostPre-purchasecommission, $0 upfront, when you pay
How it worksResearchvaluation, outreach, escrow, transfer
ConfidentialityObjectionanonymity, discreet outreach
ValuationResearch/Pre-purchasewhat a domain is worth, pricing logic
TimelinePre-purchasehow long buy/sell takes
Why a brokerObjectionvs DIY / vs marketplace

Cybersecurity / Hosting

The vocabulary is the discipline: if you're reaching to force a question into a label, the question is generic — that's the signal to cut or sharpen it.


Rule 2 — Real intent (the question must be actually asked)


Rule 3 — Answer quality (useful + data-backed + front-loaded)


Rule 4 — Data provenance (hard gate)

We have real, citeable data — use rank, cite it honestly. The speedlab block in each src/data/providers/*.json + getSpeedLabData() gives every provider a rank out of 22 across speed/streaming/security/etc. That is the gold source for FAQ answers.

DO:

DON'T (the two real liabilities the audit found):

Net rule: "[Provider] ranks #[Y] of 22 for [Z], per our Speed Lab" is the sanctioned pattern — sourced from our JSON, honest about aggregation. Hard Mbps and "we tested" are out until the data is reconciled (separate task). New authoring uses rank; it does not add to the 43 Mbps / 14 "we tested" debt.


Rule 5 — LLM-optimized + schema (non-negotiable plumbing)


Rule 6 — No duplicates (with the templating exception)


Rule 7 — Policy alignment


Per-page-type MUST-have archetypes

Templates to customize, not paste. Each [bracket] is filled with the page's real subject. These are starting skeletons — mine real tailored questions to reach 12-20.

Provider review (e.g. nordvpn.md)

Best-X ranking / use-case (e.g. best-vpn-for-gaming, best-vpn-for-streaming/netflix)

Hub / pillar (e.g. /vpn/, /cybersecurity/)

Domain broker (/domain-broker/*)


Definition of Done (per page — the review checklist)


Decisions — all resolved (2026-07-22)

  1. Labels: user-facing topic labels from the controlled vocabulary (Speed / Pricing / Technical / Money-back …) under a single FAQ heading. Internal buckets stay hidden.
  2. Evergreen allowance: max 2-3 per page, each customized to the page's subject.
  3. Provenance: cite rank from the Speed Lab JSON (getSpeedLabData), framed as aggregated per methodology.md. No "we tested," no hard Mbps as measured fact (see Rule 4). Reconciling the existing 43 Mbps / 14 "we tested" answers is a separate cleanup task.

Rules are locked — ready to build.

Bottom line

The standard is tailored or it doesn't ship. Structure (12-20, four buckets, outcome-weighted), real demand (page-filtered GSC/PAA), data-backed honest answers (no un-sourced metrics), no true dupes, schema everywhere. Generic questions — even "does a free VPN work" in its bare form — are banned; the page's subject lives in the question. Build every set against the Definition of Done.


FAQ Build Kit — /vpn/best-free-vpn/ (reference cluster)

Consolidated from faq-buildkit-best-free-vpn.md · status: active

FAQ Build Kit — /vpn/best-free-vpn/ (the reference set)

Turnkey spec for the build worker. This is the reference implementation every other page copies. Build it against faq-authoring-rules.md + its Definition of Done. Questions are grounded in real demand (GSC page: 14,031 impressions/30d; PAA + Reddit/comparison SERPs for "best free vpn", "free vpn netflix", "proton vs windscribe free", "free vpn no data cap", "free vpn data limit").

Target: 16 questions (inside the 12-20 band). Current page has 5 → keep 4, edit 1, add 11.

Data sources the answers pull from (all verifiable — Rule 4 compliant)

The 16 questions

Legend: Label = visitor-facing toggle · Bucket = hidden coverage tag · Status = keep / edit / new.

#Question (tailored)LabelBucketStatusAnswer source / angle
1Are free VPNs safe, or do they sell your data?Safety & PrivacyObjectionkeepExisting #1. Tighten: only paid-funded tiers (Proton/Windscribe/hide.me) are safe; 72% of free Android apps carry trackers (cite study).
2Is Proton VPN's free plan actually safe?Safety & PrivacyObjectionnewOpen-source + independently audited, no logs, Switzerland. Names the one free tier you can fully trust.
3How can I tell if a free VPN is logging me?Safety & PrivacyOutcomekeepExisting #4 (privacy-policy red flags). Strong as-is.
4Why are some free VPNs trustworthy and others dangerous?How it worksResearchnewThe paid-tier-funded model vs "you are the product." The page thesis, front-loaded.
5Which free VPN has no data cap?Free vs PaidPre-purchasekeepExisting #2 (Proton = only truly unlimited). Add the one-line contrast to the capped ones.
6What are the data limits on the top free VPNs?Free vs PaidResearchnewComparison: Proton unlimited · Windscribe 10 GB · Privado 10 GB · TunnelBear 2 GB. (Also feeds the comparison-block component.)
7Which free VPN is fastest?SpeedObjectionnewhide.me ranks #6 of 22 in our Speed Lab — the fastest of the trustworthy free tiers; Proton #12. ← the rank-cite showcase (Rule 4).
8Can a free VPN actually unblock Netflix?StreamingObjectioneditExisting #3. Fix the "in our testing" phrase (Rule 4 violation) → "Windscribe unblocks Netflix US/UK/CA on its free tier; Privado ranks best for streaming among free options." Honest: most fail.
9What's the best free VPN for streaming on a budget?StreamingPre-purchasenewWindscribe (region unblocks) vs Privado (streaming rank); the realistic answer + the paid-upgrade trigger.
10How many devices can I cover with a free VPN?DevicesPre-purchasenewProton free = 1 device; Windscribe = unlimited. The real decision axis for households.
11Is a free VPN good enough for public Wi-Fi, or do you need paid?Free vs PaidObjectionnewEvergreen [use case] slot, customized. NOT "can a VPN protect me on public Wi-Fi" — that's owned by what-is-a-vpn (dedup, Rule 6). Free-specific framing.
12How do I set up a free VPN on iPhone or Android?SetupOutcomenewConcrete steps; note app-store trust (ties back to the 72% stat).
13How do I upgrade a free VPN to paid without losing my setup?SetupPre-purchasenewSame account/app, plan flip; removes the friction objection to converting.
14What happens when my free VPN runs out of data mid-month?TroubleshootingOutcomenewPrivado throttles (not cutoff); Proton never caps; Windscribe stops at 10 GB. Answers the real pain.
15Why does my free VPN keep getting blocked or disconnecting?TroubleshootingOutcomenewFree IP ranges are flagged/overloaded; what to try; when it's a hard limit of free.
16When should you stop using a free VPN and pay?Free vs PaidObjectionkeepExisting #5. Strong. The honest upgrade trigger.

Coverage check (Definition of Done)

Dedup guards specific to this page

Render + schema (Phase 0 must be done first, or do inline here)

Handoff

Logged in bowtie note #181. Worker builds the answer prose + wiring; this kit fixes the questions, labels, buckets, data, and dedup so no invention is needed.


FAQ Corpus Audit — Fit vs Redo (Fable, 2026-07-22)

Consolidated from faq-corpus-audit.md · status: active

FAQ Corpus Audit — Verdict: FOUNDATION, not teardown

Adversarial quality audit of the 552-item English FAQ corpus (see faq-master-index.md) against Ben's rubric: real question + useful, data-backed answer + objection handling; no SEO-filler; no vague answers.

Headline (552 items)

TierCount%
KEEP (good as-is / trivial tweak)~46684%
EDIT (real question, weak answer)~8315%
REDO (filler / dupe / no substance)~3-7~1%
ClusterItemsKEEPEDITREDO
Hubs (System B)2417 (71%)7 (29%)0
VPN guides/rankings327~265 (81%)~61 (19%)1
Provider reviews110~101 (92%)~7 (6%)2
Domain broker36~34 (94%)~2 (6%)0
Cybersecurity42~38 (90%)~4 (10%)0
Hosting13~11 (85%)~2 (15%)0

Corroborated by the May 2026 site-wide rewrite (memory project_site_history: 1-3/10 → 7-9/10) which already did the quality pass. Answers front-load the direct answer, use numbers, handle objections honestly.

⚠️ The one hard flag — data provenance (cuts across KEEP)

43 FAQ answers cite Mbps figures and 14 claim "our tests / we tested" — and Speed Lab data is static/fake (memory project_speedlab_research). "CyberGhost ranks #10 of 22 VPNs we tested at 612 Mbps" is exactly the data-driven format the rubric wants, built on numbers we never measured. Structurally KEEP, ethically a liability, fatal if an LLM-citation strategy invites scrutiny. Resolve before the overhaul: get real numbers, attribute to external benchmarks, or strip the "we tested" claims. The 5 speed-test pages (16 items) are scored EDIT entirely for this reason.

Intent-bucket distribution (134 hand-scored items)

BucketShareNotes
Research~40%Definitional, detection mechanics, X-vs-Y
Objection~27%free-vs-paid, slowdown, post-breach safety; broker hub is the best objection set on the site
Pre-purchase~23%cost, plans, devices, refunds, compatibility
Outcome~10%Most under-served — the biggest content gap

Outcome items that exist are strong (Mint "verify VPN is working" with real curl ifconfig.me; "why does my VPN disconnect on mobile data" with reconnect times) but concentrated on Linux/free-trial pages. Streaming, provider, hub pages have almost none.

Methodology

Concrete examples

KEEP — best-vpn-for-android "Are free VPNs safe on Android?" (2024 study, 72% had trackers); netflix "How does Netflix detect VPNs?" (names IP reputation/DNS mismatch/WebRTC + counters); nordvpn "safe after 2018 breach?" (objection met head-on); windscribe "why only 3-day guarantee?" (honest); sell-premium-domain "What if I already received an offer?" (floor-not-ceiling, 30-100% uplift).

EDIT — nordvpn-pricing "Accept gift cards?" ("availability varies, check the page" = non-answer); domainBrokerFAQ (all 5 — great questions, pure-assertion answers while $75M+/proofSaved data sits one click away); 5 speed-test pages (fabricated provenance); perksFAQ "how often new deals?" (vague); vpnHubFAQ "VPN for torrenting?" (off-policy per access-not-unblock + the homepage torrenting removal).

REDO — avast-secureline "What's the best VPN for Netflix?" (off-topic funnel, dupes streaming cluster — textbook filler, but only ONE found in 134 read); most-secure-vpn "public Wi-Fi?" (verbatim dupe of what-is-a-vpn); best-vpn-for-iphone "why upload speed matters more" (invented framing; salvage the data under a real question).

Model rewrites (vague → data-driven):

  1. Broker hub "How do I know you'll create value?" → "You pay $0 unless the deal closes. Across $75M+ closed we've moved first offers 30-100%, incl. saving {{broker.proofSaved}} on our own $1M purchase." (data already in buy-premium-domain.md)
  2. Hub "Can I use a free VPN?" → name the 3 trustworthy free tiers (Proton unlimited/audited, Windscribe 10-15GB, hide.me) + the 72%-trackers stat.
  3. nordvpn-pricing gift cards → verify which countries/retailers/crypto and state it, or cut. "Availability varies" must never ship.

Duplicates

Bottom line

Build on it, don't tear it down. ~84% already meets the bar. Real deficits, in priority: (1) volume — every page under the 12-20 target, an expansion job; the questions to add are known (outcome bucket + GSC/PAA-mined); (2) data provenance — the 43 Mbps / 14 "we tested" claims from static Speed Lab, resolve before any LLM-citation push; (3) hub answers are data-poor vs the posts (broker hub worst); (4) ~83 one-sentence EDIT fixes. ~90% of overhaul spend belongs in net-new questions + data verification, not rewriting what exists.


FAQ System Overhaul — Audit + Target Spec

Consolidated from faq-system-overhaul-spec.md · status: active

FAQ System Overhaul — Audit + Target Spec

Meeting mandate (July 21): every cluster gets a real FAQ block — 12-20 questions, split across four intent buckets (research / objection / pre-purchase / outcome), no duplicates, LLM-optimized, schema, real human-intent questions as the staple. Plus a machine-page version (faq + citations + takeaway + metrics), a master FAQ page, a master index page, and an authority / citation-token evaluation.

Deliverable mode is spec/doc. This is the target design + phased plan for the implementing worker. Nothing has been changed.


1. Current state — the core problem is TWO FAQ systems

System A (markdown)System B (hub, hardcoded)
Where## Frequently Asked Questions in post/page .md, ### Q / paragraph ATS objects in src/i18n/translations.ts (vpnHubFAQ, cybersecurityFAQ, hostingFAQ, domainBrokerFAQ, perksFAQ)
Coverage97/113 EN posts, all 22 provider pages, 19 ranking pages5 hubs only
CountVariable4-5 items each (below the 12-20 target)
RenderFlat prose headings — no accordionAccordion (FAQ.astro, <details>)
SchemaAuto JSON-LD via extractFaqItems() in [...slug].astro:175but only Editorial/Ranking templates; provider + pillar get noneJSON-LD via Base.astro:222
i18nWhole-file translationInline per-lang in translations.ts

Consequences to fix:

  1. Fragmentation — two authoring paths, two render styles, inconsistent schema. A reader/crawler sees accordions on hubs, flat text on posts.
  2. extractFaqItems() flattens answers ([...slug].astro:175-191): answer = first paragraph only, multi-paragraph collapsed, markdown links passed as raw text into schema. LLM-quality answers need this fixed.
  3. Provider (22) + Pillar pages have ## FAQ markdown that renders but emits NO schemafaqItems isn't passed to those layouts. Pure loss.
  4. Hubs have only 4-5 FAQs — half the 12-20 target, no intent structure.

Existing infra to reuse (don't rebuild):


2. Target model — one FAQ contract

2a. Unify authoring onto markdown + a structured convention

Keep FAQs in the content markdown (translatable through the existing pipeline), but make the intent buckets explicit so dedup, ordering, and the machine page can key off them. Two options — recommend Option A:

Migrate the 5 hub FAQs (System B) OUT of translations.ts into the same markdown convention on their hub content, OR into a shared TS shape that the same renderer + schema path consumes. Goal: one render component, one schema emitter, one dedup check — not two.

translations.ts is a translation SSOT with contamination landmines (see CLAUDE.md § Translation SSOT). Moving hub FAQ objects touches it — pull up LayerView first (lv describe file:src/i18n/translations.ts vpn-astro), and run node scripts/i18n-contamination-check.mjs --gate after.

2b. Render everything through the accordion

Route the parsed faqItems through FAQ.astro (<details> toggles) on all templates — posts, provider, pillar, hub. Kills the flat-prose inconsistency. Group visually by intent bucket (optional sub-labels).

2c. Schema everywhere

Extend faqItems to the Provider and Pillar layouts (currently schema-less). Fix extractFaqItems() so answers keep full text (all paragraphs) and render markdown links as text without dropping them. One FAQPage JSON-LD emitter in Base.astro (already there) — just feed it from every template.

Guard the known duplicate-schema bug (domain-broker-recovery.md:23): only ONE emitter (Base JSON-LD). FAQ.astro must not re-emit microdata. Verify in GSC Rich Results after rollout.


3. The 12-20 / four-intent content model

Every cluster's FAQ set = 12-20 questions, roughly balanced:

Bucket3-5 eachThe real question behind it
ResearchUnderstanding the category"How does X work / what is X / is X legal?"
ObjectionWhy the visitor hesitates"Isn't free enough? / does it slow me down? / can I be tracked anyway?"
Pre-purchaseDeciding this option"Which plan? / money-back? / how do I set it up? / does it work on my device?"
OutcomeAfter they act"What do I do if it disconnects? / how do I confirm it's working? / what changes for me?"

Rules (enforce, don't just recommend):


4. Machine-page version (faq + citations + takeaway + metrics)

The meeting wants a machine-readable page variant carrying: faq, citations, takeaway, metrics. All four inputs already exist in some form:

Recommended shape: a per-page .json (or .md) machine variant, e.g. GET /{permalink}/index.json, emitting { url, title, takeaway, faq: [{q, a, intent}], citations: [{n, source, url}], metrics: {...} }. Reuse the src/pages/*.json.ts route pattern (languages.json.ts is the precedent). Keep it English-first (matches llms-full.txt being EN-only).

Decision to confirm: machine variant per-page vs. one big feed. Given llms-full.txt already aggregates, the per-page JSON + a link from llms.txt is the lower-lift, more-citeable route.


5. Master FAQ page + master index page + dedup


6. Authority / citation-token evaluation

Meeting item: "evaluate authority, token use for citations." Concretely:


7. Phased plan

Phase 0 — foundation (unblocks everything, low content lift):

  1. Fix extractFaqItems() answer flattening + link handling.
  2. Extend faqItems → Provider + Pillar layouts (instant schema win on 22 provider pages).
  3. Route all FAQs through FAQ.astro accordion (kill flat prose).
  4. Add the [intent] parser tag (Option A) — backward-compatible.
  5. Build scripts/faq-dedup-check.mjs, wire as a build gate.

Phase 1 — content, per cluster by traffic: 6. Mine GSC/PAA questions per cluster; author 12-20 across the four buckets; migrate hub FAQs off translations.ts into the unified path.

Phase 2 — machine + master: 7. Per-page machine JSON variant (faq/citations/takeaway/metrics), flag fake metrics. 8. Master FAQ page + master index page (schema-canonical decision per §5).

Phase 3 — evaluation: 9. Authority / citation-token report (§6); adjust citation harvesting.


Open decisions to confirm with Ben

  1. Authoring convention: Option A (intent-tagged ###, recommended) vs. Option B (frontmatter array). Gates all downstream work.
  2. Machine page format: per-page .json route (recommended) vs. aggregated feed.
  3. Master FAQ schema: answers-on-page-but-schema-stays-canonical (recommended, avoids authority split) vs. full FAQPage on the master page.
  4. Metrics in machine page: which metrics are real (Speed Lab / Trust Score are currently static) — do NOT publish fabricated metrics as cited facts.
  5. i18n scope: machine page + master pages English-first, matching llms-full.txt?

Bottom line

The blocker isn't missing FAQs — it's two fragmented systems and schema-less provider/pillar pages. Phase 0 (unify render + schema + fix the parser + dedup gate) is pure infra and unlocks the meeting's asks cheaply. Then the real work is content: mine real human questions per cluster (GSC/PAA, not invented), 12-20 across four intents, deduped, LLM-front-loaded. The machine page, master pages, and citation eval all reuse infra that already exists (rehype-citations, llms.txt, Bottom-Line, provider JSON) rather than net-new systems.


GEO — Getting VPN.com Cited in AI Answers

Consolidated from geo-ai-citations.md · status: active

GEO — Getting Cited in AI Answers

Researched 2026-06-06 (web-validated). The question: is it worth optimizing for AI citations (ChatGPT, Perplexity, Google AI Overviews, Gemini), and what does it actually take? Companion to [authority-roadmap] (the moat/Speed Lab plan) and the comparison + authority moves in [next-50-days].

Verdict

Yes — but it's an authority + original-data play, not a schema/llms.txt play. And it's not a new initiative: the comparison supercluster and the Speed Lab/methodology work are the GEO engine. The single decision that unlocks it: make the Speed Lab data real, or stop leaning on it.

Why it's worth it (validated)

The honest ceiling (what GEO-agency blogs skip)

What actually moves the needle → maps to the plan

  1. On-page (cheap, real but bounded ~40% lift — Princeton-proven): front-load the answer in the first ~200 words; add statistics, cite sources, add quotations; claim-rich intros. 44% of LLM citations come from the first 30% of the page. Bake into all content.
  2. Original/benchmark data = #1 on-page driver: pages with benchmark data cited 2.8x more. → the comparison supercluster (data tables, winners) and Speed Lab (dated benchmarks). These two moves are the GEO play.
  3. Off-page earned authority (the real ceiling, slow): independent mentions, press from dated Speed Lab reports, verification-badge backlinks, a methodology page good enough to be a citable source. The flywheel: publish real data → independent sources cite it → multi-source corroboration → AI confidence. You climb the affiliate ceiling by getting others to cite your data, not by publishing more of your own.

The linchpin / the fork

The highest-leverage asset is original data others can cite — exactly the Speed Lab. But ours is static/fake. Publishing fake benchmarks that AI cites is a reputational + legal landmine — one Reddit thread or journalist catch torches the authority you're building.

Decision: make the top-5 Speed Lab genuinely real + dated (citable, press-able, backlink-bait via the verification badge) — or stop relying on it. No safe "fake-but-cited" middle. Everything in the authority half of the plan hinges on this call.

Measurement

AI citations don't show cleanly in GA4. To know if this works, track answer-share / citation frequency for our target queries across ChatGPT/Perplexity/Google AIO (an AI-visibility monitor), plus AI referral sessions + conversion in itbroke. Baseline before, measure after.

  1. On-page tactics into the comparison + provider content (cheap, do alongside Move 2). Front-load, stats, cite, benchmark tables.
  2. Make the call on real Speed Lab data (the fork). If yes → top-5 real + dated + methodology = the citable core.
  3. Earned authority (slow, ongoing): press the dated reports, pursue verification-badge backlinks, build genuine (not spammy) community presence.

Sources


Authority Roadmap — Making "Reviewed by VPN.com" Mean Something

Consolidated from authority-roadmap.md · status: active

Authority Roadmap

Goal: VPN.com becomes the cited source for VPN data, not a site that references other sources.

Success: AI assistants cite VPN.com Speed Lab data. Providers display "VPN.com Verified" badges. Journalists reference the Trust Score. The methodology page is linked from Wikipedia.


Current State (April 2026)

Have: 120-page static site, Speed Lab (10 providers), 100-point rating system, JSON-LD, llms.txt, /methodology/ page.

Missing:


Phase 1: Credibility Foundation

1.1 Methodology Page Overhaul

Priority: Critical — everything else rests on this.

Rewrite /methodology/ to read like a research paper. Must cover:

Tone: technical, transparent, boring. Written for peer review, not for customers. Reference: AV-TEST methodology

1.2 Brand the Scoring System

Name it. Always display as "94/100 VPN.com Trust Score." Reference by name in every provider review.

Score ranges on the methodology page:

RangeMeaning
90-100Exceptional
80-89Excellent — minor gaps
70-79Good — notable tradeoffs
60-69Fair — significant concerns
<60Not recommended

1.3 Affiliate Disclosure

Strengthen /disclosures/ to explicitly state: VPN.com earns commissions; affiliate relationships never influence scores; methodology is public and applied uniformly; providers cannot pay for higher scores; editorial team doesn't know commission rates during testing.


Phase 2: Original Data

2.1 Monthly Speed Lab Reports

Monthly blog posts with dated test results. Format: date range, comparison table, changes from prior month, raw data (throughput, latency, loss, stability per location).

Why it matters: creates freshness signals, each report is a citable dated data point, providers link to good results (free backlinks), builds a historical archive.

Technical: Data already exists in provider JSONs. Add lastTested date field and build a report template.

2.2 Provider Verification Program

"VPN.com Verified" badge — earned, not bought.

CategoryCriteria
TrustPublished privacy policy, disclosed jurisdiction/ownership, no-logs claim, independent audit by named firm, transparency report
SecurityAES-256 encryption, kill switch on all platforms, DNS/IPv6 leak protection, WireGuard or equivalent
Value30-day minimum money-back guarantee, 5+ simultaneous devices, 24/7 support

Providers who pass can use the badge on their own sites — every badge is a backlink. Full transparency page at /vpn/verified/.

2.3 Static Data API

Endpoint: /api/speedlab.json — generated at build time.

{
  "lastUpdated": "2026-04-29",
  "testEnvironment": "1 Gbps fiber, US East Coast",
  "providers": [
    {
      "name": "NordVPN",
      "rank": 1,
      "trustScore": 94,
      "speed": { "download": "730 Mbps", "latency": "18 ms" },
      "verified": true,
      "reviewUrl": "https://www.vpn.com/vpn/nordvpn/"
    }
  ]
}

Open data gets cited. Researchers, journalists, and AI models consume structured JSON.


Phase 3: AI Citation Strategy

Already done: llms.txt + llms-full.txt, JSON-LD, clean semantic HTML.

Still needed: Every factual claim should be self-contained and dated. Instead of "NordVPN is fast," write "NordVPN achieved 730 Mbps in VPN.com's April 2026 Speed Lab test, ranking #1 of 10 providers tested."

Content only VPN.com can produce:

Structure answers to match AI queries: claim + evidence + source attribution + date.


Phase 4: Distribution

Don't: buy links, publish thin "best VPN for [city]" farms, inflate scores for affiliates, or claim "industry-leading" without proof.


Implementation Priority

#ItemEffortImpact
1Methodology page overhaul2-3 hrs contentCritical
2Brand the scoring systemContent + minor codeHigh
3Affiliate disclosure strengthening1 hr contentHigh
4First monthly Speed Lab reportTemplate + dataHigh
5Add lastTested to provider data30 min codeMedium
6Verification criteria pageContent + codeHigh
7Static API endpoint1 hr codeMedium
8Expand to 20 providersContent + dataMedium
9Provider editorial content (9 reviews)Significant contentHigh
10Wikipedia-grade source qualityOngoingVery high

Start with 1–3. Pure content, no code, and the foundation for everything else.


The Principle

Authority is earned by doing work nobody else will do, publishing it transparently, and being right consistently over time.

The Speed Lab is the moat. The methodology is the credibility. The monthly reports are the proof. The verification program is the brand. The open data is the distribution.


Comparison Supercluster — Provider vs Provider Matrix

Consolidated from comparison-supercluster.md · status: parked

Problem

VPN.com has 22 individual provider reviews and 13 "best-for" comparison pages. But no provider vs provider comparison content.

When a user asks "NordVPN vs ExpressVPN", there's no page to serve. The user has to read two separate reviews and do the comparison themselves. AI models can't cite a comparison because one doesn't exist.

This is the single biggest content gap identified by ChatGPT's site audit:

"You need provider vs provider matrix, protocol comparisons, use-case comparisons, pricing comparisons. Comparison intent is extremely commercial, extremely AI-native, extremely agent-friendly."

Opportunity

Comparison queries are:

Plan

Phase 1: Top 10 provider-vs-provider pages

Generate the highest-demand comparisons from our top providers:

ComparisonWhy
NordVPN vs ExpressVPN#1 vs #3 — highest search volume comparison
NordVPN vs Surfshark#1 vs best value — price-conscious buyers
NordVPN vs ProtonVPN#1 vs best privacy — privacy-focused buyers
ExpressVPN vs Surfsharkpremium vs budget
NordVPN vs CyberGhost#1 vs largest server network
Surfshark vs CyberGhostbudget tier comparison
NordVPN vs Mullvad#1 vs most private
ExpressVPN vs ProtonVPNpremium tier privacy comparison
NordVPN vs PIA#1 vs most servers
Surfshark vs ProtonVPNbudget vs privacy

Phase 2: Comparison hub page

/vpn/compare/ — a hub listing all available comparisons with a provider picker (select two providers → see comparison).

Phase 3: Data-driven comparison component

A reusable Astro component that takes two provider slugs and renders a structured comparison:

This component makes creating new comparisons trivial — just set the two slugs and write the analysis.

Architecture

src/content/posts/nordvpn-vs-expressvpn.md
  → category: vpn
  → template: comparison (new)
  → frontmatter: compareProviders: ["nordvpn", "expressvpn"]
  → component auto-generates data table
  → prose analysis written per page

Content approach

Each comparison page should have:

  1. Quick verdict — who wins and why (above the fold)
  2. Data table — auto-generated from provider JSON (speed, servers, price, rating)
  3. Category-by-category analysis — 5-6 sections (speed, privacy, streaming, price, ease of use, verdict)
  4. Winner per category — explicit, not vague
  5. FAQ — "Is NordVPN better than ExpressVPN for streaming?" etc.

What NOT to do

Dependencies

Status