Ad-voice-profile reads an expert talking — from a video sales letter (VSL — a long-form video pitch), YouTube videos, podcast appearances, webinar recordings, or sales call transcripts — and extracts a structured Voice Book. The Voice Book (Expert Voice Book) is the single artefact that tells every downstream script what phrases the expert actually uses, what their ideal customer profile (ICP) fears, how they deliver proof, and how they reference their method without revealing it. It is built in the Avatar Research phase and is the first thing /ad-script reads before writing a word. If it is empty for the expert, /ad-script halts. Operator edits to the Voice Book are made in the Approval Console — the Supabase row is the system of record, the markdown mirror is the human-readable export.
This skill is not called directly during the main pipeline run. It is an onboarding skill: run it once when a new expert joins, and again when their offer positioning materially changes. The always-on Hermes agents — the background fleet that keeps swipe, competitor, and performance data fresh — work from the Voice Book this skill creates. Once the Voice Book exists, every /ad-script invocation loads it automatically from Supabase via the expert_profile view. The operator can trigger a Voice Book rebuild at any time from the Approval Console.
All calls go through OpenRouter and are logged with model and cost to the agent_run audit table. Counting and threshold checks are plain code — never a model.
| Task | Model | Why |
|---|---|---|
| Transcript ingest — chunking, tokenising, and writing raw text to Supabase | claude-haiku-4-5 via OpenRouter | Pure structured extraction with no synthesis judgement. Cheapest model capable of following a schema. Deterministic-first rule: ingestion is a mechanical transformation. |
| Deduplication and tagging extracted phrases against the controlled vocabulary (hook types, emotional registers, structural patterns) | claude-sonnet-4-6 via OpenRouter | Needs mid-tier reasoning to match against a fixed taxonomy without inventing new categories. More capable than Haiku, cheaper than Opus 4.8 — the right cost-to-accuracy trade-off for a lookup-style task. |
| 10-category voice extraction — the core synthesis that produces all quotes, rhythm classification, mechanism teaser language, and ICP (ideal customer profile) emotional arc | claude-opus-4-8 (Opus 4.8) via OpenRouter | The highest-leverage single step in the entire ad pipeline. Every script written for this expert depends on this extraction being accurate. Opus 4.8 is the floor — not a preference. Every call is logged to the agent_run audit trail with model ID, provider, and cost. |
| First-time voice capture for a brand-new expert with no prior profile and no comparable reference to cross-check against | claude-fable-5 (Fable 5) via OpenRouter — OPT-IN ONLY | Ceiling job: one-shot synthesis with nothing to validate against. 2x the cost of Opus 4.8 and a mandatory 30-day data retention obligation with the model provider. Requires operator sign-off before use. Never use for subsequent updates. Never use if the transcripts contain sensitive customer PII (personally identifiable information) without explicit written approval. |
| Validation gate scoring — counting which of the 10 categories meet their minimum quote counts and computing the final score | Plain code — no language model | Deterministic-first rule. Whether 5 opening phrases were found is a count. Handing this to a model introduces fabrication risk. Code runs it; the score is exact. The status field on the Supabase row (current vs draft) is set by this code path — never manually. |
| Solution-mechanism scrub before upsert — checking the positioning content for any step-sequence vocabulary that should never appear in ad-facing storage | Plain code — no language model | Token scan against a list of mechanism step terms drawn from the GATED extraction section. If a match is found the run halts before writing a single row to Supabase. Completeness is never the model's job. |
What goes in, what comes out, and where it lives.
| Input | What it is |
|---|---|
| Transcript source(s) | One or more full-text transcripts of the expert speaking. Accepted formats: a video sales letter (VSL — a long-form video pitch, typically 15–60 minutes), YouTube video transcripts from the ad-organic-scraper tool run in OWNED mode (meaning pointed at the expert's own channel), podcast episode transcripts, webinar recordings, or sales call recordings. Each source must be at least 500 words and must contain the expert doing the majority of the talking. Minimum one source required. Gold standard: a VSL plus three or more YouTube videos. If ad-organic-scraper has already been run in OWNED mode, its Section 4 Voice Extraction Summary is valid starting material and can be passed in alongside other transcripts. |
| Expert identifier | The short namespace label for the expert — for example ida, alba, or elena. This routes the upsert to the correct Supabase row and writes the markdown mirror to the correct path (orchestration/expert-config/<expert>/voice-book.md). |
expert_profile table — one row per expert, keyed on expert_namespace. This is the system of record. Layer 2 of the seven data layers.| Field | What it means |
|---|---|
| expert_namespace | Upsert key — e.g. ida, alba, elena. Every query for a specific expert reads IN (expert_namespace, 'shared'); the expert-specific row wins on any conflict. |
| voice_book_text | The full extraction as a single text block — all 10 extraction categories as raw output before they are sectioned into the JSONB keys below. Preserved for auditability. |
| voice_book_sections.tone | Signature opening phrases, mid-flow connectors, emphasis words, and conversational markers from extraction Category 1. These are the exact recurring phrases that make a script sound like this expert — not a copywriter. |
| voice_book_sections.vocabulary | The vocabulary bank and sentence rhythm classification from Category 1 — every word the expert uses 3 or more times that is not a common word (the expert's personal lexicon), plus their rhythm pattern (short punchy, long run-on, fragment heavy, or mixed). |
| voice_book_sections.proof_points | The proof framing data from Category 5 (named student transformations with specific results and timeframes, number ranges for first wins and full transformations) plus credibility anchors from Category 2 (origin story, credentials, social proof with numbers). The full solution mechanism is deliberately excluded — never stored here. |
| voice_book_sections.objections | The ICP (ideal customer profile) emotional arc from Category 4 — the specific frustrations the expert names, the approaches their audience has already tried, the failed attempts, and the emotional vocabulary the expert uses to describe being stuck. This becomes the mirror language in every ad script. |
| voice_book_sections.positioning | The offer positioning from Category 6 plus the ad-safe mechanism reference phrases from Category 3 only. What the programme is, what it is not, what the expert's named method is called, and the specific teaser phrases the expert uses to reference the method without revealing how it works. The full solution mechanism — the step sequence, how it actually works — is never stored here. Only the teaser language and contrast phrases that are safe to use in ads. |
| status | Set to current when the plain-code validation gate returns 7 or more out of 10 categories meeting their minimum quote counts AND the upsert is confirmed written. Set to draft when the score is below 7. Never set manually — only the code gate triggers this transition. ad-scripter-write halts if this field is not current for the target expert. |
| validation_score | Integer 0–10. The plain-code count of how many extraction categories met their minimum quote threshold. Stored on the row so subsequent runs can track improvement over time. |
| last_exported_at | Timestamp of when the markdown mirror file (voice-book.md) was last written. Used to detect when the file is out of sync with the database row (SHA hash comparison). |
| created_by_run_id | Foreign key to the agent_run row for the first extraction run for this expert. |
| updated_by_run_id | Foreign key to the agent_run row for the most recent upsert. Stamped on every update so any Voice Book state can be traced back to the exact run that produced it. |
orchestration/expert-config/<expert>/voice-book.md — regenerated on every successful upsert. SHA-mirrored: the file's content hash is stored alongside last_exported_at so any out-of-sync state is detectable. This is the human-readable working surface for operators and copywriters. Supabase is the live record; this file is derived from it.| Section | What it contains |
|---|---|
| Frontmatter | Machine-readable block at the top: expert name, status, last-reviewed date, source transcripts used, and the list of downstream skills that consume this document. |
| 1. Signature Sentence Structures | The recurring structural shapes in the expert's copy — derived from voice_book_sections.tone. A script that sounds like them will contain most of these patterns. |
| 2. Vocabulary Bank | Words the expert uses and words they never use — derived from voice_book_sections.vocabulary. Operators scan this list against any draft before sending to scripter-polish. |
| 3. Proof Framing Patterns | Named student transformations, number ranges, and credibility anchors — derived from voice_book_sections.proof_points. The format a proof block must match to feel authentic. |
| 4. ICP Emotional Arc | The emotional journey the buyer takes — frustrations, failed attempts, emotional vocabulary — derived from voice_book_sections.objections. Mirror language for hooks and body copy. |
| 5. Mechanism Language and Offer Positioning | The teaser phrases, contrast language, and programme positioning — derived from voice_book_sections.positioning. The only mechanism language that is safe to use in ad scripts. |
agent_run table — opened at start, closed at end of every run| Field | What it means |
|---|---|
| agent_name | Always ad-voice-profile. |
| triggered_by | Always operator — this skill is never cron-triggered. It only runs when a human explicitly initiates it. |
| expert_namespace | Which expert this run processed — e.g. ida. |
| status | One of: success (upsert written, score ≥ 7/10), partial (upsert written, score below 7 — gaps logged in status_detail), failed (upsert not written — error in status_detail), or halted (solution-mechanism scrub fired, or Supabase unreachable — zero rows written, never treated as an empty success). |
| input_hash | SHA-256 fingerprint of the transcript source(s). Used to detect if the same transcripts are submitted twice without change. |
| status_detail | Human-readable explanation of any non-success status: which categories missed minimums, which source type would fill the gap, or which mechanism phrase triggered the solution-mechanism scrub. |
ida. This is the 80/20 extract a copywriting skill loads from Supabase at Phase 0 before writing any ad. Source: orchestration/expert-config/ida/voice-book.md — real content, badge b-real. Sections 1 and 2 shown; the full document also includes Proof Framing Patterns (Section 3), ICP Emotional Arc (Section 4), and Mechanism Language and Offer Positioning (Section 5).## 1. Signature Sentence Structures
### 1.1 The Hard Landing Repeat
A single number or phrase lands twice, with nothing in between.
The second landing is the weight.
> "30 years. 30 years."
> "Eight thousand a month. Working four days a week."
> "Five customers. Six weeks."
Rule: The repeat is always shorter than the setup. Never three repetitions.
Never qualifying the number mid-repeat ("30 years of experience" as the
second beat kills it).
### 1.2 The Empathy Opener
Starts with "I get it" or "I speak to people in this position every single
week." Immediately follows with a mirror of the viewer's internal monologue —
in their language, not hers.
> "I get it. You've spent twenty years building someone else's business and
> you're wondering if it's too late to build your own."
Rule: Never skip the specific. "I get it. It feels hard." is not Amelia.
"I get it. You're 52, you've done everything right, and you're sitting across
from a 30-year-old who's never worked a real job in their life." is Amelia.
### 1.3 The Direct Truth Bridge
"Here's the truth" or "Honestly" followed immediately by the reframe.
> "Here's the truth. Therapy might help you cope with burnout.
> It won't give you a step-by-step system to replace your income."
Rule: One reframe per truth bridge. Never stack two.
### 1.4 The Three Nots + Positive
Three things the approach does not require, then the single positive
framed in terms of what the buyer already has.
> "The approach we teach doesn't require a degree. It doesn't require
> a following. It doesn't require you to start a business and pray someone
> finds you. It's built around one skill that your life experience actually
> makes you better at, not worse."
Rule: The three nots are things the buyer is currently afraid they lack.
The positive is something they already possess.
---
## 2. Vocabulary Bank
### Words Amelia uses
- "I get it" / "Here's the truth" / "Honestly" (empathy entry)
- "the approach we teach" / "the system" / "a step-by-step system"
(mechanism teaser — these are the ONLY phrases used; never improvise new ones)
- "your next chapter" / "something that's mine" / "tired of asking permission"
(ICP mirror — these are the viewer's words, not hers)
### Words Amelia never uses
- Game-changer, life-changing, transformational, hustle, grind
- Passive income, six figures, side hustle, freedom lifestyle
- Em dashes, smart quotes, exclamation marks in scripted delivery
expert_profile row is the live record; voice-book.md is derived from it and is regenerated on each update.| Term | In full / what it means |
|---|---|
| Voice Book | Expert Voice Book (Voice Book) — The structured artefact produced by ad-voice-profile. Captures exactly how an expert speaks: their signature phrases, the language their ideal customer profile (ICP) uses, how they deliver proof, how they reference their method safely, and what words they never use. Stored in the Supabase expert_profile table (Layer 2 of the seven data layers) as a JSONB column with five sections. Also exported as a human-readable markdown mirror at orchestration/expert-config/<expert>/voice-book.md. The old name "Layer 3 calibration" is deprecated — the correct name is Voice Book or Expert Voice Book. |
| VSL | Video Sales Letter — A long-form video, typically 15 to 60 minutes, where the expert walks the viewer through the problem, the mechanism, social proof, and an offer. The densest single source of voice data because it covers all funnel stages in one recording. |
| ICP | Ideal Customer Profile — The specific type of person the ad is trying to reach, defined by demographics, emotional state, past failed attempts, and the specific language patterns they use to describe their situation. The Voice Book's objections section captures ICP language verbatim from the expert's own content. |
| CPBC | Cost Per Booked Call — The advertising spend required to get one person to book a sales call with the expert. The primary success metric for high-ticket ad funnels like IDA's (Interior Design Academy, run by Amelia Fenmore) where the funnel goes: cold Meta ad → free training → booked sales call. |
| CPL | Cost Per Lead — The advertising spend required to acquire one lead, typically a free-training sign-up or email opt-in, measured before the booked-call step. |
| IDA | Interior Design Academy — The expert identity for Amelia Fenmore, an interior-design business coach. IDA cold Meta ads drive traffic to a free training, which converts to booked sales calls. The expert namespace in all IDA Supabase rows is ida. |
| Supabase | Supabase (database platform) — The PostgreSQL-based database that hosts the SKL ad creative system data layer. The expert_profile table — where the Voice Book lives — is Layer 2 of the seven data layers. Downstream skills read from Supabase views, never from Fibery directly at runtime. |
| Fibery | Fibery (project management and creative CRM) — The system of record for all IDA creative entities, their production status, and their Meta performance data. Hermes agents pull Fibery data into Supabase views after each daily sync. The operator's main work surface for the creative pipeline. |
| Approval Console | Approval Console — The operator-facing interface through which all Voice Book edits, script approvals, and gate decisions are made. The system captures both the raw output and the operator's edited final version; the delta between them is the agentic-performance signal used to improve future runs. |
| OpenRouter | OpenRouter (model routing proxy) — The API gateway through which all language model calls in this system are routed. Provides unified billing, model switching, and per-call logs (model ID, provider, cost) that feed the agent_run audit trail. |
| Hermes | Hermes (autonomous agent layer) — The always-on background fleet that keeps the Supabase data layers fresh: Curator-Hermes (swipe library), Voice-Hermes (expert voice monitoring), Sales-Hermes (sales intelligence), Scout-Hermes (daily competitor scan). These agents work from the Voice Book that ad-voice-profile creates — they do not replace it. |
| PII | Personally Identifiable Information — Any data that can identify a real individual — names, contact details, purchase history, call recordings. Relevant to the Fable 5 ceiling model: the 30-day mandatory data retention obligation with the model provider means customer PII in the synthesis prompt is held for 30 days. Requires explicit written approval before use. |
| CTA | Call to Action — The closing instruction in the ad telling the viewer what to do next. In IDA's funnel this is always "watch the free training" — never the programme name, never a price. |
| VSR | View-to-Subscribe Ratio — A YouTube organic engagement signal used by ad-organic-scraper to detect high-performing videos relative to a channel's baseline. Used upstream of ad-voice-profile — ad-organic-scraper in OWNED mode identifies which videos to transcribe before this skill runs. |
| HITL | Human In The Loop — The principle that no autonomous execution happens in the main creative pipeline in V1 without operator approval at every gate. Ad-voice-profile is operator-triggered by design — it is never scheduled or run autonomously. |
| SHA-256 | Secure Hash Algorithm 256-bit — A one-way mathematical function that converts any input into a fixed-length fingerprint. Used in the agent_run table to fingerprint input transcripts (detecting duplicate runs) and in the voice-book.md export to detect when the file is out of sync with the Supabase row. |
| MCP | Model Context Protocol — A standardised interface that lets AI agents call external services as tools. The Fibery MCP is used by Hermes agents to pull creative and performance data from Fibery into Supabase without a custom API connector. |
| SKL | Stealth Kairos Labs — The company that built and operates this ad creative system. The Supabase instance, the Hermes agents, and the Fibery pipeline are all SKL infrastructure. |
| DTC | Direct to Camera — A video ad format where the presenter speaks directly into the camera lens, creating a one-on-one feel. One of the two main video formats in the IDA creative system (the other is Studio DTC with production lighting and backdrop). |
| UGC | User-Generated Content — An ad format that mimics organic, creator-style content — informal, handheld, less polished. Routed through a separate production pathway in ad-production-brief. |