← Vault Index
Source: business/marketing/campaign-production-workflow.md

CAMPAIGN PRODUCTION WORKFLOW

From Concept Brief to Finalized Evergreen Campaign


OVERVIEW

This is the end-to-end workflow for producing a multi-asset campaign for Advisory OS. Each campaign follows the same architecture: an interactive thought leadership article, two micro-tools, a briefing video (recording visual + landing page), and a distribution package (LinkedIn posts, emails, Substack notes, DM sequences). The campaign runs for one week with a timer-based expiration on the briefing, then converts to an evergreen asset set.

Campaigns produced using this workflow:

Time to produce: 3–5 working sessions when the workflow is followed. Longer when steps are skipped or when assets are built before upstream decisions are locked.


PHASE 0: CONCEPT EXTRACTION

Input: Client work, observation, or existing framework Output: Campaign Input Brief

What Happens

The concept comes from one of three sources: something that happened in client work, a pattern observed across multiple clients, or an existing framework that needs to be campaigned. An interview agent (or structured conversation) extracts the core insight, the case material, and the asset architecture.

The Deliverable

A Campaign Input Brief containing:

Skills & References

Problems We've Had


PHASE 1: CAMPAIGN ARCHITECTURE

Input: Campaign Input Brief Output: Campaign Map + Narrative Arc

What Happens

The brief gets translated into a campaign map (what assets, what sequence, what links to what) and a narrative arc for the thought leadership article. Decisions get locked here — not during the build.

The Deliverables

Campaign Map — visual or structured document showing:

Narrative Arc — prose outline of the article:

The Weekly Rhythm

DayLinkedInEmailOther
MondayNothing. People catching up.
TuesdayContent Launch (article + tool)Campaign launches
WednesdayTL Post #1 (no CTA, article link in first comment)Live workshop (11am ET, optional)
ThursdayDrive to LinkedIn or Story
FridayHand-raiser post (keyword → DM → tool)Direct Ask
SaturdayBriefing launch emailBriefing video goes live
SundayBriefing expires at midnight ET

Note: This rhythm evolved across campaigns. The Subtract/Add campaign tried to launch everything simultaneously. By the Silent List campaign, the sequence was staggered. The staggered approach works better — each day has one primary action.

Skills & References

Problems We've Had


PHASE 2: INTERACTIVE THOUGHT LEADERSHIP ARTICLE

Input: Narrative Arc from Phase 1 Output: Ship-ready HTML article

What Happens

The article is the campaign's anchor asset. It's an interactive HTML page with embedded visualizations that the reader engages with while reading. It follows the no-act-structure format (title only, no Act I/II/III labels) and alternates between light and dark sections.

Build Sequence

  1. Write the full narrative in prose first. Not HTML. Not code. Just the story, section by section. Get the voice right before touching any code.
  2. Design the interactive elements. For each section, decide: does this need a visualization? What does the reader interact with? What does it reveal? Use the "earns its place" test — if the element doesn't create a moment of revelation that text alone can't, cut it.
  3. Build the HTML. Follow the Interactive Builder SOP and the interactive-narrative-SKILL.md. Golden examples are the standard.
  4. QC pass — three checklists, every build. Run all three before flagging the article as ready:
  1. Polish pass. Brand compliance (never gold text on cream backgrounds — use #6b5d3e), footer matches standard, nav matches standard, all links work.

Skills & References

Problems We've Had


PHASE 3: MICRO-TOOLS

Input: Tool concepts from Phase 1 Output: Two ship-ready HTML tools (typically one revelation tool + one calculator/diagnostic)

What Happens

Each campaign produces two micro-tools. They serve different purposes in the funnel: one is typically the hand-raiser deliverable (sent via DM after someone comments a keyword), the other is referenced in the article or briefing. Both drive toward the Systems Diagnostic.

Tool Types

TypePurposeExample
Revelation Tool"Find your number" — user inputs data, tool reveals something they didn't knowSilent List Finder, Story Finder
Calculator"Calculate the cost" — user inputs data, tool quantifies the gapDead List Calculator, Subtract/Add Calculator
Diagnostic"Score your situation" — user answers questions, tool categorizes their stateSubtract/Add Diagnostic, HQP Scorer

Build Sequence

  1. Write the spec. Inputs, outputs, calculation logic, result tiers, copy for each state. Get this approved before touching code.
  2. Build the HTML. Follow the micro-tool-SKILL.md. Single file, no external dependencies, all CSS custom properties hardcoded (not var() — micro-tools use JS-generated HTML that breaks var() references).
  3. Math validation. Run every input combination through the calculator. Check edge cases (zero inputs, maximum inputs, minimum inputs). Verify the output ranges are credible.
  4. Visual QC. Brand compliance, contrast, responsiveness, all interactive states work.
  5. Copy QC. Run copy-qc-agent against all visible text, including result descriptions and bridge copy.

Skills & References

Problems We've Had


PHASE 4: BRIEFING

Input: Campaign case material, completed article and tools Output: Briefing interactive (recording visual) + Briefing script + Briefing landing page

What Happens

The briefing is a 15–20 minute screen-recorded video. It consists of three assets that work together: the interactive HTML the presenter scrolls through (the visual layer), the script the presenter reads (the audio layer), and the landing page where the video lives (the delivery layer).

4A: Briefing Interactive (Recording Visual)

The presenter opens this HTML in Chrome, records their screen, and narrates over it. All interactions are hover-driven or scroll-triggered — no buttons, no clicks.

Critical distinction: The briefing is a behind-the-scenes client walkthrough, NOT the article restated with different CSS. The article teaches the framework. The briefing shows what happened when you applied it to a real client.

Build sequence:

  1. Map the 7-beat narrative arc (Practice → Discovery → Findings → Rewrite → Results → Gap → Decision)
  2. Select interaction patterns per beat (profile cards, stagger lists, hover-expand, side-by-side zones, summary numbers, layer stack, offer cards)
  3. Build the HTML following briefing-interactive-SKILL.md
  4. QC against the checklist

4B: Briefing Script

Word-for-word voiceover synced to the interactive HTML. Stage directions reference specific scroll and hover targets in the HTML.

Build sequence:

  1. Read the interactive HTML — note every section, every hover element
  2. Write the client story (who, what they thought the problem was, what you found, what you changed, what happened, where they got stuck)
  3. Write beat by beat with stage directions
  4. Read aloud while scrolling the HTML — verify sync
  5. Write production notes

4C: Briefing Landing Page

Timer-based delivery wrapper. Two states: watch (video + countdown) and expired (four path cards to campaign assets).

Build sequence:

  1. Copy the template (Subtract/Add briefing landing page)
  2. Swap content: title, subtitle, context section, expired path cards, links
  3. Set expiration date in CONFIG (UTC)
  4. Placeholder Vimeo URL until recording is done

Skills & References

Problems We've Had


PHASE 5: DISTRIBUTION CONTENT

Input: All core assets (article, tools, briefing) completed Output: LinkedIn posts, emails, Substack notes, DM sequence, LinkedIn image card

What Happens

Distribution content is the last thing built because it references the core assets. Every claim in a LinkedIn post, every tool description in an email, every link in a DM must point to something that exists and works.

Asset Inventory Per Campaign

AssetCountNotes
LinkedIn TL posts2–3Mon/Wed, no CTA, Steve Cunningham format
LinkedIn hand-raiser post1Friday, keyword → DM → tool
LinkedIn image card1HTML-rendered, screenshot at 1200×1200
Emails5Content Launch, Drive to LinkedIn, Story, Direct Ask, Briefing Launch
Substack notes3Cross-post LinkedIn insights
DM sequence4–5 messagesKeyword trigger → qualify → tool link → bridge → diagnostic

Build Sequence

  1. LinkedIn TL posts first. They set the week's narrative. No CTA, article link in first comment only.
  2. Hand-raiser post. Keyword, tool deliverable, DM track.
  3. Emails. In send order (Tuesday through Saturday).
  4. Substack notes. Cross-posted from LinkedIn insights with minor adaptation.
  5. DM sequence. Trigger → qualify → deliver → bridge → offer.
  6. LinkedIn image card. HTML file, screenshot for upload.

QC Pass — per asset, every build

Each distribution asset gets its own QC before shipping:

After fixing any QC failures, re-run the same QC to verify. The final action before "ship-ready" is a clean pass — not a fix.

Skills & References

Problems We've Had


PHASE 6: QC & POLISH

Input: All assets built Output: Ship-ready campaign

What Happens

A systematic QC pass across every asset. This is not "does it look okay" — it's running each asset through its specific checklist.

QC Sequence

  1. Article: Interactive narrative QC + copy QC + brand compliance
  2. Tool 1: Math validation + visual QC + copy QC
  3. Tool 2: Math validation + visual QC + copy QC
  4. Briefing interactive: Briefing interactive QC checklist
  5. Briefing script: Briefing script QC checklist (including script-to-interactive sync)
  6. Briefing landing page: Landing page QC checklist (both states tested)
  7. Distribution content: Copy QC on every piece + link verification
  8. Cross-asset congruence: Numbers match across assets. Tool descriptions match actual tools. Case details are consistent within each asset (article case ≠ briefing case, but each is internally consistent).

The QC Files

Asset TypeSkill FileQC Checklist
Articleinteractive-narrative-SKILL.md(in Interactive Builder SOP)
Micro-toolsmicro-tool-SKILL.md, revelation-tool-SKILL.md(embedded in skill files)
Briefing interactivebriefing-interactive-SKILL.mdqc-checklist-briefing-interactive.md
Briefing scriptbriefing-script-SKILL.mdqc-checklist-briefing-script.md
Briefing landing pagebriefing-landing-page-SKILL.mdqc-checklist-briefing-landing-page.md
Evergreen page + distributionevergreen-assembly-SKILL.mdqc-checklist-evergreen-assembly.md
All copycopy-qc-agent.md
LinkedIn postslinkedin-tl-post-system-instructions.md
Hand-raiserslinkedin-handraiser-SKILL.md

Problems We've Had


PHASE 7: EVERGREEN ASSEMBLY

Input: Completed campaign (post-launch week) Output: Evergreen page (single HTML) + Evergreen distribution set (multi-angle content menu)

What Happens

Two builds. First, the evergreen page — a single HTML that recomposes the article's narrative with both tools embedded inline, a briefing section, a conversion gap, and a CTA. This becomes the campaign's permanent home, replacing the standalone article as the primary link. Second, the distribution set — multiple angle variations of posts, emails, and notes so the campaign can be rerun with different hooks pointing to the evergreen page.

7A: The Evergreen Page

The article, tools, and briefing were built as separate HTML files during the launch week. The evergreen page weaves them into one scrollable experience.

What happens to the article: Sections get condensed (~2 paragraphs max between tools), rewritten to point toward the next tool rather than stand alone. The article's conclusion gets removed (the tools replace it). The article's CTA gets replaced by the conversion gap + CTA sections. Article visualizations (React interactives) are preserved if they do persuasion work.

What happens to the tools: Standalone chrome (nav, footer, header) stripped. CSS/JS namespaced with prefixes (calc-, diag-, sf-, etc.) to avoid collisions when two tools share one page. Tool intro screens preserved — they co-exist with the narrative setup above. No var() in innerHTML.

Section arc: Hero → Narrative → Tool 1 → Narrative → Tool 2 → Briefing → Conversion Gap → CTA. Backgrounds alternate cream/dark/off-white. Tool sections always dark. Never two adjacent sections with the same background.

Conversion gap: Three points, each following "You can [X]. You can't [Y] — because [Z]." Leads directly to CTA with no intervening narrative.

Section nav: Fixed/sticky, highlights on scroll. Both tools, briefing, and diagnostic get nav links. Hero and conversion gap do not.

7B: The Distribution Set

Angle expansion: Mine angles from briefing (richest source), article, tools, and diagnostic results. Filter to 3–5 distinct entry emotions. Write fully for each.

Content menu per campaign:

Campaign combos: 3+ pre-assembled weekly cycles. Each combo: 2 TL posts + 1 hand-raiser + 5 emails + 3 notes, tonally cohesive from one emotional family.

Skills & References

Problems We've Had


LIVING DOCUMENT PRACTICES

During Each Build Session

Maintain a working document that captures:

Update and output the working document at the end of every session.

Across Campaigns

After each campaign, update:


FULL ASSET INVENTORY PER CAMPAIGN

For reference — the complete set of assets a fully-built campaign produces:

Core Assets (Phases 2–4):

Distribution Assets (Phase 5):

Evergreen Assets (Phase 7):

Total: ~25–30 individual assets per campaign + 1 evergreen page


BUILD ORDER SUMMARY

Phase 0: Concept Extraction → Campaign Input Brief
Phase 1: Campaign Architecture → Campaign Map + Narrative Arc
Phase 2: Article Build → Ship-ready interactive HTML
Phase 3: Micro-Tools Build → Two ship-ready HTML tools
Phase 4: Briefing Build → Interactive + Script + Landing Page
Phase 5: Distribution Content → LinkedIn, Email, Substack, DMs
Phase 6: QC & Polish → Systematic checklist pass on everything
Phase 7: Evergreen Assembly → Page build (article + inline tools) + angle expansion + combos

The rule: Each phase's output is the next phase's input. Don't skip ahead. The most expensive mistake in this workflow is building assets before upstream decisions are locked.

The QC rule: Every asset follows Build → QC → Fix → Re-QC → Ship. QC runs after the first build AND after every round of fixes. No asset ships on a fix pass alone — the final action before "ship-ready" is always a clean QC pass with zero failures. This applies to every phase that produces an asset (Phases 2–5, 7).


Workflow document — first pass Produced from: Subtract/Add, Proof Gap, Politeness Premium, and Silent List campaigns Last updated: February 25, 2026