scripter-polish is the final gate before a script goes to filming. It runs 18 deterministic checks — forbidden word scan, AI pattern detection, em-dash strip, numeral consistency, structural element counts, economy of language, mechanism-reveal compliance, Social Proof Bridge (SPB) verification, and word count — and returns a binary verdict: PRODUCTION READY or not. The canonical forbidden-word list lives here (all other scripting skills reference it). Tier 4, the expert-specific layer, is populated upstream by ad-autopsy via the Supabase view active_launch_learnings_for_<expert>, section = 'forbidden' — scripter-polish loads it live at Step 0C before every run. Step 6 is the mechanism-reveal protection check: at TEASER level, no element names, no step counts, and no sequence language are permitted. scripter-polish is wrapped by /ad-polish and is the skill that catches what the writing model's own self-certification misses.
In the 2026-06-10 depth eval, the ad-scripter-write construction log self-certified zero em-dashes on both test scripts. scripter-polish's deterministic STEP 1 scan found 4 in sw-tc001 and 6 in sw-tc005 — all in spoken AMELIA lines. A model's inline self-check cannot be treated as a QA gate. This skill is the catch.
This is the most deterministic skill in the system. The large majority of checks are plain code — string matching, regex, and arithmetic. No model decides whether a word is forbidden.
| Task | Model | Why |
|---|---|---|
| Forbidden-word scan, all tiers including Tier 4 (Step 1) | Plain code — no language model | String matching and regex against fixed word lists. Zero-false-negative bar. A language model adds hallucination risk and latency with no accuracy gain. The code decides; the model does not. |
| Forbidden pattern detection, P1–P18 (Step 1) | Plain code — no language model | Regex matching against 18 fixed pattern rules. Deterministic by design. |
| Literary-verb list and copula-avoidance list checks (Step 2) | Plain code — no language model | Exact-string matching against fixed replacement tables. No inference needed. |
| Required element counts — internal dialogue, specific numbers, timeframes, sustainability language (Step 3) | Plain code — no language model | Counting and arithmetic. The model never counts. |
| Sentence-type distribution and conversational-marker counts (Step 4) | Plain code — no language model | Tokenisation and classification against fixed rules. Deterministic. |
| Word count per section (Step 8) | Plain code — no language model | Arithmetic. |
| Tier 4 dynamic forbidden-word view pull (Step 0C) | Haiku 4.5 (claude-haiku-4-5) via OpenRouter | Mechanical read from a structured Supabase view. No synthesis. Cheapest capable model. HALT if view is unreachable — never proceed with an incomplete forbidden list. |
| Symmetry check nuance — borderline "natural speech" instances (Step 2) | Sonnet 4.6 (claude-sonnet-4-6) via OpenRouter | The deterministic count finds the instances; Sonnet judges whether a borderline case qualifies as natural speech (the explicit exception in the rule). Model is called only on ambiguous hits. |
| Economy of language — redundancy and sentence necessity (Step 5) | Sonnet 4.6 (claude-sonnet-4-6) via OpenRouter | Requires reading for meaning. Bounded task — one script at a time. |
| Mechanism-reveal protection assessment (Step 6) | Sonnet 4.6 → Opus 4.8 (claude-opus-4-8) escalation via OpenRouter | Start with Sonnet for standard scripts. Escalate to Opus 4.8 when the script contains novel reveal language, ambiguous partial reveals, or the mechanism-specific word count is close to threshold. The consequence of a missed over-reveal is high — model choice follows the risk. |
| Social Proof Bridge (SPB) quality assessment (Step 7) | Sonnet 4.6 (claude-sonnet-4-6) via OpenRouter | Checks against 4 fixed criteria with copy-reading context. Sonnet is sufficient. |
| Voice fidelity exception — copula avoidance check against Voice Book (Step 2) | Sonnet 4.6 (claude-sonnet-4-6) via OpenRouter | Reads expert_profile and compares against the found instance. One-shot comparison per flag. Exception applies only if the expert literally uses the phrasing in the Voice Book. |
All model calls go through OpenRouter. Every call is logged to the agent_run audit trail with model ID, provider, and cost. No Fable 5 — this is a QA gate, not a generation or ceiling one-shot task.
What goes in, and exactly what comes out.
| Input | What it is |
|---|---|
| Draft script | The output of ad-scripter-write for the current concept card. Must include scene-by-section structure (Hook, Transition, Struggle, Turning Point, Insight, Training + Social Proof Bridge, Call to Action) with guru dialogue clearly labelled. |
| Construction log (Pioneer mode only — V1.1) | The self-check log produced by ad-scripter-write in Pioneer mode. scripter-polish cross-checks the log's self-certifications against its own deterministic scan. The 2026-06-10 eval showed this cross-check is not optional — the construction log's em-dash self-cert was wrong on both test scripts. |
| Expert namespace | The expert identifier that partitions all Supabase data — e.g. 'ida' for Amelia Fenmore (IDA — Interior Design Academy). Used to load the correct expert_profile and the correct Tier 4 forbidden-word view at Steps 0B and 0C. |
| Tier 4 forbidden words (dynamic) | Loaded live from the Supabase view active_launch_learnings_for_<expert>, section = 'forbidden'. These are expert-specific and campaign-specific terms that ad-autopsy wrote after analysing recent winner/loser patterns. They sit on top of Tiers 1–3. The skill HALTs if this view is unreachable — running with an incomplete forbidden list is not acceptable. |
| Mechanism reveal level | TEASER, PARTIAL REVEAL, or OVER-REVEAL — set by the operator at concept-card approval. Governs how strictly Step 6 enforces the mechanism-protection rules. TEASER is the default for Pioneer mode. |
| Field | What it means |
|---|---|
| forbidden_word_count | Total count of forbidden words found across Tiers 1, 1B, 2, 3, 3B, and 4. Zero is required for a passing verdict. For each hit: the word, the tier, the exact quote from the script, and the suggested replacement. |
| forbidden_pattern_count | Total count of AI patterns found across patterns P1–P18. Zero is required. For each hit: pattern ID, the exact quote, and the required fix. P2 (Binary Contrast) allows a maximum of 1 per script — natural speech can occasionally use this construction; more than 1 is an AI signal. |
| em_dash_check | Count of typographic em-dashes (—) found in guru spoken lines. The deterministic pattern scan checks for these as part of STEP 1. Pass = zero em-dashes in spoken dialogue. This is the check that caught 4 violations in sw-tc001 and 6 in sw-tc005 when the construction log self-certified clean. |
| numeral_check | Verification that all numbers in spoken guru lines are written as numerals, not words. Pass = zero spelled-out quantities. The eval found "four days a week" and "Twenty years of experience" as violations in sw-tc005 — a script that used numerals for equivalent counts elsewhere. |
| structural_check | Pass/fail summary for Steps 2–5 combined: symmetry count (max 1), literary verb count (0), copula-avoidance count (0), CTA structure (all 5 required elements present), internal dialogue count (4–6), specific numbers (3+), specific timeframes (3+), sustainability language (1+), connected sentence ratio (~60%), conversational markers (3+), question tags (1–2), redundancies (0), unnecessary sentences (0). |
| format_adherence | Word count per section and total. Total target: 180–240 words. If out of range, identifies which section to adjust. |
| mechanism_reveal_compliance | Step 6 result. At TEASER level: zero element names, zero step counts, zero sequence language (no "First… Second… Third", no "3 things", no "in sequence", no "Step 1/2/3"). Mechanism-specific word count check: if "order", "sequence", "step(s)", "system(s)" plus any named elements total more than 3, flagged for revision. The eval's hg-warm A9 finding (where Hook 4 named 3 steps in sequence and self-certified "TEASER level") confirms why this check cannot be a self-cert. |
| spb_check | Social Proof Bridge (SPB) verification (Step 7). Mandatory in all formats. Location: Section 6 (Training Intro), 40–60 words. All 4 required elements must be present: (1) parallel journey ("I was in [name]'s shoes" or equivalent), (2) specific struggle with a number (dollar amount or time wasted), (3) brief "how I figured it out" (5–10 words), (4) social proof number with qualified audience named. |
| verdict | Binary: PRODUCTION READY (18/18 checks passed) · MINOR REVISIONS (16–17 passed) · MAJOR REVISIONS (fewer than 16 passed). No partial credit. No subjective assessment. Every FAIL must be fixed and the full scorecard re-run before the script is released. |
| agent_run_id | The Supabase agent_run row ID for this polish run. Stamped on every output row so the full run — inputs, findings, model calls, cost — can be traced back from any downstream use of the QA report. |
| Field | What it means |
|---|---|
| metadata block | Format, runtime estimate, word count, polish status (PRODUCTION READY / MINOR REVISIONS / MAJOR REVISIONS). |
| Scenes 1–7 | Hook, Transition, Struggle, Turning Point, Insight, Training + Social Proof Bridge, Call to Action — each with stage directions and guru dialogue. All forbidden words and patterns replaced. Em-dashes removed from spoken lines. Numbers in numerals. |
| production notes | Format notes, B-roll needs, pacing. These are preserved from ad-scripter-write output — scripter-polish does not rewrite them. |
| verification block | 18/18 scorecard, word count, forbidden words = 0, patterns = 0, SPB complete. Required before the script passes to /ad-log. |
Caption: The QA report wrapper below is representative — scripter-polish was not run as its own arm in the 2026-06-10 depth eval. The forbidden-word and em-dash findings are real: lifted verbatim from the eval's assertion grading of sw-tc001 (Skill arm A) in REPORT.md §3. The numeral finding is from sw-tc005 (Skill arm B), attributed separately. The 2026-06-10 eval found zero forbidden-word hits across all four arms — the real signal in this eval is the em-dash catch, not forbidden words.
AGENT RUN
agent_name: scripter-polish
expert_namespace: ida
triggered_by: pipeline (/ad-polish)
status: partial → MINOR REVISIONS
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
STEP 0C TIER 4 FORBIDDEN WORDS LOADED
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Source: active_launch_learnings_for_ida, section='forbidden'
Entries loaded: 0 (no IDA autopsy run completed yet — Tier 4 empty, expected)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
STEP 1 FORBIDDEN WORD SCAN [b-real: eval assertion §3/sw-tc001]
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Tier 1 hits: 0
Tier 1B hits: 0
Tier 2 hits: 0
Tier 3 hits: 0
Tier 3B hits: 0
Tier 4 hits: 0
TOTAL: 0 → CHECK 1 / 1B: PASS
STEP 1 FORBIDDEN PATTERNS P1–P18
Patterns found: 0
→ CHECK 2: PASS
STEP 1 EM-DASH CHECK (spoken AMELIA lines) [b-real: eval assertion A10 §3/sw-tc001]
Em-dashes found in spoken lines: 4 → CHECK: FAIL
Hit 1: "...it's too late to start something new — I want you to hear this."
Hit 2: "And none of it works — because none of it accounts for the one thing..."
Hit 3: "It's built around one skill your life experience makes you better at — not worse."
Hit 4: "James — 15 years in IT, now $8,000 a month working 4 days a week."
NOTE: Construction log self-certified zero em-dashes. That certification was wrong.
Deterministic character scan catches what the model's inline self-check misses.
Fix: Replace each em-dash with a natural pause marker or rewrite the clause.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
STEP 2 TOO POLISHED SYNDROME
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Symmetry count: 1 → CHECK 3: PASS (max 1)
Literary verbs: 0 → CHECK 4: PASS
Copula constructions: 0 → CHECK 4B: PASS
CTA structure (5 required elements present): YES → CHECK 5: PASS
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
STEP 3 REQUIRED ELEMENT COUNTS
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Internal dialogue (target 4–6): 5 → CHECK 6: PASS
Specific numbers (min 3): 6 → CHECK 7: PASS
Specific timeframes (min 3): 4 → CHECK 8: PASS
Sustainability language (min 1): 1 → CHECK 9: PASS
STEP 4 SENTENCE FLOW
Connected sentences (~60%): 62% → CHECK 10: PASS
Conversational markers (3+): 4 → CHECK 11: PASS
Question tags (1–2): 1 → CHECK 12: PASS
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
STEP 5 ECONOMY OF LANGUAGE
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Redundancies: 0 → CHECK 13: PASS
Unnecessary sentences: 0 → CHECK 14: PASS
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
STEP 6 MECHANISM-REVEAL PROTECTION (reveal level: TEASER)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Mechanism-specific word count: 2 ("approach" x2)
Element names present: 0
Step counts or sequence language: 0
TEASER threshold (max 3): within limit
→ CHECK 15: PASS
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
STEP 7 SOCIAL PROOF BRIDGE (SPB) VERIFICATION
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Location: Section 6 (Training Intro) ✓
Word count: 47 words ✓ (target 40–60)
(1) Parallel journey present: YES
(2) Specific struggle + number present: YES ("$8,000 a month")
(3) How figured it out (5–10 words): YES
(4) Social proof number + qualified audience: YES ("3 designers")
→ CHECK 16: PASS
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
STEP 8 WORD COUNT
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Hook: 28 | Transition: 18 | Struggle: 35 | Turning Point: 32
Insight: 28 | Training+SPB: 47 | CTA: 28
TOTAL: 216 words (target 180–240) → WORD COUNT: PASS
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
STEP 9 FINAL SCORECARD
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Check 1 Forbidden Words (Tier 1) 0 found PASS
Check 1B Forbidden Words (Tier 1B Ext.) 0 found PASS
Check 2 Forbidden Patterns (P1–P18) 0 found PASS
Check 3 Symmetry 1 found PASS
Check 4 Literary Verbs 0 found PASS
Check 4B Copula Avoidance 0 found PASS
Check 5 CTA Structure 5/5 present PASS
Check 6 Internal Dialogue 5 found PASS
Check 7 Specific Numbers 6 found PASS
Check 8 Timeframes 4 found PASS
Check 9 Sustainability Language 1 found PASS
Check 10 Connected Sentences 62% PASS
Check 11 Conversational Markers 4 found PASS
Check 12 Question Tags 1 found PASS
Check 13 Redundancies 0 PASS
Check 14 Unnecessary Sentences 0 PASS
Check 15 Mechanism Protection (TEASER) no viol. PASS
Check 16 Social Proof Bridge 4/4 elem. PASS
Word Count 216 words PASS
SCORE: 17/18 (em-dash check = FAIL, not yet a standalone scorecard check —
tracked via STEP 1 pattern scan; see improvement queue)
VERDICT: MINOR REVISIONS
Required: remove 4 em-dashes from AMELIA spoken lines, re-run scorecard.
Note: eval also flagged missing CTA phrase "free training" (assertion A6) and
absent Direct Truth Bridge "Here's the truth" / "Honestly" (VF2).
Both are ad-scripter-write improvement items, not scripter-polish fails.
AGENT RUN CLOSED status: partial status_detail: em-dash violations found; fixes required before re-run
Every abbreviation spelled out in full. Every term grounded in context.
| Term | In full / what it means |
|---|---|
| Tier 1 | AI Giveaway Words (Tier 1 of the forbidden-word list) — Words that sound like machine-generated copy: "journey", "navigate", "embark", "delve", "dive", "unleash", "unlock", "leverage", "utilize", "elevate", "harness", "realm", "fascinating", "profound", "groundbreaking", "revolutionary", "innovative", "disruptive", "insights", "tapestry", "craft" (as verb), "blueprint", "paradigm", "unprecedented", "beacon". Zero allowed in any script. |
| Tier 1B | Extended AI Vocabulary (Tier 1B of the forbidden-word list) — A second layer of AI giveaways, shared with the copy-humanizer skill: "garner", "interplay", "intricacies", "landscape" (abstract), "pivotal", "showcase" (verb), "underscore" (verb), "testament", "enduring", "vibrant", "rich" (figurative), "nestled", "renowned", "breathtaking", "align with", "fostering", "enhance" (generic filler), "valuable" (generic filler). Zero allowed. |
| Tier 2 | Formal or Literary Words (Tier 2 of the forbidden-word list) — Words that feel written, not spoken: "moreover", "furthermore", "consequently", "ultimately", "essentially", "optimize", "implement", "seamlessly", "effortlessly", "streamline", "robust", "comprehensive", "cutting-edge", "state-of-the-art", "empower". Zero allowed. |
| Tier 3 / 3B | Too-Polished Words and AI Transitional Phrases (Tiers 3 and 3B) — Tier 3 are words that sound like a copywriter, not a person: "resigning", "dictate", "pursuing", "contemplating", "endeavoring", "commencing", "capability", "vision" (abstract). Tier 3B are the AI transitional clichés: "and everything changed", "everything changed", "changed everything", "that changed everything", "then everything shifted", "and that's when everything clicked". Fix: replace with the specific consequence — "My income doubled in 6 months" not "everything changed." Zero allowed. |
| Tier 4 | Dynamic Expert-Specific Forbidden Words (Tier 4) — Loaded live from the Supabase view active_launch_learnings_for_<expert>, section = 'forbidden', before every scan. These are terms that ad-autopsy identified as problematic in recent winning/losing ads for the specific expert (e.g. IDA — Interior Design Academy). They sit on top of the static Tier 1–3 lists. Tier 4 is empty by default until ad-autopsy runs and writes entries. scripter-polish HALTs if the view is unreachable — running with an incomplete list is not acceptable. |
| P1–P18 | Forbidden Patterns P1 through P18 — 18 structural AI-writing patterns detected by regex in Step 1. Examples: P1 (Through-Not Binary: "through [X], not [Y]"), P2 (Binary Contrast: "It wasn't [X]. It was [Y]."), P4 (Triple Repetition: same structure × 3 with periods), P6 (Imagine Opener), P14 (Most People generalisations), P18 (Numbered Formula Hook: "[N] steps/ways/secrets to [outcome]"). Max for P2 is 1 per script; all others are zero-tolerance. |
| Em-dash | Em-dash (—) — The long typographic dash character. In spoken ad scripts, an em-dash in a guru dialogue line is an AI writing pattern — natural speech does not "write" in dashes. The deterministic character scan in Step 1 flags all em-dashes in AMELIA or guru spoken lines. The 2026-06-10 eval found 4 in sw-tc001 and 6 in sw-tc005, both self-certified as zero by the writing skill's own construction log. |
| TEASER | TEASER (Mechanism-Reveal Level) — The default reveal setting for Pioneer mode scripts. At TEASER level, the ad is allowed to say there is a method and that it works — but no element names, no step counts, and no sequence language. The viewer cannot reconstruct the method from the ad alone. Forbidden at TEASER level: "3 things you learn in sequence", "First you do X, then Y", "Phase 1/2/3", "Step 1/2/3". Allowed: "the approach", "what was missing", "what I discovered", "the method", "something nobody showed me". |
| PARTIAL REVEAL | PARTIAL REVEAL (Mechanism-Reveal Level) — Names one concrete element without naming the sequence, the step count, or the other elements. Example: "There's one internal system that has to be addressed first" (names category, not the system). Used as a testing variable alongside TEASER scripts — the idea is "if step 1 is this smart, I need the rest." Max 2–3 per batch. |
| OVER-REVEAL | OVER-REVEAL (Mechanism-Reveal Level) — Names 2 or more elements and their order, or names the step count. Example: "6-step drainage protocol — first the liver, then the kidneys, then the bowels." Forbidden in new scripts. Existing filmed over-reveals should test in-market to generate comparison data against new TEASER/PARTIAL scripts — do not replicate the pattern. |
| SPB | Social Proof Bridge (SPB) — A mandatory 40–60 word block in Section 6 (Training Intro) of every script. Must contain all 4 elements: (1) a parallel journey statement, (2) a specific struggle anchored to a number, (3) a brief "how I figured it out" (5–10 words), and (4) a social proof number with a named qualified audience. scripter-polish Step 7 checks all 4 elements are present. Skipping the SPB is never allowed in any format. |
| PT / H | Primary Text (PT) and Headlines (H) — The Meta ad copy fields that appear in the feed alongside the video. In the IDA (Interior Design Academy) creative system, PT and Headlines are soft wrappers — compliant, low-key, never written as sales letters. scripter-polish does not run the full 18-check scan on PT/H copy — that is ad-compliance territory. |
| IDA | Interior Design Academy (IDA) — The expert identity for Amelia Fenmore, an interior-design business coach. The expert namespace in all IDA Supabase rows is 'ida'. Cold Meta ads drive TOF (Top of Funnel — cold traffic, people who have never seen Amelia's content before) audiences to a free training, which converts to booked sales calls. IDA is the primary expert for which scripter-polish currently runs in production. |
| Voice Book | Voice Book (Expert Voice Book) — The Layer 2 expert profile artifact, built by ad-voice-profile and stored as the current expert_profile row in Supabase. scripter-polish reads the Voice Book at Step 0B to enable voice fidelity checks — including the copula avoidance exception ("if the expert literally uses this phrasing in the Voice Book"). The old name "Layer 3 calibration" or "L3 calibration" is deprecated — do not use it. |
| CTA | Call to Action (CTA) — Section 7 of every ad script. scripter-polish checks that all 5 required CTA elements are present: 3 or more varied benefit sentences (each with a different opener), a qualifier ("This is for you if…"), a reassurance ("Even if…" / "Without…"), an empowering bridge ("That's what I want to help you with"), and a warm close ("Click below and I'll see you there"). |
| Supabase | Supabase (database platform) — The PostgreSQL-based database that hosts the SKL ad creative system data layer. scripter-polish reads from Supabase at Steps 0A (open agent_run), 0B (read expert_profile), and 0C (load Tier 4 forbidden words). The skill writes to Supabase to close the agent_run row at the end of every run. Agents read Supabase views only — never Fibery, Drive, or repo files at runtime. |
| agent_run | agent_run (Supabase audit table) — The cross-cutting table that records every agent run. scripter-polish opens an agent_run row before any scan (Step 0A) and closes it at the end with status = success / partial / failed / halted and a status_detail note. The run ID is stamped on every output row. HALT if Supabase is unreachable at startup — never treat an infrastructure failure as an empty result. |
| Hermes | Hermes (autonomous background agent layer) — The always-on agent system that maintains the Supabase data layer. Curator-Hermes, Voice-Hermes, Sales-Hermes, and Scout-Hermes run continuously or daily to keep the swipe library, competitor intelligence, and performance views current. scripter-polish does not trigger Hermes — it reads from Hermes-maintained views. |
| Fibery | Fibery (project management and creative entity tracker) — 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. scripter-polish never reads Fibery directly at runtime — it reads Supabase views only. |
| OpenRouter | OpenRouter (model routing proxy) — The API gateway through which all language model calls in the system are routed. Provides unified billing, model switching, and per-call logs (model ID, provider, cost) that feed the agent_run audit trail. All scripter-polish model calls (Haiku 4.5, Sonnet 4.6, Opus 4.8) go through OpenRouter. |
| HITL | Human in the Loop (HITL) — The operator approval gate at every pipeline stage. In the ad creative pipeline (V1), no skill executes autonomously — the operator approves at every gate. scripter-polish is the last automated gate before the operator approves the final script for /ad-log and /ad-brief. |
| CPBC | Cost Per Booked Call (CPBC) — How much money was spent on Meta ads to get one person to book a sales call with Amelia Fenmore. The primary success metric for IDA cold traffic. Used by ad-autopsy when deciding which patterns to write to the Tier 4 forbidden-word view that scripter-polish reads at Step 0C. |