Ad-audience-language-dna extracts the ideal customer's language patterns — the trigger words they respond to, the sentence rhythms that match their pace, the proof framing that earns their trust — and assigns the correct emotional arc (hook emotion → middle emotion → end emotion) for the niche vertical and demographic segment. The same person buying weight loss coaching and dating coaching responds to the same language DNA. This skill captures that demographic layer and writes it to audience_dna_profile in Supabase. Every downstream hook and script reads from that row. Get the demographic layer wrong and even a perfect niche hook framework will underperform. This skill runs before hook generation and scripting, either as a standalone extraction run (opens its own audit row, writes to Supabase) or as an inline read (no write, no audit row — the parent skill owns the trail). It feeds ad-hook-generation, ad-ideator-classify, ad-scripter-write, ad-scripter-modular, and scripter-polish.
This skill does not have its own /ad-* slash command. It is consumed in two ways. First: as an extraction run at the start of the research phase for a new expert or when a demographic profile needs updating — invoked from the pipeline or directly by the operator. Second: as an inline reference inside the hook chain and scripting runs — ad-hook-generation, ad-ideator-classify, ad-scripter-write, and ad-scripter-modular all read from audience_dna_profile mid-run via a Supabase query. The skill is also called by scripter-polish to verify arc coherence and enforce the positive/negative trigger word check during the quality-assurance (QA) pass. In extraction mode the skill opens its own agent_run row. In inline reference mode it reads from Supabase and returns the result directly to the parent skill — no new run row, no write.
All calls route through OpenRouter and are logged with model ID, provider, and cost against the agent_run row. Route by consequence, not token volume — the cost of a wrong decision sets the model.
| Task | Model | Why |
|---|---|---|
Supabase reads and writes — opening and closing agent_run, upserting audience_dna_profile rows, writing the markdown export to orchestration/expert-config/<expert>/audience-dna.md | Plain code — no language model | Deterministic input/output. The model must not be in the write path. Completeness is never a language model's job. |
| Determining the demographic segment from the expert config or operator brief — tagging the input to one of the 6 canonical segment keys | claude-sonnet-4-6 (Sonnet 4.6) via OpenRouter | Bounded classification task with clear input. High-confidence first-pass is sufficient; no cross-domain synthesis required at this step. |
| Extracting language DNA patterns + assigning the emotional arc from research data and the demographic segment — calibrating trigger words, sentence rhythm, proof framing, arc selection, intensity, temperature deviation | claude-opus-4-8 (Opus 4.8) via OpenRouter | Synthesis and nuanced calibration. A wrong arc choice degrades the entire downstream scripting batch. Opus 4.8 is the correct ceiling for this level of judgment. |
| Cross-vertical arc borrowing justification — when a hook emotion is borrowed from an adjacent niche vertical (e.g. "Invisibility" from weight loss borrowed for a career script) because the pain data supports it | claude-opus-4-8 (Opus 4.8) via OpenRouter | Judgment call requiring cross-domain reasoning over voice-of-customer (VOC) evidence. Runs only at MEDIUM-HIGH temperature and requires explicit justification in the Construction Log. |
| First demographic extraction for a brand-new expert — no prior data, no Voice Book, no existing audience profile | claude-fable-5 (Fable 5) via OpenRouter — opt-in only, not the default | One-shot ceiling job where the absence of prior context makes the initial extraction the highest-consequence call in the sequence. Costs 2× Opus 4.8. Requires explicit customer personally identifiable information (PII) sign-off AND acknowledgment of the mandatory 30-day data-retention obligation before the run starts. Do not use routinely. |
What goes in, what comes out, and how this skill relates to the Audience Voice layer and the Voice Book.
The audience_dna_profile table is new. It is not yet in the canonical Supabase view set. The table must be provisioned before this skill's first extraction run. See flags_for_operator in the skill source for the schema. This is a hard pre-condition: the run halts if the table is unreachable.
Relationship to the Audience Voice layer (Layer 7) and the Voice Book (Layer 2). Three different "voice" objects live in this system and they must not be conflated.
ad-voice-profile. Read by ad-scripter-write at every invocation. This skill does not touch it.active_launch_learnings and the expert profile but does not write to Layer 7 directly.audience_dna_profile) — this skill's output. It distils the demographic language fingerprint and assigns the emotional arc. It is the audience-side counterpart to the Voice Book: Voice Book = how the guru speaks; Audience DNA = what resonates with the viewer.| Input | What it is |
|---|---|
expert_profile (Supabase Layer 2) | The current expert profile row. Read to confirm status = 'current' and pull any prior demographic annotation. The run halts if this row is absent when the skill is called from a scripting pipeline (voice-dependent run). If called as standalone audience research and no profile exists yet, proceed with operator-supplied brief. |
active_launch_learnings_for_<expert> (Supabase Layer 5 view) | Active constraints and positive patterns from prior autopsy runs. Sections queried: avoid, forbidden, positive. Used to cross-check that the assigned arc and trigger words do not conflict with known loser patterns for this expert. |
| Operator brief or expert config | Primary demographic identification: which of the 6 canonical segments (or a blend) is the target audience for this expert and offer? If available, include the offer vertical (e.g. career, weight_loss, gut_health) and the desired temperature setting (LOW, MEDIUM, or MEDIUM-HIGH). Temperature controls how far the assigned arc can deviate from the vertical default. |
audience_dna_profile table · one row per (expert_namespace, demographic_segment) pair · upsert on that key| Field | What it means |
|---|---|
| expert_namespace | Which expert. Matches expert_profile.expert_namespace — e.g. ida for Amelia Fenmore, alba for the acne vertical, elena for the PCOS (polycystic ovary syndrome) vertical. |
| demographic_segment | One of the 6 canonical segment keys: women_40_55, women_25_35, women_55_plus, men_30_50, high_income, or pain_dominant. A blend is written as the primary segment key; secondary blends are noted in the markdown export. |
| primary_entry_emotion | The emotion the viewer is feeling at the moment they see the ad — the hook's emotional entry point. Example: "Invisibility / Is it too late?" for Women 40-55 in a career vertical. |
| secondary_emotion | The supporting emotional undertone that pairs with the primary. Example: "Exhaustion from gatekeeping → Permission" for the same segment. |
| avoid_emotions | Emotions that must never be triggered — shame, urgency pressure, condescension, desperation. Array of plain-language strings. |
| positive_triggers | Words and phrases that land well for this segment — e.g. "finally," "permission," "YOUR turn," "reclaim," "sustainable." Array of strings. Read directly by ad-hook-generation. |
| negative_triggers | Words and phrases to avoid — e.g. "hustle," "grind," "radical overhaul," "start from scratch." Array of strings. Read by scripter-polish for the arc-coherence and forbidden-trigger check. |
| sentence_rhythm | A plain-language description of the cadence that fits this segment. Example: "Medium-length with parenthetical asides. 'And here's what nobody tells you (even if you've been following every how-to video out there)...'" |
| proof_framing | Which proof type earns trust with this segment. One of: peer story / numbers and outcomes / expert claim. Example: "Peer story first — women who built real customer rosters without a degree. Specific income or portfolio outcome." |
| vertical | The niche vertical for this row — e.g. career, weight_loss, hormone_health, gut_health. Used to select the vertical default arc before demographic calibration. |
| arc_hook_emotion | The emotion the script opens on. Always negative or neutral — the pain-state the viewer is already feeling. Example: "Frustration (blocked by credential gatekeeping)." |
| arc_middle_emotion | The bridging emotion — the shift from pain toward resolution. Must logically bridge hook to end. Example: "Recognition (the gatekeeping is the fraud, not you)." |
| arc_end_emotion | Where the viewer lands. Always positive or forward-looking. Never pain, fear, or shame. Example: "Confidence + Clarity." The end emotion is the promise — it does not change with temperature. |
| intensity | One of four levels: HIGH (sharp pain → dramatic transformation), MEDIUM (clear pain → meaningful shift), LOW (gentle acknowledgment → quiet confidence), GENTLE (soft validation → calm possibility). Selected from the demographic default and then adjusted by temperature. |
| temperature | Operator-set arc deviation permission: LOW (use vertical default exactly), MEDIUM (swap hook emotion ± 1 intensity level), MEDIUM-HIGH (swap hook and middle emotions; cross-vertical arc borrowing permitted with justification). Note: Pioneer operating mode (V1.1, deferred) defaults to LOW temperature, but LOW temperature is independently settable in V1 via operator override. |
| arc_variation_from_default | NONE if the arc matches the vertical default exactly. Otherwise a plain-language description of the deviation — which emotion was swapped and why. |
| arc_justification | Required when arc_variation_from_default is not NONE. Must cite specific pain data or demographic evidence. Null when variation is NONE. |
| created_by_run_id | The agent_run.run_id of the first extraction run that created this row. |
| updated_by_run_id | The agent_run.run_id of the most recent upsert. Every extraction run that touches this row stamps this field, even if no values changed. |
audience_dna_profile · read inline by each consumer during its own run| Consumer skill | What it reads from this row |
|---|---|
| ad-hook-generation | positive_triggers, negative_triggers, sentence_rhythm, primary_entry_emotion, arc_hook_emotion. Applies demographic calibration to every hook framework before output. |
| ad-ideator-classify | demographic_segment, primary_entry_emotion, arc_hook_emotion, arc_end_emotion, intensity. Informs ICP (ideal customer profile) tier weighting in the Market Analysis Report. |
| ad-scripter-write | Full row. Demographic calibration + assigned arc govern every script produced in the batch. If the row is absent for the target expert, the scripter halts. |
| ad-scripter-modular | Full row. Applied per body script in the modular batch — each interchangeable body must respect the same demographic language DNA and arc. |
| scripter-polish | arc_hook_emotion, arc_end_emotion, positive_triggers, negative_triggers. Used to verify arc coherence and flag forbidden-trigger violations in the quality-assurance (QA) pass. |
orchestration/expert-config/<expert>/audience-dna.md — generated after Supabase upsert| Field | What it means |
|---|---|
| Generated from | The Supabase upsert. Written after the row is confirmed written — not before. This file is a working surface only. The Supabase row is the system of record. |
| Content | A human-readable markdown export of the full audience_dna_profile row — all language DNA fields, emotional calibration, and arc assignment, plus the run ID so it can be traced back to Supabase. Read by operators and agents reviewing the profile between runs. |
| Update cadence | Overwritten on each successful extraction run. Not updated on inline reference reads — those are read-only. |
agent_run table · extraction runs only; inline reference runs do not open a row| Field | What it means |
|---|---|
| agent_name | Always ad-audience-language-dna. |
| triggered_by | The pipeline step or slash command that invoked this extraction run. |
| expert_namespace | Which expert this run is extracting for. |
| status | Set to running when the run opens. Closed with success (all segments extracted, upserted, markdown written), partial (some segments extracted, at least one upsert failed — which ones are noted in status_detail), failed (no segments extracted or written), or halted (infrastructure unreachable or a pre-condition halt was triggered before any write). Infrastructure failure equals halt — never treat an unreachable Supabase call as an empty result. |
| status_detail | Human-readable explanation of any non-success status. Records the detected temperature, which segments were processed, and — where Fable 5 was considered but not used — the justification for not escalating. |
AUDIENCE DNA EXTRACT
====================
Expert: ida
Demographic: women_40_55 (primary); women_25_35 (secondary blend)
Vertical: career — interior design (income/career coaching)
Temperature: MEDIUM
--- Language DNA ---
Positive triggers: finally, permission, reclaim, YOUR turn, gentle,
sustainable, no degree, experience, without formal
training, real customers, it's not too late
Negative triggers: hustle, grind, compete, radical overhaul,
start from scratch, you should have, easy,
just do X, everyone can
Sentence rhythm: Medium-length with parenthetical asides that
create intimacy. Example:
"And here's what nobody tells you (even if
you've been following every 'how to become a
designer' video out there)..."
Proof framing: Peer story first — women who built real customer
rosters without a design degree. Specific income
OR portfolio outcome required.
Example: "Jenna, 43, landed her first paid
project 6 weeks in — without a design school
credential in sight."
--- Emotional Calibration ---
Primary entry emotion: Invisibility / "Is it too late?"
Secondary emotion: Exhaustion from credential gatekeeping
→ Permission
Avoid triggering: Shame, urgency pressure, "anyone can do
this," condescension about life stage
--- Emotional Arc Assignment ---
Vertical: Career
Demographic: Women 40-55
Temperature: MEDIUM
Arc: Frustration (blocked by credential gatekeeping)
→ Recognition (the gatekeeping is the fraud, not you)
→ Confidence + Clarity
Intensity: MEDIUM
Variation from default: Hook emotion shifted from the vertical
default generic Frustration to "Credential
Exclusion" — a specific sub-type of
frustration.
Justification: IDA VOC (voice of customer) data shows
"I thought I needed a degree" as the
dominant objection. Naming it specifically
in the hook out-performs generic frustration
framing. MEDIUM temperature permits a hook
emotion substitution; middle and end
emotions stay locked.
--- Cross-Niche Portability Check ---
The women_40_55 DNA works across verticals without re-extraction:
Weight loss: "Finally, a method that works WITH your hormones,
not against them" — same "finally" framing, same
anti-punishment anchor, same peer story proof.
Hormone: "Here's what I wish someone had told me at 42—
your exhaustion isn't laziness. It's a signal."
— soft authority pattern, blame release.
The vertical changes. The demographic language DNA does not.
--- Supabase upsert target ---
Table: audience_dna_profile
Key: (expert_namespace='ida', demographic_segment='women_40_55')
Status: upserted — updated_by_run_id stamped from agent_run
ad-hook-generation pulls positive_triggers and sentence_rhythm before selecting a framework; scripter-polish pulls negative_triggers and checks every script line against them. The Emotional Arc Assignment is the most consequential output: it locks the feeling journey of the ad. Arc coherence means the middle emotion must logically bridge hook to end — "Recognition" bridges "Frustration" to "Confidence" because it names the reframe. Emotional whiplash (e.g. Desperation → Possibility in one beat) is an arc failure, caught by scripter-polish. The Cross-Niche Portability Check at the bottom shows why this skill exists at the demographic layer rather than the niche layer — the same extract calibrates hooks across weight loss, hormone health, and career scripting without re-running the extraction.| Term | In full / what it means |
|---|---|
| DNA (audience language DNA) | Language Fingerprint — used as a metaphor, not a biological reference. The audience's language DNA is the set of trigger words, sentence rhythms, proof framing preferences, and emotional entry points that are characteristic of a demographic segment — the patterns that make a message feel "written for me" rather than "written for everyone." This skill extracts and codifies that fingerprint so it can be applied consistently across every hook and script for the same expert and segment. |
| ICP | Ideal Customer Profile — the specific person the ad is written for: their demographic, emotional state, dominant objections, and aspirations. IDA's ICP is a career-switching or self-taught woman aged roughly 30-52 who wants to build a real interior design customer roster without a formal design degree. |
| VOC | Voice of Customer — the actual words, phrases, and objections used by real customers in sales calls, DMs, reviews, and social comments. VOC is the raw material that the Audience Voice layer (Layer 7) and this skill draw on. It is distinct from the expert's own voice (Voice Book, Layer 2). |
| Emotional arc | Emotional Arc — the feeling journey of an ad: where the viewer starts emotionally (hook emotion), what they pass through (middle emotion), and where they land (end emotion). Every ad gets exactly one arc. The arc is selected from the vertical default table, then calibrated by demographic intensity and temperature. The end emotion is always positive or forward-looking — the landing emotion is the promise and does not change with temperature. |
| Arc intensity | Emotional Intensity Level — how sharply the arc is expressed. Four levels: HIGH (sharp pain → dramatic transformation), MEDIUM (clear pain → meaningful shift), LOW (gentle acknowledgment → quiet confidence), GENTLE (soft validation → calm possibility). Selected from the demographic default and adjusted within the temperature permission range. |
| Temperature | Arc Deviation Permission — an operator-set parameter that controls how far the assigned arc can deviate from the vertical default. LOW: use the vertical default exactly. MEDIUM: swap the hook emotion; shift intensity ±1 level from demographic default. MEDIUM-HIGH: swap hook and middle emotions; cross-vertical arc borrowing permitted with written justification in the Construction Log. Note: the Pioneer operating mode (deferred to V1.1) defaults to LOW temperature, but LOW temperature is independently settable in V1 via operator override. |
| Voice Book | Expert Voice Book (Layer 2) — the structured capture of the expert's own language patterns: signature phrases, forbidden words, delivery style. Built by ad-voice-profile. Read by ad-scripter-write at every invocation and required before scripting begins. Distinct from the Audience DNA Profile: Voice Book = how the guru speaks; Audience DNA = what resonates with the viewer. The old name "Layer 3 calibration" is deprecated — do not use it. |
| Audience Voice layer | Layer 7 — Audience Voice — the always-on voice-of-customer (VOC) data layer maintained continuously by Voice-Hermes. Raw VOC is harvested from sales calls, DMs, reviews, and social comments and kept current without operator commands. This skill's extraction run reads from active launch learnings (which are downstream of Layer 7 processing) but does not write to Layer 7 directly. The Audience DNA Profile is this skill's distillation of the demographic signal from that layer. |
| Voice-Hermes | Voice-Hermes (always-on agent) — the background agent that maintains Layer 7 Audience Voice. Distinct from the broader Hermes agent fleet. Voice-Hermes continuously harvests and processes VOC so the Audience Voice layer stays warm between operator-commanded runs. Ad-audience-language-dna reads the output of Voice-Hermes's work but does not replace it. |
| Hermes | Hermes (autonomous agent layer) — the always-on agent system that maintains the Supabase data layer. Multiple named Hermes agents run continuously: Curator-Hermes (swipe intake and curation), Voice-Hermes (VOC/Audience Voice), Sales-Hermes (sales intelligence), Scout-Hermes (daily market scan). Watcher-Hermes and IDA-Hermes overnight pre-warm are V2. |
| IDA | IDA — Amelia Fenmore, interior-design business coach — the primary active expert in the SKL (Stealth Kairos Labs) ad creative system. The namespace for all IDA Supabase rows is ida. IDA cold Meta ads drive top-of-funnel (TOF) traffic to a free training, which converts to booked sales calls. CPBC (cost per booked call) is the primary success metric. |
| CPBC | Cost Per Booked Call — how much money was spent on Meta ads to get one person to book a sales call. The primary success metric for IDA cold traffic. Target threshold lives in expert_config.target_cpbc. |
| CPL | Cost Per Lead — how much money was spent to get one person to register for the free training. Used as an early-signal proxy when CPBC data is not yet available. |
| TOF | Top of Funnel — cold traffic: people who have never seen the expert's content before. IDA cold Meta ads target TOF audiences and drive them to a free training before asking for a sales call booking. |
| MOF | Middle of Funnel — warm traffic: people who have engaged with content or ads but have not yet booked a call. Retargeting ads target MOF audiences. |
| BOF | Bottom of Funnel — hot traffic: people who have seen the free training or visited the booking page but have not yet booked. High-intent retargeting. |
| QA | Quality Assurance — the systematic review pass run by scripter-polish after every script. Checks for forbidden words, arc coherence, structural compliance, and format adherence. Binary pass/fail per script. |
| PII | Personally Identifiable Information — any data that can identify a specific individual: names, email addresses, phone numbers, call recordings with customer details. Fable 5 carries a mandatory 30-day data-retention obligation on all inputs; PII must never be included in a Fable 5 call without explicit operator sign-off. Fable 5 use for this skill requires both customer-PII sign-off AND explicit acknowledgment of the retention obligation before the run starts. |
| Supabase | Supabase (database platform) — the PostgreSQL-based database that hosts the SKL ad creative system data layer. All seven layers from raw ad captures through to audience DNA profiles live here. Agents and the operator read from Supabase views only — never from Fibery, Google Drive, or repository files at runtime. |
| Fibery | Fibery (project management and system of record) — the system of record for all creative entities, their production status, and their Meta performance data. Fibery is a sync source into Supabase, not a runtime read for this skill. |
| 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 the per-call logs (model ID, provider, cost) that feed the agent_run audit trail. |
| agent_run | agent_run (Supabase audit table) — the cross-cutting table that records every agent run. This skill opens a row at the start of each extraction run and closes it at the end. The row's run_id is stamped as created_by_run_id / updated_by_run_id on every audience_dna_profile row it writes, creating a full trace from demographic profile back to the run that produced it. Inline reference reads do not open an agent_run row. |
| F1-F12 | Cold Traffic Core Hook Frameworks 1 through 12 — the 12 core cold-traffic hook frameworks in ad-hook-generation (Contrarian Claim, Unexpected Outcome, Hidden Truth, Specific Transformation, Identity Callout, Mistake Reveal, Paradox Hook, Question Interrupt, Time Collapse, What If Reframe, Social Proof Lead, Native Story Opening). Demographic calibration from this skill is applied to whichever framework is selected. |
| HT1-HT12 | High-Ticket Cold Traffic Hook Frameworks 1 through 12 — the 12 high-ticket cold-traffic frameworks in ad-hook-generation (Competence Test, Gatekeeper / Velvet Rope, Mechanism Reveal, New Category, Identity Wedge, Cost of Inaction, Borrowed Authority, Confession / Vulnerability Lead, Epiphany Bridge, Investment Reframe, Permission Slip, Dissonance Trigger). For IDA (a high-ticket coaching offer) these are frequently the correct framework family. |
| W1-W10 | Warm Traffic Retargeting Frameworks 1 through 10 — the 10 warm-traffic hook frameworks in ad-hook-generation (Social Proof Stack, Objection Reversal, Testimonial Lead, Remember Callback, Urgency Trigger, Before/After Story, Why Now Hook, and three others). Used for MOF and BOF retargeting ads. |
| PCOS | Polycystic Ovary Syndrome — the health condition Elena's expert vertical addresses. Mentioned here for namespace context: Elena's expert namespace is elena; her offer is PCOS health coaching. Audience DNA profiles for Elena target a different demographic segment and vertical arc than IDA. |
| SKL | Stealth Kairos Labs — the company operating this ad creative system. Email: asel@stealthkairoslabs.com. GitHub org: @SKL-Internal. |