Conversion · The Money Path — Master

2026-07-22 · strategy

Conversion · The Money Path — Master

The conversion principle and the surfaces that apply it (advisor, /out gateway, provider plan cards, provider template). NOTE: the provider-template section shipped the TrustScore hero, but its Jul 21 tweak — open the score breakdown by default + swap the assessment/pricing sections — has NOT shipped (live to-do, owned by the provider-redesign worker).

Contents


Conversion Principle: Dream at the Price, Proof at the Doubt

Consolidated from conversion-principle-dream-and-proof.md · status: active

Resell the dream where the price is, and proof where the doubt lives

One line, two placements. It governs every conversion surface on the site — the advisor, the /out gateway, provider plan cards, pricing sections, and the FAQ objection bucket.

What it means

The two are a pair: doubt is answered with proof on the way to the price, where the dream closes.

The rule in practice

SurfaceWhere the price is (→ dream)Where the doubt is (→ proof)
Advisor (homepage-advisor-hero)stepPrice currently just lists plans — lead it with the use-case outcome (the gatewayFacts/verdictMetric already written per use-case) before the number. Copy the free use-case's "risk-free upgrade" pattern.The blocker question is the doubt. Wire real proof into REASSURE — speed → Speed Lab RANK; trust → audit + auditor; any → the provider's trust score + rating/review count (data already on each provider object).
/out gatewayThe interstitial before the affiliate jump — restate the dream (the use-case benefit) beside the offer, not just "continue".Guarantee + rank + rating as the proof strip.
Provider plan cardsplanCheck reassurance → make it the outcome ("unbuffered 4K across every region"), not the feature.Trust score, rank, audit date near the price.
FAQ objection bucketEvery objection answer = proof (rank / study / audit / guarantee), per faq-authoring-rules.md Rule 3.

The proof we already own (deploy it at the doubt)

Provenance-safe, verifiable — this is what "proof" means here (never "we tested / N Mbps", per faq-authoring-rules.md Rule 4):

The dream we resell (surface it at the price)

The use-case outcome, already written in use-cases.ts (gatewayFacts, verdictMetric) and use-case-stats.ts (before/after):

Litmus test (for any conversion surface)

  1. At the price, does the visitor re-feel why they wanted it — or only what it costs?
  2. At each doubt, is there a number or a named source — or just a claim?

If either answer is "just a claim / just a cost," the surface isn't done.


Provider hero — unified TrustScore redesign (spec)

Consolidated from hero-trustscore-redesign.md · status: done

Goal

Replace the provider-hero's three separate pills (VPN.com trust score → #our-assessment, Apple rating, Google rating) plus the standalone <StoreReviews> row with ONE unified, beautiful component that combines real-user proof + our editorial score, and lets a click drill into per-metric scores. Fixes the "3 pills feel like 3 sections" + "Nord looks off" concerns. Fable-specced 2026-07-14.

Current state (the problem)

Provider.astro:267–282 renders: a trust-score pill (→ #our-assessment, "a lot of reading"), then a separate StoreReviews variant="detailed" row. Three same-weight pills competing; reviews disconnected from the score; the assessment section is a wall of text with no per-metric entry point.

The build

New src/components/TrustScore.astro — a capsule + expandable breakdown panel + inline script.

New src/data/assessment-scores.ts — shared derivation of the six section scores, imported by BOTH TrustScore.astro and ProviderReview.astro so hero bars and assessment cards can't drift. Returns { id, labelKey, score, max, anchor }[] from rating.categories + speedTested.

Modified Provider.astro — swap lines 267–282 for <TrustScore lang={lang} … />. StoreReviews.astro stays (gateway/picker use it); only the hero usage is removed.

Fallbacks (the all-providers/Nord consistency fix): no store ratings → right cell only; no rating → left cell only, non-interactive; never an empty capsule.

New copy (t() keys × 17 langs)

trust.breakdownTitle ("Score breakdown"), trust.toggleHint ("View score breakdown", visually-hidden), trust.readFull ("Read the full assessment →", RTL-flip arrow for ar/fa). Metric labels + tier words reuse existing keys. App Store · Google Play = hardcoded brand names (not translated). No em dashes in any translation.

Ship checklist

  1. assessment-scores.ts first; refactor ProviderReview.astro to consume it (scores byte-identical before/after — snapshot a page to confirm).
  2. Anchors + scroll-margin-top on the six cards.
  3. Component + hero swap; 4 new keys × 17 langs.
  4. Gates: npm run build, translation-qa.mjs, a11y-audit.mjs (the disclosure button/panel is new axe surface), keyboard pass (Tab/Enter/Escape), RTL /fa/ spot-check, dark mode.
  5. Above-the-fold: confirm the CLOSED capsule doesn't push "See plans" below the fold on mobile.

Status: parked, ready to build on green-light.