Ad Creative System · Skill Library · Review Hub

Every skill, one pageThe whole pipeline — what each skill does, which model runs each task, and what its output looks like.

15 live skills + reference docs across 6 phases · aligned to the canonical Main-Pipeline + Data-Layer PRDs · models routed by consequence via OpenRouter · for Asel · 2026-06-12

P1 Research + P2 Avatar — the data-gathering layer

ad-data-scraperP1 Research

Paid-ad intelligence. Continuously collects competitors' proven Meta ads (run-length = profitability signal), files them tier-ranked into the swipe library. Owner: Curator-Hermes (always-on, paid only).

ad-organic-scraperP1 Research

Organic intelligence. Continuously tracks competitor + owned YouTube, scores videos by view-to-baseline ratio, extracts working language. Owner: Organic-Hermes (always-on, organic only).

ad-autopsyP1 Research

Learns from our own results weekly: what to avoid, which words are forbidden, which patterns work — written as supersede-chained rows the writing skills obey. Weekly scheduled skill.

ad-voice-profileP2 Avatar

Captures how the expert actually talks from a transcript — a structured voice profile every ad must sound like. One-time onboarding skill per expert.

P2 Avatar

ad-audience-language-dnaP2 Avatar · pipeline

This skill defines the foundational language calibration layer for writing ad scripts and hooks. It maps six distinct buyer demographic groups (for example, career-switching women aged 40-55, or high-income sophisticated buyers) to the specific words, emotional triggers, sentence rhythms, and proof styles that each group responds to — regardless of the product niche being sold. It also assigns the emotional journey an ad script must take the viewer through: where they start emotionally (for example, frustrated or invisible), what shifts in the middle, and where they land by the end (for example, hopeful or in control). The outputs of this skill feed directly into hook generation and script writing, ensuring the final ad speaks in the language of the audience, not the copywriter.

Which model runs which task
TaskModel
Demographic segment identification from expert config or briefclaude-sonnet-4-6
Language DNA pattern extraction and emotional arc assignment from research dataclaude-opus-4-8
Cross-vertical arc borrowing justification (when hook emotion is borrowed from an adjacent vertical)claude-opus-4-8
Supabase read and write, markdown exportplain code (no model call)
First demographic extraction for a brand-new expert with no prior data and no voice profileclaude-fable-5 (opt-in only)
What its output looks like representative
Representative DNA Extract block for the IDA avatar — career-switching women, no formal degree, aged 30-52. Interior design career coaching offer. Labelled as representative: this is not a real run output.
AUDIENCE DNA EXTRACT
====================
Expert:             ida
Demographic:        women_40_55  (primary); women_25_35 (secondary blend)
Vertical:           career — interior design

--- Language DNA ---
Positive triggers:  finally, permission, reclaim, YOUR turn, gentle, sustainable,
                    no degree, experience, without formal training, real customers
Negative triggers:  hustle, grind, compete, radical overhaul, start from scratch
Sentence rhythm:    Medium-length with parenthetical asides.
                    "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 degree. Specific income or portfolio outcome.
                    "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, "everyone can do this"

--- 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:          Hook emotion shifted to "Credential Exclusion" sub-type
Justification:      IDA VOC data shows "I thought I needed a degree" as
                    dominant objection — naming it specifically in the hook
                    out-performs generic frustration framing.

--- Supabase upsert target ---
Table:              audience_dna_profile
Key:                (expert_namespace='ida', demographic_segment='women_40_55')
run_id:             <stamped from agent_run>
The block has four sections. Language DNA gives the exact positive and negative words, the sentence cadence, and the proof format to use. Emotional Calibration names the entry emotion (what the viewer feels when the ad starts) and what to avoid triggering. Emotional Arc Assignment defines the three-stage feeling journey from hook through middle to end, the intensity level, and any deviation from the vertical default with a justification note. The Supabase upsert target confirms where this data is written and which agent_run produced it.

P3 Scripting

ad-hook-generationP3 Scripting · pipeline

This skill generates hooks — the first 1 to 3 seconds of a paid social video ad — for every stage of the marketing funnel: cold audiences who have never heard of the expert (top-of-funnel), warm audiences who have seen ads before (middle-of-funnel), and retargeting audiences close to buying (bottom-of-funnel). It provides 34 named copywriting frameworks covering both everyday offers and high-ticket offers above $2,000. It also covers four separate variation dimensions so the model generates not just different words but also different visual scenes, different production formats, and different borrowed media, producing multi-sensory hook batches that work even when the viewer has their sound off.

Which model runs which task
TaskModel
Supabase view pulls — winning_ads, expert_hook_bank, competitor_intelligence ingestHaiku 4.5
First-pass framework ID assignment, checklist pass, taggingSonnet 4.6
Core hook generation — angles, copywriting, voice calibration, framework selection, qualified-attention filteringOpus 4.8 (claude-opus-4-8)
Multi-sensory 4-dimension variation expansion across visual, format, and borrowing dimensionsGPT-5.5
Quota enforcement — max 3 uses per framework, minimum 2 mute-first hooks, no all-same-format batchesPlain code
What its output looks like representative
Representative 3-hook IDA batch — Amelia Fenmore, interior design career coaching, cold TOF audience (women 25-55, full-time employees considering a career change, no design degree). Built from real IDA expert context; not a live run output. Words-only output with visual-intent metadata, per this skill's output spec.
HOOK BATCH: IDA — Career Change, No Degree
TARGET: Full-time employees / near-retirees with an eye for design | SEGMENT: T1 Primary Buyer (burned-out professionals)
AWARENESS: Problem-Aware → Solution-Aware | FUNNEL: TOF | TIER: Standard

---

HOOK 1
Framework: F12 (Native Story Opening)
Dimension: FORMAT — Talking Head, selfie framing
Visual-intent: close-up iPhone selfie, plain wall, no graphics in frame 1
Mute-ready: no | Reveal: TEASER

"If you're watching this from a job you hate and you've ever thought about doing something with your eye for design — I need you to hear something."

Why it works: Starts mid-thought, no preamble. Identity callout is precise (job they hate + design eye) — qualifies the right buyer in the first 3 seconds without maximising broad scroll-stop.

---

HOOK 2
Framework: F3 (Hidden Truth)
Dimension: VISUAL — text-on-screen, voiceless
Visual-intent: black screen, white text line by line, then hands holding a phone with a payment notification
Mute-ready: yes | Reveal: TEASER

"The interior design industry doesn't care if you have a degree." (text-on-screen, no voiceover — mute-first)

Why it works: Contradicts the most common objection (no degree = can't do it) without resolving HOW — opens the loop. Works entirely on mute.

---

HOOK 3
Framework: F4 (Specific Transformation)
Dimension: FORMAT — Screen recording / demo
Visual-intent: phone screen-recording of a payment dashboard scrolling to the monthly total, intercut with the person at an office desk
Mute-ready: no | Reveal: PARTIAL

"Accounting assistant to six thousand a month in interior design — without going back to school. Here's how it actually happened."

Why it works: All three specificity elements present (start: accounting assistant; result: $6,247/month; method: without school). Social proof is visual before a word is spoken. Numbers are within the IDA believable range per scripter-reference.

---

TOP 3: All three — vary FORMAT (Dimension 3) first to learn which production style engages the qualified buyer before optimising message.
Each hook shows the Framework ID used (F12, F3, F4), which of the 4 variation dimensions is being exercised, a short Visual-intent tag (full production direction lives in the filming brief, not the hook body), the spoken hook line in words only, and Mute-ready / Reveal tags. Hook 2 is one of the minimum-two mute-first hooks required per batch. The 'Why it works' line references the qualified-attention principle — it explains why the hook targets the right buyer, not just why it might stop a scroll.
scripter-polishP3 Scripting · pipeline

scripter-polish is the quality-assurance gate that every ad script must pass before it is approved for filming. It runs a fully deterministic scan for forbidden words (words that sound like artificial-intelligence-written copy) and 18 mechanical patterns that make dialogue sound scripted rather than human. It then checks that required human-sounding elements are present — internal dialogue, specific numbers, timeframes, conversational phrases, a Social Proof Bridge (a short paragraph where the expert links their personal experience to the customer result), and a correctly structured call-to-action. Every check is binary: pass or fail. Scripts that fail are fixed in place, rescanned, and only released as Production Ready when all 18 checks pass and the word count sits between 180 and 240 words.

Which model runs which task
TaskModel
Forbidden-word scan (Step 1, all tiers including dynamic Tier 4)PLAIN CODE — no model
Forbidden pattern detection (Step 1, patterns P1-P18)PLAIN CODE — no model
Literary-verb list and copula-avoidance list checks (Step 2)PLAIN CODE — no model
Required element counts — internal dialogue, specific numbers, timeframes, sustainability language (Step 3)PLAIN CODE — no model
Sentence-type distribution and conversational-marker counts (Step 4)PLAIN CODE — no model
Word count per section (Step 8)PLAIN CODE — no model
Tier-4 dynamic forbidden-word view pull from active_launch_learnings Supabase view (Step 0C)Haiku 4.5 (claude-haiku-4-5) via OpenRouter
What its output looks like representative
Representative Quality Assurance Report — Elena Hayes (PCOS niche), Script 031 draft fragment. The flagged word 'unlock' is real: it appears in the actual repo script at execution/scripts/elena-pioneer-scripts-31-40.md line 32. The full QA report shown here is representative, not a live run output.
POLISH REPORT — Script 031_EH_Vault Metaphor_Selfie
Expert: Elena Hayes | Format: Solo Selfie | Mechanism Reveal: TEASER
Run ID: run_20260610_elena_031 | agent_run: opened

--- STEP 1: FORBIDDEN WORD SCAN ---
Tier 1 hit: 'unlock' — Section: Training+Proof — Quote: '...the specific signals your body needs to unlock your metabolism...'
Replacement: 'finally shift your metabolism' (specific consequence, not an abstract unlock)
All other tiers: 0 hits
Tier 4 (active_launch_learnings): 0 entries loaded (no forbidden patterns from prior losers)

Pattern scan P1-P18: 0 violations

--- STEP 9: FINAL SCORECARD ---
| # | Check | Threshold | P/F |
|---|-------|-----------|-----|
| 1 | Forbidden Words (Tier 1) | 0 found | FAIL — 'unlock' |
| 1B | Tier 1B Extended | 0 found | PASS |
| 2 | Forbidden Patterns | 0 found | PASS |
| 3 | Symmetry | Max 1 | PASS |
| 4 | Literary Verbs | 0 found | PASS |
| 4B | Copula Avoidance | 0 found | PASS |
| 5 | CTA Structure | All 5 elements | PASS |
| 6 | Internal Dialogue | 4-6 | PASS — 4 found |
| 7 | Specific Numbers | 3+ | PASS — 6 found |
| 8 | Timeframes | 3+ | PASS — 4 found |
| 9 | Sustainability Language | 1+ | PASS — 'kept that weight off since' |
| 10 | Connected Sentences | ~60% | PASS |
| 11 | Conversational Markers | 3+ | PASS |
| 12 | Question Tags | 1-2 | PASS |
| 13 | Redundancies | 0 | PASS |
| 14 | Unnecessary Sentences | 0 | PASS |
| 15 | Mechanism Protection | No violations | PASS — TEASER compliant |
| 16 | Social Proof Bridge | All 4 elements | PASS |
+ Word Count: 268 words — FAIL (target 180-240)

VERDICT: 16/18 — MINOR REVISIONS

--- STEP 10: FIXES APPLIED ---
[1] Check 1 — Forbidden Word
  Original: '...the specific signals your body needs to unlock your metabolism and finally release that PCOS belly fat.'
  Fixed: '...the specific signals your body needs to finally shift your metabolism and release that PCOS belly fat.'
  Reason: 'unlock' is Tier 1 AI Giveaway. 'finally shift' names the specific consequence.
[2] Word Count
  Overage: 268 words (target max 240). Section audit: Training+Proof at 68 words (target ~50). Trimmed two sentences from Training+Proof that restated the vault metaphor already established in the hook.
  Fixed word count: 237 words — within range.

RE-RUN SCORECARD: 18/18 — PRODUCTION READY
agent_run closed: status = success
The report has four sections. First, the forbidden word scan names every hit with the exact quoted text and the replacement. Second, the scorecard runs all 18 checks as a table — each row is pass or fail with the actual count found. Third, the fixes log shows original text, corrected text, and the rule that was broken. Fourth, the scorecard reruns after fixes to confirm 18 out of 18 before the script is released. A script never leaves this step with any fail on the board.
ad-hook-principlesP3 Scripting · reference doc (loaded by skills, not invoked standalone)

This is a psychology reference document loaded by ad-ideate and ad-hook-generation before any hook work begins. It defines six core mental mechanisms — open loop (unresolved tension), pattern disruption vs pattern matching, specificity as credibility, identity targeting, tension architecture, and dopamine engineering — that explain why advertising hooks capture attention. It also provides three diagnostic checklists (Hook Strength, Audience Relevance, Red Flags) and an awareness-level framework. It has no data input/output boundaries and no audit lifecycle. It is not invoked directly; the hook-generation and ideation skills load it as required pre-context.

Which model runs which task
TaskModel
Read this reference doc as pre-context before hook generation (mechanical ingestion, no reasoning required)claude-sonnet-4-6
Apply these principles to evaluate or diagnose a specific hook's weakness (diagnosis, cross-principle reasoning)claude-opus-4-8
What its output looks like real
Mechanic 2 — Pattern Disruption vs Pattern Matching — as it reads in the current file (real excerpt, unmodified)
### 2. Pattern Disruption vs Pattern Matching

Two opposing forces, each appropriate for different contexts:

**Pattern Disruption** (Cold Traffic / TOF)
- The scroll is a pattern. Break it.
- Unexpected visuals, contradictory statements, violated expectations
- Works because novelty triggers attention allocation
- Risk: Can feel gimmicky if not grounded in relevance

**Pattern Matching** (Warm Traffic / MOF/BOF)
- Familiar cues trigger recognition and trust
- "More of what I already like"
- Works because recognition reduces cognitive load
- Risk: Can blend in if not differentiated enough

**Diagnostic question**: Is this audience seeing me for the first time (disrupt) or do they already know me (match)?
Each mechanic entry gives the psychological mechanism, a practical description of how to apply it, the risk of misapplication, and a diagnostic question the model or scripter should ask before finalising a hook. 'Cold Traffic / TOF' means first-time audience exposure at the top of the advertising funnel; 'Warm Traffic / MOF/BOF' means an audience already familiar with the expert, reached at the middle or bottom of the funnel.
ad-scripter-referenceP3 Scripting · reference doc (loaded by skills, not invoked standalone)

This is a passive companion reference file for the ad script-writing skill. It contains no executable logic of its own and is never invoked directly — it is read by ad-scripter-write and the --modular mode when they need to look something up. It holds four lookup surfaces: (1) fill-in-the-blank text templates for every section of an ad script, organised by the audience's awareness level of the problem or solution; (2) tables of believable numerical results (weight lost, income earned, symptoms resolved, and so on) for ten different content niches, with rules on how to present those numbers for different audience demographics; (3) the exact formatted output template that a completed script and its accompanying Meta Ads Manager copy block must follow; and (4) word-count targets, timing targets, section-by-section validation checklists, and ad copy compliance rules for each of the five supported video script formats.

Which model runs which task
TaskModel
Counting, scanning, threshold checks, word-list matching (forbidden words, word counts, section element counts)Plain code — no model
Mechanical table lookups — believable-numbers range retrieval, template row pulls, section allocation lookupsHaiku 4.5
First-pass validation checklist completion, section tagging, ad copy compliance flag generationSonnet 4.6
Script writing, voice synthesis, classification, insight generation drawing on these templatesOpus 4.8 (claude-opus-4-8)
Broad controlled variation expansion — multiple hooks, bodies, and CTAs generated simultaneously for mix-and-match testingGPT-5.5
First market classification for a new expert (ceiling one-shot job); cross-batch synthesis spanning three or more cyclesFable 5 (claude-fable-5)
What its output looks like real
Believable-numbers table rows for Vertical 2 (Weight Loss) — real data from the file, not fabricated
| Timeframe | Range      | Example                                          |
|-----------|------------|--------------------------------------------------|
| Week 1    | 2-5 lbs    | "dropped 4 pounds in the first week"             |
| Month 1   | 4-8 lbs    | "lost 6 pounds without feeling deprived"         |
| Month 3   | 10-20 lbs  | "down 15 pounds and still going"                 |
| Month 6   | 20-35 lbs  | "lost 28 pounds and kept it off"                 |
| Year 1    | 30-60 lbs  | "lost 45 pounds and has maintained for 8 months" |
Each row is one timeframe milestone. 'Range' is the span of believable numbers for that timeframe — a script must stay inside the range or it will fail the 'Numbers in range' hard validation check. 'Example' is a verbatim phrase showing how to present the number in spoken script copy. Trajectory reads top to bottom: Week 1 is the smallest number, Year 1 is the largest — this ascending arc is the proof-trajectory pattern that the pending Great Ad rubric consolidated V1 will formally score.

P4 Production

ad-production-briefP4 Production · pipeline

The ad-production-brief skill converts finished, quality-checked ad scripts into actor-facing filming briefs or into machine-readable instruction blocks for an artificial-intelligence video-generation tool called rc-ai-ugc. It reads a routing field on each script — either "AI-UGC" (no human actor; emits a structured data block for the rc-ai-ugc application) or "INTERNAL-TEAM/EXTERNAL-ACTOR" (human filming; emits a formatted brief with setup notes, stage directions, and clean script text). It then puts the deliverable through an operator review gate, and after approval creates a Fibery filming task, a Google Doc, and a PDF attachment as downstream production records.

Which model runs which task
TaskModel
SEQ lookup, format_slug validation, naming string assembly, word-count checksPlain code (no model call)
Script pull and ingest from Supabase views; field extraction from script YAMLHaiku 4.5 (claude-haiku-4-5)
Brief assembly for standard formats (Selfie, FAQ, Seated Interior, Walking, Mirror, Pub Chat, Park Bench)Sonnet 4.6 (claude-sonnet-4-6)
Nuanced multi-format direction — mixed-routing batches, energy direction for unfamiliar formats, AI-UGC block population for ambiguous scene promptsOpus 4.8 (claude-opus-4-8)
What its output looks like representative
Single-script actor brief header block — Amelia Fenmore (IDA), Selfie White Wall format
AMELIA FENMORE — FILMING BRIEF
Date: June 10 2026
Format: Selfie (White Wall)
Angle: ESCAPE — Accounting to Design
Duration target: 55-65 seconds
Creative name: 031_IDA_ESCAPE-AccountantEscape_Selfie

WHAT IS THIS FORMAT
You are filming yourself directly to camera against a plain white or neutral wall. Hold your phone at arm's length or on a selfie stick. The energy is FaceTime — you are talking to one friend, not presenting to an audience. No performance. Conversational and direct.

REFERENCE IMAGE
[Insert reference image: close-up selfie, white wall, natural indoor light, phone held at arm's length]

THE SCRIPT
If you are watching this from a job you hate and you have ever thought about doing something with your eye for design, I need you to hear something. Because a few years ago I was exactly where you are.

I was working as an accounting assistant and I would come home every evening and just scroll through beautiful interiors on Instagram thinking — god, I would love to do that. But then immediately going, no, that is not for someone like me. I do not have a degree. Who is going to hire me.

And then I just stopped waiting. Within about three weeks someone was paying me to redesign their living room. By month six my practice was doing over six thousand a month.

I did not need more confidence. I just needed someone to show me that the instinct I already had — that thing where you look at a room and know what you would change — that was actually enough to start with.

The link is below.
The TITLE BLOCK (lines 1-5) gives the actor the creative name, format, angle concept, and duration at a glance. WHAT IS THIS FORMAT is written for someone who has never done this format before — plain English, no jargon. REFERENCE IMAGE is a single visual showing exact framing. THE SCRIPT is clean spoken dialogue only: no stage directions in brackets, no speaker labels, no quotation marks, no duration estimates per line. Physical cues are written as plain prose (e.g. 'Hold up your phone here') rather than bracketed directions.
copy-humanizerP4 Production · pipeline

copy-humanizer is the ad-system wiring of the firm-wide copy-humanization standard, which lives at _standards/copy-humanization-standard.md and is shared across all SKL marketing systems. In the ad system it runs in AD_SCRIPT mode: a focused pass that finds and removes the writing patterns that signal an artificial intelligence wrote the text — overly formal word choices, empty filler phrases, unnatural sentence rhythms — while keeping the expert's voice and sales energy intact. In AD_SCRIPT mode the forbidden-word scan is deferred to scripter-polish (the canonical enforcement gate); copy-humanizer handles the humanization patterns that are distinct from the forbidden-word list. Long-form modes (Video Sales Letter, webinar, email) belong to the other marketing systems that share the firm-wide standard, not this skill.

Which model runs which task
TaskModel
Pattern scan (AD_SCRIPT mode) — copula match, Extended-18 word-list lookup, significance-inflation word detection, em-dash density counts, bold and emoji counts, negative-parallelism counts, rule-of-three counts, synonym-cycling detectionPlain code — no model call
Judgment over flagged list — deciding whether a flagged -ing phrase restates or adds new information, whether a triplet is forced or genuinely distinct, which plain-English replacement fits the expert's voiceclaude-sonnet-4-6 via OpenRouter (log model + cost)
Rhythm fix decisions, emotional specificity upgrades, conversational disruption insertions on short ad scriptsclaude-sonnet-4-6 via OpenRouter (log model + cost)
What its output looks like representative
Representative before/after sentence pair — Phase 1 copula-avoidance fix on Elena Hayes (PCOS expert) ad script body copy. Not a real logged humanizer pass; labelled as representative grounded in real expert context.
BEFORE: "The Keystone Protocol serves as a comprehensive framework that functions as the missing piece most PCOS patients have never been offered."

AFTER: "The Keystone Protocol is the piece most PCOS patients have never been offered."
The before sentence contains two Phase 1.1 copula-avoidance hits: 'serves as' and 'functions as'. Both are replaced with 'is'. The filler clause 'comprehensive framework that' is also removed — it restated 'protocol' without adding information (a Phase 1.3 -ing-phrase-style redundancy applied to a noun clause). The after sentence is shorter, more direct, and preserves the sales claim without AI-patterned hedging.

P5 Post-launch

ad-complianceP5 Post-launch · pipeline

The ad-compliance skill is a reactive Meta advertising policy engine that activates only after an ad has been rejected in Meta Ads Manager. It runs an eight-step diagnostic — scanning for prohibited content, personal attribute violations, restricted category issues, banned words across five tiers, landing page problems, and before-and-after imagery violations — then produces a root-cause diagnosis, a rewritten compliant version of the rejected ad, and an appeal template if the rejection was a false positive. It is deliberately kept outside the creative pipeline so it never constrains script writing before a rejection actually occurs.

Which model runs which task
TaskModel
Term/pattern/word-list scans — Steps 1, 2, 4 (prohibited content, personal attributes, banned word tiers across all five tiers)Plain code
Rejection data pull from Meta Ads Manager via Model Context Protocol — mechanical ingest of ad ID, rejection code, rejected copy fieldsHaiku 4.5 (claude-haiku-4-5) via OpenRouter
Root-cause diagnosis — mapping rejection reason to decision tree, evaluating second-person framing context, identifying all violations from the bounded scan shortlistOpus 4.8 (claude-opus-4-8) via OpenRouter
Compliant rewrite — producing revised primary text, headline, description that passes all checks while preserving creative intentOpus 4.8 (claude-opus-4-8) via OpenRouter
Appeal template generation — drafting factual appeal citing exact compliant language and relevant Meta policy sectionsOpus 4.8 (claude-opus-4-8) via OpenRouter
Compliance Scorecard assembly (Step 7) — structured summary of binary check results from Steps 1-6Sonnet 4.6 (claude-sonnet-4-6) via OpenRouter
What its output looks like representative
Representative post-rejection diagnostic for Amelia Fenmore (IDA — health/wellness niche). Not a real run; grounded in the real expert context and the most common rejection reason for this niche (personal attributes).
DIAGNOSTIC COMPLETE — Amelia Fenmore | Ad ID: 120210XXXXXX | Run ID: acr-20260610-0042

Rejection reason received: 'Personal attributes'
API error code: 2490427 (Ad disapproved — general)

Root cause: HIGH confidence — Hook line 'Struggling with hormones that won't cooperate?' asserts a negative physical attribute about the viewer using second-person framing. Pattern matches banned form: 'If you're struggling with [X]'.

Full re-scan results:
1. Prohibited Content: CLEAR
2. Personal Attributes: 1 VIOLATION — Hook line 1, Primary Text line 1
3. Restricted Content: COMPLIANT (health/wellness coaching, no supplements)
4. Special Ad Category: NONE required
5. Banned Words: CLEAR (no Tier 1/2 hits; 'hormones' in context is not a drug claim)
6. Landing Page: COMPLIANT — health disclaimer present, 'not medical advice' present, testimonial disclaimer present
7. Before/After: N/A

Fix:
Original: 'Struggling with hormones that won't cooperate?'
Revised: 'When hormones feel off, everything feels harder — here's what Amelia did differently.'
Technique: Empathy framing (third-person pivot) — describes a state, does not assert the viewer has it.

Appeal: NOT recommended. Violation is clear; fix is faster than appeal.
Action: Create new ad with revised hook. Do NOT edit the rejected ad in-place.

Wait period: First offense on this creative — immediate resubmission permitted.

agent_run closed: status = 'success'
Read top-to-bottom. The run ID ties this diagnostic to the agent_run audit row. Root cause confidence (HIGH/MED/LOW) tells you how certain the mapping from rejection reason to fix action is. The fix block shows original text, revised text, and the safe-framing technique applied so the operator can verify the rewrite before creating the new ad. The appeal recommendation is binary — follow it. agent_run status at the bottom confirms the run closed cleanly.

Glossary

Every domain term used on this page, spelled out.

TermIn full / what it means
AI Hook InjectionAI Hook Injection iteration path (Kling workflow) — An iteration approach that grafts an AI-generated hook sequence (produced via the Kling video generation workflow) onto a Performing ad's body. Eligible only when the Kling workflow is validated for the expert; shown as provisional until then.
AI-UGCAI-generated User Generated Content routing — One of three routing field values set on the Concept Card and propagated through ad-scripter-write to ad-production-brief. Tells the production brief skill to format for an AI-synthesised actor rather than a human actor.
AIDA ExtendedAttention, Interest, Desire, Action — Extended format — A script framework that adds proof and objection handling layers onto the classic Attention/Interest/Desire/Action structure. Assigned to Primary avatar + Problem/Agitation lead type combinations.
AndromedaMeta Andromeda targeting system — Meta's internal recommendation and delivery system that decides which ads to serve to which users. Entity Clarity is a score that estimates how clearly an ad separates the advertiser's identity within Andromeda's entity classification — higher clarity means less cannibalisation against competing ads in the same auction.
Andromeda Entity IDMeta Andromeda Entity ID — Meta's internal identifier for a creative entity used by the Andromeda ad delivery system. A new entity ID means Meta treats the creative as novel and re-enters the learning phase with fresh audience reach, resetting fatigue.
ArcEmotional Arc — The three-stage emotional journey an ad is designed to take the viewer through: the entry emotion at the hook, a shift emotion in the middle, and a landing emotion at the end. Must be coherent — no emotional whiplash.
Awareness LevelCustomer Awareness Level (Eugene Schwartz framework) — A five-stage spectrum from Unaware (does not know they have a problem) through Problem Aware, Solution Aware, Product Aware, to Most Aware (ready to buy). Hook strategy must match where the target audience sits on this spectrum.
Awareness levelCustomer awareness level — How aware the target viewer is of their problem and the expert's solution — a spectrum from Unaware through Problem-Aware, Solution-Aware, and Product-Aware. Determines which hooks and templates are appropriate.
BOFBottom of Funnel — Product-aware or most-aware audiences who know the specific offer and are close to a purchase decision. Retargeting territory.
Body AngleBody script angle — The strategic emphasis of a body script — PROBLEM (heavy pain focus), SOLUTION (balanced), PRODUCT (product-led), or OFFER (offer-led). Controls the ratio of pain vs. solution content in Sections 3-6.
Body scriptBody script (Sections 2-6) — The middle portion of a Meta cold-conversion advertisement — the Transition, Struggle, Turning Point, Insight, and Training + Social Proof Bridge sections. It excludes the opening hook (Section 1) and closing call to action (Section 7), which are generated separately in modular mode.
CPBCCost Per Booked Call — The average advertising spend required to generate one booked sales call. The primary performance target for call-based funnels.
CPLCost Per Lead — The average advertising spend required to generate one lead. Used as a performance threshold in the expert config and strategy brief.
CTACall to Action — The instruction at the end of the script and ad copy telling the viewer what to do next. Kept soft (comment, link in bio) — no hard-sell language.
Composite EditComposite Edit iteration path — An iteration approach that blends elements (hook, body structure, visual style) from two or more Performing ads into a new creative. Only available in Mode 3 because it requires at least two validated styles to have something to composite from.
Concept CardConcept Card — The structured creative brief produced by ad-ideate. Contains the hook framework, body angle, proof tier, format, routing field (AI-UGC / INTERNAL-TEAM / EXTERNAL-ACTOR), and temperature setting that ad-scripter-write consumes as its primary input.
Construct BriefConstruct Brief — ad-ideator-classify output document — The structured output of ad-ideator-classify that feeds ad-ideate. Specifies exact concept counts per awareness level, per archetype, per bucket (angle type), temperature guidance for each combination, and the language bank. ad-ideate executes against this brief without needing to re-read the Market Analysis Report.
Copula avoidanceCopula-verb avoidance — An AI writing pattern where the verb 'to be' (is, are, was) is replaced with a more elaborate phrase: 'serves as', 'stands as', 'functions as', 'represents'. The pattern makes text sound more formal and less human.
DECKSlide deck copy — The text content written for presentation slides. Usually factual and clean in tone, which means AI-sounding formalisms stand out more than in sales copy.
DNALanguage DNA — The specific vocabulary, sentence rhythms, emotional triggers, and proof styles that a demographic group responds to, derived from observed buying behaviour patterns across niches.
DTCDirect to Camera — A filming style where the actor speaks directly into the lens, used in SOLO and some 2-PERSON formats. The dominant format in the swipe banks.
Deterministic-firstDeterministic-first principle — The rule that counting, scanning, threshold comparisons, and arithmetic must be executed as plain code, not by the language model. The model reasons over bounded results; it does not count or scan.
Dimension 3Variation Dimension 3 — Format — One of four hook variation dimensions. Dimension 3 governs the production style and structural format of the hook (e.g. talking head, text-on-screen, skit, screen recording). Rotating across Dimension 3 is the recommended first testing axis because it reveals which production style engages the qualified buyer before message optimisation begins.
DoDDefinition of Done — The complete set of conditions that must be true before a piece of work is considered finished and accepted.
Dopamine EngineeringDopamine Engineering (hook mechanic) — Structuring a hook to promise reward and delay delivery. Anticipation of a reward releases more dopamine than the reward itself; a hook that satisfies its own promise immediately kills that anticipation.
ECExpected Conversion (EC Prior) — A first-principles estimate of how much Andromeda Entity ID separation a given iteration path is likely to achieve. It is a prior belief, not a measurement. Expressed as a score from 1-10. Graduates from Theoretical to Provisional to Validated as live data accumulates.
EC / YPU / STSEntity Clarity / Your Product Universe / Spend To Scale — The three dimensions used to score iteration paths. Entity Clarity measures how distinctly the ad separates the expert's identity from competing advertisers in Meta's Andromeda targeting system. Your Product Universe measures how many similar ads Meta could serve in the same auction (smaller universe = more reach for this ad). Spend To Scale measures how efficiently the ad is expected to scale as budget increases.
EC PriorExpected-Cost Prior — A path-scoring value used in the creative strategy framework to weight which creative approach to run based on expected cost-per-acquisition. Not directly used by this skill but referenced in downstream strategy skills.
Entity IDMeta Andromeda Entity ID — A classification assigned by Meta's Andromeda ad-serving algorithm to each creative based on visual signals it extracts. Two ads with different Entity IDs compete for different audience sub-segments and can scale independently. Format diversity is the mechanism the system uses to multiply a winning message across new Entity IDs before the current one fatigues.
Entry StateEmotional Entry State — The emotional condition the target audience is in when they see the ad — e.g. exhausted, skeptical, hopeful. Hooks must meet the audience at this state rather than projecting a different emotional register onto them.
Extended-18Extended 18 AI vocabulary words — The 18 additional AI-tell words that copy-humanizer adds on top of the Core 47 word list owned by scripter-polish. These words are more common in long-form marketing copy than in short ad scripts.
F1-F12Core Cold Traffic Framework codes 1 through 12 — The 12 core cold-traffic hook frameworks in ad-hook-generation Section A. Examples: F1 Contrarian Claim, F7 Paradox Hook, F12 Native Story Opening.
FAQ_PHONE_SCROLLFAQ_PHONE_SCROLL format mode — A format mimicking a phone-scroll interface where the expert answers frequently asked questions. Requires the first swipe within 5 seconds.
FDAU.S. Food and Drug Administration — The U.S. federal agency that regulates food, drugs, supplements, and medical devices. Claiming a product is 'FDA approved' when it is not, or using medical treatment language on a supplement, triggers rejection under Meta's drugs-and-drug-related and misleading-claims policies.
FILMING/SHOOTFibery FILMING/SHOOT entity — A task entity in the Fibery project management system under the FILMING app. Created after operator brief approval. Contains the full brief as plain text, links to all CREATIVE entities in the batch, and receives the PDF attachment as a permanent record.
FR-12aFreshness Requirement 12a — An unresolved reconciliation item between three different staleness limit values in the system documentation for the live_performance view above two thousand pounds per day spend. Requires operator decision before production.
FR-39Feature Requirement 39 — The system requirement that raw (pre-edit) script output be saved to the raw_outputs Supabase table immediately after drafting. The edit distance between raw output and operator-approved output is the primary signal for deciding when the system can be trusted to run more autonomously.
FTCU.S. Federal Trade Commission — The U.S. federal agency that enforces consumer protection law including endorsement and testimonial disclosure rules. Income/business coaching ads must include earnings disclaimers that meet FTC standards, not just Meta's.
Fable 5claude-fable-5 (Anthropic model) — The highest-capability model in the routing tier. Used only for ceiling one-shot jobs — for example, the very first demographic extraction for a brand-new expert with no prior data. Costs 2x versus Opus 4.8 and requires customer personally-identifiable information sign-off plus a 30-day data-retention caveat.
Format ModeFormat Mode — The scripting-level classification for an ad's structural shape: SOLO (default single-person talking head), SKILLSHOW_NOTEBOOK, 2-PERSON-FRIENDS, 2-PERSON-RECOGNITION, or FAQ_PHONE_SCROLL. Set by the operator at batch configuration time. Different from the visual format profile slug used in production.
Format functionFormat function on agent_run — A parameter stamped on the agent_run record at pipeline initialisation that specifies the intended format mix for the batch. Step 6 reads this value first before applying the internal format selection matrices.
FrequencyAd frequency — Average number of times a unique person has seen a specific ad, calculated as impressions divided by reach. Rising frequency is a supporting signal that an audience may be saturating.
FxIFrequency times Intensity — A compound score used to rank pains and desires. Frequency = how often the avatar experiences this pain or desire. Intensity = how strongly they feel it. Multiplied together to produce a 1-9 priority score that drives message focus selection.
GPT-5.5GPT-5.5 (OpenAI via OpenRouter) — The model used for multi-sensory 4-dimension variation expansion. Selected for its breadth in generating diverse controlled variations across visual, format, and borrowing dimensions simultaneously.
GatewayGateway flag on iteration path — A flag shown on the Refilm path whenever Mode 3 is not yet unlocked. It signals that this path has strategic value beyond its raw score because it adds a new validated style, enabling Composite Edits in the future.