← Vault Index
Source: business/marketing/skills/interactive-narrative-SKILL.md

INTERACTIVE NARRATIVE — SKILL FILE

For Building Thought Leadership Pages with Embedded Interactives


WHAT THIS SKILL BUILDS

A long-form, scrollable thought leadership page that weaves prose and interactive visualizations into a single argument. The interactives are not decorations — they are evidence. Each one makes a claim experiential rather than stated.

This is NOT a micro-tool. Micro-tools are machines (input → processing → output). An interactive narrative is an argument that uses interactives to prove its claims. Remove the prose and the interactives don't make sense. Remove the interactives and the prose loses its experiential proof.

Golden example: The Proof Gap (proof-gap-evergreen.html)


WHEN TO USE THIS

Use this skill when:

Do NOT use this for:


ARCHITECTURE

Page Structure: Section-Based Scrolling

Interactive narratives scroll continuously. They do NOT use screen-switching like micro-tools.

The page is a sequence of sections, each with a background color, a container width, and a content type. Sections alternate backgrounds to create visual rhythm.

HERO (dark) — full viewport, centered
SECTION (cream) — prose
SECTION (dark) — prose + interactive
SECTION (off-white) — prose
SECTION (dark) — prose + interactive
SECTION (cream) — prose
SECTION (dark) — interactive
SECTION (dark, continued) — self-assessment cards
SECTION (off-white) — closing prose
CTA (dark) — closing quote + button
FOOTER (dark)

The alternation is not random. Follow these rules:

Container Widths

Two container widths, used intentionally:

.container { max-width: 700px; }      /* Prose — comfortable reading width */
.container-wide { max-width: 900px; }  /* Interactives, tables, card grids — needs more room */

Rule: Prose always uses .container. Interactives, tables, and card grids always use .container-wide. A section can contain BOTH — prose in .container followed by an interactive in .container-wide followed by more prose in .container.

Navigation

Fixed top nav with anchor links to major sections:

<nav>
    <a href="https://advisoryos.ai" class="logo">
        <img src="[Advisory OS icon URL]" alt="Advisory OS">
        <span class="logo-text">Advisory OS</span>
    </a>
    <div class="nav-links">
        <a href="#cost">The Cost</a>
        <a href="#comparison">The Comparison</a>
        <a href="#constraint">The Constraint</a>
    </div>
</nav>

SECTION ANATOMY

Every section follows the same internal structure:

<section class="[cream|dark|off-white]" id="[anchor-id]">
    <div class="container">
        <p class="section-eyebrow">The Pattern</p>
        <h2>Section Headline</h2>
        <p class="lead">Opening sentence that sets up the section.</p>
        <p>Body paragraphs...</p>
    </div>

    <!-- If interactive present, switch to wide container -->
    <div class="container-wide">
        <div class="viz-container" id="[viz-id]"></div>
    </div>

    <!-- Return to narrow container for interpretation -->
    <div class="container">
        <p>Prose interpreting what the interactive just showed...</p>
    </div>
</section>

Section Elements

Eyebrow: Always present. ALL-CAPS, tiny, gold, letterspaced. Names the argumentative move (e.g., "The Pattern", "The First Cost", "The Real Constraint", "The Shift").

Headline (h2): Cormorant Garamond, large. States the section's claim in plain language. Uses   to prevent orphan words.

Lead paragraph: First paragraph after headline. Slightly larger, stone/muted color. Sets up the section. Class .lead.

Body paragraphs: Standard size, comfortable line-height (1.85). Slate color on light backgrounds, cream-85% on dark backgrounds.

Big quote: Centered, Cormorant Garamond italic, large. Used between sections or within sections for emphasis. One key line pulled from the argument. Gold for the pivotal word.

<p class="big-quote">"The prospect who reads your case study 
before the call is a <em>different person</em> than the one 
who doesn't."</p>

Definition box: Gold left-border, subtle background. Used for the "question worth asking" or a key reframe.

<div class="definition-box">
    <p><strong>The question worth asking:</strong> ...</p>
    <p>Interpretation of that question...</p>
</div>

THE HERO

The hero is its own section — dark background, vertically centered, occupying most of the viewport.

<section class="hero">
    <div class="hero-inner">
        <div class="hero-eyebrow">An Interactive Explainer</div>
        <h1>The <em>Proof</em>&nbsp;Gap</h1>
        <p class="hero-sub">Your best client outcomes are invisible to 
        every future prospect. Here's what that costs you — and what 
        to do about it.</p>
    </div>
</section>

Hero rules:


INTERACTIVE PATTERNS

Each interactive lives inside a .viz-container div and is rendered by React via CDN.

React Setup

React is loaded via CDN in the :

<script src="https://cdnjs.cloudflare.com/ajax/libs/react/18.2.0/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/18.2.0/umd/react-dom.production.min.js"></script>

All components use React.createElement syntax (no JSX, no build step):

var e = React.createElement;
var useState = React.useState;
var useEffect = React.useEffect;
var useRef = React.useRef;

// Color constants
var GOLD = "#b79d64";
var GOLD_LIGHT = "#c4aa74";
var CHARCOAL = "#1a1a1a";
var DEEP_CHARCOAL = "#2a2a2a";
var CREAM = "#f5f4f0";
var STONE = "#8a8680";
var SLATE = "#4a5a6a";

Components are mounted at the bottom of the page:

var el = document.getElementById('viz-id');
if (el) { ReactDOM.render(e(ComponentName), el); }

Pattern 1: The Accumulator

Persuasive job: Makes invisible accumulation feel real. Use when the argument is "this small thing compounds into something large."

How it works:

  • A grid of empty circles/dots
  • Play button triggers auto-fill animation (one dot at a time, ~200ms interval)
  • Each dot fills with gold and a number
  • Stats appear below showing the compounding total
  • Closing insight text appears when animation completes

Key implementation details:

  • useState for count and running state
  • useRef for the timer
  • useEffect drives the animation loop with setTimeout
  • Play button text changes: "See a Full Year" → "Running..." → "Play Again"
  • Reset button appears after first play
  • Stats use Cormorant Garamond for numbers, tiny uppercase labels

Data needed:

  • Unit being accumulated (e.g., "prospect calls")
  • Per-unit cost (e.g., "25 minutes per call")
  • Total units to show (e.g., 24 calls/year)
  • 2-3 stat calculations (e.g., total minutes, total hours, dollar cost)
  • Closing insight sentence

Structure:

[Header — what the dots represent]
[Dot grid — fills on play]
[Play / Reset buttons]
[Stats row — appears when count > 0]
[Closing insight — appears when complete]

Pattern 2: The Toggle Comparison

Persuasive job: Makes asymmetry obvious. Use when the argument is "these two things look the same but they aren't."

How it works:

  • Two side-by-side columns
  • Toggle switch at top with two labeled scenarios
  • Content in both columns changes when toggled
  • In one scenario, columns are identical (proving the "looks the same" claim)
  • In the other, one column gains highlighted differentiators
  • Outcome sentence below changes with toggle

Key implementation details:

  • useState for active scenario
  • Two styled buttons acting as toggle (inline-flex, border between them)
  • Active button gets highlighted background
  • "Tap to compare" hint text below toggle
  • Proof items render in gold italic
  • Each column has a "Decides on" footer showing what the prospect uses to choose
  • Winner column gets gold border

Data needed:

  • 2 scenario labels (e.g., "Neither Has Proof" / "One Has Proof")
  • For each scenario: two columns with item lists
  • Items that are proof get special gold styling
  • Verdict per column (e.g., "Price" vs "Trust")
  • Outcome sentence per scenario

Structure:

[Toggle buttons + hint]
[Two columns side by side]
  [Column items]
  [Verdict footer]
[Outcome sentence]

Pattern 3: The Sequencer

Persuasive job: Walks through parallel transformations. Use when the argument is "the same situation changes at multiple touchpoints."

How it works:

  • Tab bar across the top with 4 moments (numbered 01-04)
  • Play button auto-advances through all tabs (~3500ms per tab)
  • Each tab shows a before/after panel (two columns)
  • Below the panels: a one-line shift summary in gold italic
  • Tabs are also manually clickable (clicking stops auto-play)

Key implementation details:

  • useState for active tab index and running state
  • useRef for timer
  • useEffect drives auto-advance with setTimeout
  • Active tab gets gold bottom border and gold text
  • Past tabs get cream text, future tabs get stone
  • Detail panel uses key prop to trigger fadeInUp animation on change
  • Before panel: stone text, "Without Proof" label
  • After panel: cream text, "With Proof" label in gold
  • Shift summary: gold italic, subtle gold background

Data needed:

  • 3-5 moments (4 is ideal), each with:
  • Label (e.g., "The Discovery", "The Call")
  • Before text (what happens without the thing)
  • After text (what happens with it)
  • Shift summary (one-line transformation statement)

Structure:

[Play button]
[Tab bar — 4 tabs with numbers and labels]
[Detail panel]
  [Before column | After column]
  [Shift summary bar]

Pattern 4: Flip Cards (HTML/CSS only — no React)

Persuasive job: Reveals hidden perspectives. Use when the argument is "what you think they see isn't what they actually think."

How it works:

  • Grid of cards (3 columns on desktop, 2 on mobile)
  • Front: what the person shows (e.g., "Credentials")
  • Back: what the audience actually thinks (e.g., "So does the other one.")
  • Click/tap toggles the flip
  • Special "proof" cards flip to gold-highlighted backs

Key implementation details:

  • Pure CSS 3D transform (perspective, rotateY, backface-visibility)
  • .flipped class toggles via onclick="this.classList.toggle('flipped')"
  • Front: charcoal background, stone label, cream title
  • Back: deep charcoal, gold label, cream title
  • Back with .is-proof: gold-tinted background, gold border, gold title
  • "Tap to flip" hint on front of each card

Data needed:

  • 5-8 cards, each with:
  • Front label + title
  • Back label + title
  • Boolean: is this a "proof" card (gets gold treatment)

Structure:

<div class="flipper-grid">
    <div class="flipper-card" onclick="this.classList.toggle('flipped')">
        <div class="flipper-inner">
            <div class="flipper-front">...</div>
            <div class="flipper-back [is-proof]">...</div>
        </div>
    </div>
</div>

Pattern 5: Self-Assessment Cards (HTML/CSS only — no React)

Persuasive job: Makes the reader apply the argument to their own situation. Use near the end of the piece after the argument is complete.

How it works:

  • Grid of 3 cards (1 column on mobile)
  • Each card has a large faded number, a question title, and explanatory text
  • Cards have hover lift effect
  • Questions should be specific enough that the reader can answer immediately

Data needed:

  • 3 questions, each with:
  • Question (stated as something they can self-assess right now)
  • Context text (2-3 sentences expanding the question, with one for emphasis)

Structure:

<div class="cards-grid">
    <div class="card">
        <div class="card-number">1</div>
        <div class="card-title">Question text</div>
        <div class="card-text">Context with <em>emphasis</em>.</div>
    </div>
</div>

Pattern 6: Comparison Table (HTML only)

Persuasive job: Creates a visual punchline. Use when the argument has a list where one item is categorically different from the rest.

How it works:

  • Simple two-column table
  • Most rows are neutral
  • Final row is gold (text color + font-weight)
  • The contrast between neutral rows and the gold punchline row carries the point

Data needed:

  • 2 column headers
  • 4-6 rows of neutral content
  • 1 punchline row (gold)

THE PROSE-INTERACTIVE-PROSE PATTERN

This is the core rhythm that makes interactive narratives work. Every interactive is sandwiched:

  1. Setup prose — Makes a claim the reader might accept intellectually but hasn't felt. "Think about the last five prospect conversations you had..."
  2. Interactive — Makes them feel it. The accumulator fills up. The toggle reveals asymmetry. The sequencer shows transformation.
  3. Interpretation prose — Tells them what they just experienced and connects it to the next claim. "An advisor with documented client outcomes reduces that phase significantly..."

Never drop an interactive without setup and interpretation. An interactive without setup is a toy. An interactive without interpretation is an abandoned argument.


THE ARGUMENTATIVE ARC

The Proof Gap follows this progression. Different topics will vary, but the structural beats are consistent:

Beat 1: The Pattern (cream)

Open with a specific scenario. Not a statistic. Not a claim. A recognizable situation. "A consultant I worked with had helped a mid-market services company..."

The reader should think: "I've seen that."

Beat 2: The Cost(s) (dark + interactives)

Name what the pattern costs. Be specific. Use interactives to make the cost visceral. The Proof Gap names TWO costs (trust tax + competitor comparison), each with its own section and interactive.

The reader should think: "That's happening to me."

Beat 3: The Constraint (cream)

Name the real reason this hasn't been solved. NOT "you should do X." Instead: "Here's why X hasn't happened yet." This section reframes the problem. The Proof Gap reframes from "you need more marketing" to "your proof doesn't exist in a findable form."

The reader should think: "That's actually the problem."

Beat 4: The Shift (dark + interactive)

Show what changes when the constraint is removed. Use a sequencer or similar to show the transformation at multiple touchpoints. Keep it concrete — specific conversations that change, not abstract benefits.

The reader should think: "I want that."

Beat 5: Self-Assessment (dark, continued)

Three questions that make the reader locate themselves in the argument. These should be answerable immediately without data — gut-check questions.

The reader should think: "I know my answer, and it's not good."

Beat 6: The Starting Point (off-white or cream)

Remove the objection. "You already have the material." This is NOT the CTA. It's the permission to believe the shift is possible. Short section — 2-3 paragraphs.

The reader should think: "I could actually do this."

Beat 7: CTA (dark)

One closing quote (big-quote style). One headline. One sub-line. One button. One subtext line with logistics.

<section class="cta-section">
    <div class="container" style="margin-bottom: 3rem;">
        <p class="big-quote">"Your best client outcomes should be working 
        for you <em>permanently</em> — not evaporating after delivery."</p>
    </div>
    <div class="container">
        <h2>Ready to Close the Proof Gap?</h2>
        <p class="cta-sub">One line connecting the argument to the action.</p>
        <a href="[calendly-or-tool-link]" class="cta-button">Button Text</a>
        <p class="cta-subtext">60 minutes · Find the constraint · No obligation</p>
    </div>
</section>

NARRATIVE TRACKABILITY

Interactive narratives use multiple examples, characters, and scenarios across sections. When characters share similar roles (two women, both doing financial close work) or examples are structurally similar (two firms with recurring work problems), the reader loses track of who is who and which story they're in. This problem compounds across sections — the reader from Section 1 carries assumptions into Section 2, and similar details create false continuity.

Rules

One primary character per section. Each section's example should involve one person in one situation. A section can reference a general pattern ("most firms") but the story should follow one person. Don't blend a "your team" generalization with a specific character's story in the same section.

Re-establish at every section boundary. When a new section introduces a new character, establish them with enough distinguishing detail that the reader can't confuse them with a previous character. Don't rely on gender or pronouns alone — give them a specific role, industry, firm type, or deliverable that makes them distinct.

  • Weak: "She closes the books every month." (Who? The same woman from the previous section?)
  • Strong: "A tax firm founder in Austin closes the books every month." (New person, clearly.)

Differentiate similar roles. If two examples across the article involve people in similar positions (managing partner, firm founder, practice owner), give them at least TWO distinguishing details: different industry + different deliverable, or different firm size + different problem. One distinguishing detail is not enough — readers skim, and they'll miss a single differentiator.

Anchor pronouns within two sentences. After introducing a character, the first pronoun reference must appear within two sentences. If the character was introduced three paragraphs ago and a pronoun appears, the reader has to scroll back. Either re-establish or restructure.

Bad: "A managing partner hired a senior accountant specifically to own the month-end close. Six weeks of shadowing. Detailed handoff conversations. She was confident." — four sentences between the managing partner and "she." Reader has to work.

Good: "A managing partner hired a senior accountant to own the month-end close. The partner spent six weeks on shadowing and detailed handoff conversations. She was confident the process had been transferred." — "the partner" re-anchors before "she" lands.

Bridge between examples. When transitioning from one example to another within the same section or across sections, the bridge must do three things:

  1. Close the previous example explicitly.
  2. Signal the shift — make it unmistakable that a new scenario is starting.
  3. Open the new example with distinguishing context.

A subhead alone ("A Different Firm.") is the minimum viable bridge. A subhead plus a distinguishing lead sentence is better. A bare paragraph that introduces a new "she" or "he" without signaling the shift is a failure.

Numbers must trace. If Section 1 calculates $6,400 and Section 2 calculates $36,000, the difference must be clear (different firm size, different billing rate, different hours). If the numbers shift without explanation, the reader assumes it's an error — and stops trusting the math in the rest of the piece. When a bridge paragraph references costs from multiple examples ("$6,400 here, $36,000 there"), both numbers must be traceable to established calculations.

The thread test. After writing each section, pause and ask: if a reader arrived at this paragraph with no memory of the previous section, would they know who is being described and what scenario they're in? If the answer is no, the character needs re-establishing or the transition needs strengthening.


WRITING STYLE

Tone

  • Second person ("you", "your") — the reader is the subject
  • Specific, not abstract — "$120K in additional revenue", not "significant results"
  • Present tense for patterns — "Every new prospect starts at zero"
  • Confident but not aggressive — states what happens, doesn't lecture
  • Uses for em-dashes,   to prevent orphan words at line ends
  • Uses and / for proper typography

Paragraph rhythm

  • Short paragraphs (2-4 sentences typical)
  • Occasional single-sentence paragraphs for emphasis
  • Lead paragraphs are slightly longer (set the scene)
  • Never more than 3 paragraphs before a visual element breaks up the text

Emphasis

  • used sparingly — 1-2 per section maximum
  • for key reframe words, especially in quotes
  • Gold italic in quotes for the pivotal word/phrase
  • Never bold AND italic together

Specific language patterns from the golden example

  • "That's the [concept name]." — naming the pattern after describing it
  • "Here's what [X] actually [does/looks like]:" — transition to interactive
  • Questions directed at the reader: "How many started with you explaining..."
  • Concrete quantities over abstractions: "the first twenty to thirty minutes"

CSS REFERENCE

Background Modes

Interactive narratives use BOTH light and dark backgrounds (unlike micro-tools which are dark-only).

/* Light sections */
section.cream { background: #f5f4f0; color: #1a1a1a; }
section.off-white { background: #faf9f7; color: #1a1a1a; }

/* Dark sections */
section.dark { 
    background: linear-gradient(135deg, #1a1a1a 0%, #2a2a2a 100%); 
    color: #f5f4f0; 
}

Text color by background:

  • Cream/off-white sections: body text #4a5a6a (slate), headings #1a1a1a
  • Dark sections: body text rgba(245, 244, 240, 0.85), headings #f5f4f0
  • Eyebrows: always #b79d64 (gold)

Typography

h1, h2, h3, h4 { font-family: 'Cormorant Garamond', serif; font-weight: 400; }
body { font-family: 'Inter', -apple-system, sans-serif; font-weight: 400; font-size: 1rem; }
strong { font-weight: 500; } /* Not 600 or 700 — subtle emphasis */

/* Section headings */
section h2 { font-size: clamp(2rem, 4vw, 2.75rem); line-height: 1.15; letter-spacing: -0.01em; }
section h3 { font-size: 1.5rem; font-weight: 500; }

/* Body text */
section p { font-size: 1rem; line-height: 1.85; margin-bottom: 1.5rem; }
.lead { font-size: 1.15rem; }

/* Micro-labels (eyebrows, stat labels, etc.) */
.section-eyebrow {
    font-size: 0.65rem;
    font-weight: 500;
    letter-spacing: 0.2em;
    text-transform: uppercase;
    color: #b79d64;
}

Google Fonts Import

<link href="https://fonts.googleapis.com/css2?family=Cormorant+Garamond:ital,wght@0,400;0,500;0,600;1,400;1,500&family=Inter:wght@300;400;500;600&display=swap" rel="stylesheet">

Nav CSS

nav {
    position: fixed;
    top: 0;
    width: 100%;
    background: rgba(26, 26, 26, 0.95);
    backdrop-filter: blur(10px);
    border-bottom: 3px solid #b79d64;
    padding: 20px 5%;
    display: flex;
    justify-content: space-between;
    align-items: center;
    z-index: 100;
}

Viz Container

.viz-container {
    background: var(--charcoal);
    border: 1px solid rgba(245, 244, 240, 0.1);
    margin: 48px 0;
    min-height: 380px;
}

/* When inside a dark section */
section.dark .viz-container {
    background: rgba(245, 244, 240, 0.03);
}

Responsive Breakpoints

/* Tablet: 968px */
@media (max-width: 968px) {
    section { padding: 60px 5%; }
    .hero { padding: 120px 5% 80px; }
}

/* Mobile: 768px */
@media (max-width: 768px) {
    nav { padding: 16px 5%; }
    .logo-text { font-size: 1.4rem; }
    .logo img { height: 32px; }
    .nav-links { display: none; }
    .hero { padding: 100px 5% 60px; min-height: auto; }
    .cards-grid { grid-template-columns: 1fr; }
    .flipper-grid { grid-template-columns: 1fr 1fr; }
    section { padding: 60px 5%; }
}

Animation

@keyframes fadeInUp {
    from { opacity: 0; transform: translateY(16px); }
    to { opacity: 1; transform: translateY(0); }
}

Used on detail panels in the sequencer (applied via style: { animation: "fadeInUp 0.4s ease-out" }).

Gold Scrollbar

::-webkit-scrollbar { width: 10px; }
::-webkit-scrollbar-track { background: #1a1a1a; }
::-webkit-scrollbar-thumb { background: #b79d64; border-radius: 5px; }
::-webkit-scrollbar-thumb:hover { background: #c4aa74; }
html { scrollbar-width: thin; scrollbar-color: #b79d64 #1a1a1a; }

FOOTER

Standard Advisory OS footer. Identical across all pages:

<footer>
    <div class="footer-links">
        <a href="https://advisoryos.ai/contact">Contact</a>
        <a href="https://www.linkedin.com/in/itskathrynbrown/" target="_blank">LinkedIn</a>
        <a href="https://substack.com/@kathrynhbrown" target="_blank">Substack</a>
        <a href="https://creatingyourplan.com" target="_blank">Creating Your Plan</a>
    </div>
    <p class="footer-legal">&copy; 2026 Creating Your Plan. All rights reserved. | 
    <a href="https://creatingyourplan.com/privacy-policy">Privacy Policy</a> | 
    <a href="https://creatingyourplan.com/terms-of-service">Terms of Service</a> | 
    <a href="https://creatingyourplan.com/disclaimer">Disclaimer</a></p>
</footer>

CTA STRATEGY

The CTA connects the argument to an action. It does NOT sell cold.

Pattern:

  1. Closing big-quote (the argument's most quotable line)
  2. Headline framed as readiness question: "Ready to [verb] the [concept]?"
  3. Sub-line connecting the argument to what the action delivers
  4. Button with specific action text (not "Learn More")
  5. Subtext with logistics: duration + what they get + no-obligation note

The CTA can point to:

  • A booking link (Calendly) for a diagnostic or consultation
  • A micro-tool that goes deeper on one aspect of the argument
  • A companion article that breaks down the methodology

INTERACTIVE-TO-ARGUMENT MATCHING

This is the design decision layer. When planning which interactives to include, match the argumentative move to the pattern:

Argumentative MoveInteractive PatternWhy
"This small thing compounds"AccumulatorWatching it build feels different than reading a total
"These look the same but aren't"Toggle ComparisonSide-by-side makes asymmetry instant
"Everything changes at once"SequencerMultiple transformation points in one experience
"They see something different than you think"Flip CardsThe reveal creates surprise
"One of these is different"Comparison TableThe gold row is a visual punchline
"Ask yourself this"Self-Assessment CardsForces self-application

Guideline: 2-4 interactives per piece. One is too few (feels like an article with a widget). Five+ is exhausting. The Proof Gap uses 3 React interactives + flip cards + self-assessment cards + comparison table = 6 total, but 3 of those are lightweight HTML-only elements.


BUILD SEQUENCE

  1. Argument first. Write the complete argumentative arc as prose BEFORE designing any interactives. Every claim, every transition, every reframe. No code.
  1. Mark interactive opportunities. Read through the prose and flag every claim that would land harder as an experience. Not every claim qualifies — only the ones where "feeling it" is materially different from "reading it."
  1. Match patterns. For each flagged claim, select the interactive pattern that serves that specific persuasive move (use the matching table above).
  1. Design the data. For each interactive, fill out the data structure required by that pattern (documented in each pattern section above).
  1. Build. HTML structure first (all sections, all containers), then CSS (copy from this skill), then static interactives (flip cards, tables, cards), then React interactives.
  1. QC: The sandwich test. For every interactive, verify: Is there setup prose before it? Is there interpretation prose after it? If either is missing, the interactive is orphaned.
  1. QC: The removal test. For every interactive, ask: If I removed this, would the argument lose something the prose alone can't replace? If not, the interactive is decorative — cut it or replace it with one that earns its place.

QC CHECKLIST

Structure

  • [ ] Hero has eyebrow, h1 with gold , subtitle with specific scenario
  • [ ] Sections alternate backgrounds (no two cream adjacent)
  • [ ] Every section has an eyebrow
  • [ ] Prose uses .container (700px), interactives use .container-wide (900px)
  • [ ] Nav has 2-4 anchor links matching section eyebrows

Interactives

  • [ ] Every interactive has setup prose before it
  • [ ] Every interactive has interpretation prose after it
  • [ ] Each interactive serves a specific persuasive job (not decorative)
  • [ ] React components use createElement syntax (no JSX)
  • [ ] Play/toggle buttons use Advisory OS styling (gold text, subtle borders)
  • [ ] All interactives work on mobile (grid columns collapse)

Writing

  • [ ] Opens with a specific scenario, not a generic claim
  • [ ] Uses second person throughout
  • [ ] Specific numbers where possible ($120K, 25 minutes, etc.)
  • [ ] Proper typography: , , /,  
  • [ ] No orphan words at end of headlines (use  )
  • [ ] 3 self-assessment questions near the end
  • [ ] Closing section removes the "I can't do this" objection

Narrative Trackability

  • [ ] One primary character per section?
  • [ ] Characters re-established at every section boundary? (No bare pronoun introductions)
  • [ ] Similar roles differentiated by at least two details? (Industry + deliverable, firm size + problem)
  • [ ] Every pronoun anchored within two sentences of character establishment?
  • [ ] Bridges between examples close previous, signal shift, open new with distinguishing context?
  • [ ] Numbers consistent across sections? (Or differences explicitly explained)
  • [ ] Thread test passed? (Reader knows who and what at every paragraph without scrolling back)

CTA

  • [ ] Closing big-quote present
  • [ ] CTA headline framed as readiness question
  • [ ] Button text is specific action (not "Learn More")
  • [ ] Subtext includes logistics (duration, what they get)

Brand

  • [ ] Gold scrollbar present
  • [ ] Cormorant Garamond for headings, Inter for body
  • [ ] Advisory OS nav with logo
  • [ ] Standard footer with all links
  • [ ] OG meta tags in

WHAT THIS SKILL DOES NOT COVER

  • Argument development: How to develop the thesis and arc from raw observations. That requires the Topic Brief Template (separate document).
  • Seed extraction: How to identify narrative-worthy patterns from client work or content reactions. That requires the Seed Capture process (separate document).
  • Interactive pattern library expansion: As new golden examples are built, new interactive patterns will be added to this skill. The current six patterns come from a single golden example.
  • Campaign integration: How this piece connects to micro-tools, distribution, and the broader campaign. That's in the Campaign Map.

Skill file reverse-engineered from: The Proof Gap (proof-gap-evergreen.html) Created: February 12, 2026