AI actor demo: beat sheet + line rules
Runtime target 25-30 s (range 15-35 s). Words = runtime × the locked Omni pace (lock measures it; omni.py default 2.7 wps, 10-06 measured 2.2-2.7). That gives 65-85 words, 6-9 pack lines. Every line is one Omni take, ≤10 s (plan_line refuses longer lines). Most lines are 8-16 words (4-6 s buckets, the cheapest).
| # | Beat | % | Lines | Visual (job.json) | Job | Line rules |
|---|---|---|---|---|---|---|
| 1 | Hook to camera | 0-12 | 1 (H1/H2/H3 variants) | AI UGC, frame avatar |
Stop HER: name her by an observable symptom, in action | 8-14 words; 2nd person or a callout about her ("If you're…", "The seventh alarm in your house is you"); emotion + curiosity gap + high stakes; no product, no backstory, no "Hi guys"; overlay text = this line |
| 2 | Problem in one line | 12-28 | 1-2 | broll:<sleeps-through-it> (band-free omni b-roll or a real clip, e.g. Lori boy + phone alarms), then back to her |
The burden + the root cause | Concrete counts/times from VOC; failed solutions generic (louder alarms, phone across the room, lights on): never brand names, never bed shakers; root cause = sound doesn't reach a deep-sleeping brain (Fish's ruled line, verbatim or the claims-register wording) |
| 3 | Demo | 28-60 | 2-3 | scene change: frame scene2 (band on the counter, gated); product line product: true + end_frame: holding; then broll:<band clip> (gated omni or real) over her voice |
Show the band doing its one job | First product mention here, named once ("Dawn Band"); touch gets through; silent to everyone else in the house; keeps buzzing, stronger, until he turns it off. The words describe what the shot shows at that moment (KJ: "show what she's saying") |
| 4 | Result | 60-82 | 1-2 | AI UGC on scene2, or a real "kid out the door" clip |
Payoff on HER, then his independence | Her quiet morning / not the alarm anymore comes first; he gets himself up comes second; no exaggerated transformation; no college/kid-money stakes |
| 5 | CTA | 82-100 | 1 | AI UGC, then endcard.py 2.5 s with the real cutout |
Risk reversal + action | "60 nights" guarantee as reassurance, not the headline; no spoken price (price test live since 10-04); end card (optional, --end-card; off by default per Fish 10-06) carries name + offer |
Line rules (all beats)
- Callout, not testimonial. Her own experience gets at most one line, as credibility (she solved it: "I was the alarm for three years"). Everything else is said TO the viewer about the viewer's mornings. Banned: "obsessed", "game changer", "holy grail", "five stars", "you guys", unboxing talk.
- One sentence per line; pronoun-first; every line passes the said-out-loud test.
- Numbers spelled out ("six forty"); acronyms through
job.say(ADHD → A-D-H-D). To stress a word, CAPITALISE it in the text (captions drop the caps). - No line describes something the shot can't show. A product line sits over a gated frame (ugc-omni
pick --product) or real footage of exactly that action. - Product facts only from product-truth.md: three alarms, no app, vibration gets stronger, display dark when idle. Never "smartwatch", never "screen", never "app".
- Claims are unlocked (Fish 10-02: ADHD, 3x stronger, 10,000+ parents, guarantee). Put at most one per ad in this short format, and it goes in the demo or CTA beat, never the hook.
- Stakes: caused by the mornings, landing on her (late to her job, the school letter, the fight at the door). Escalation is allowed when it's sourced from VOC.
Register cells (one per ad; the cell IS the test variable)
- Plain (default): short, literal, warm, a little tired.
- Challenge (gpzy2ofG0Dw's "can X do Y in Z" device): the hook asks the test, e.g. "Can one buzz get a kid who sleeps through six alarms out of bed?" The demo beat is the answer, and the time jump is a caption ("6:40 the next morning"). Our coded "experiment" device scored 1.67 in songs, so this is the most promising cell.
- Caveman (PmXqgiFn9_Y): deliberately broken, very short words. It breaks our said-out-loud rule by design, so it needs Fish's ruling first. Native voice only (the model holds the intonation; TTS needed letter-stretch hacks). Never on an ADHD or diagnosis line.
Structure example (ILLUSTRATIVE — shows the shape only, not shipping copy; real lines come from VOC with src IDs and Fish's approval)
- H1 [AI UGC, avatar] "If you're still knocking on his door at six forty, this is for you." (hook)
- [broll: real boy asleep, phone alarms going] "He's not ignoring you. Sound just doesn't reach a brain that deep asleep." (problem + root cause)
- [AI UGC, scene2, product line: she lifts the band off the counter into her palm → end_frame holding] "So this goes on his wrist. Dawn Band. It buzzes, nobody else hears it." (demo, product named)
- [broll: band on his wrist, kid sitting up (gated omni, or real)] "And it keeps getting stronger until he turns it off himself." (demo, mechanism)
- [AI UGC, scene2] "Now I drink my coffee while he gets himself up." (result on her → his independence)
- [AI UGC, scene2] "Sixty nights. If it doesn't wake him, you don't pay." (CTA) → end card (optional,
--end-card; off by default per Fish 10-06)
≈ 70 words ≈ 26 s at 2.7 wps. H2/H3 swap only line 1.