Warehouse — beat sheet, footage truth, shot list
Evidence status: UNGROUNDED. Timings below come from the EVOLVE slots (vo-broll lane) and the common shape of demand-proof ads, not from a measured reference. Replace them with the dissector's measured pacing (procedure at the bottom) when Fish sends the real format #11 link.
Runtime 30-45 s at ≥3.0 wps final (lane floor) ≈ 100-150 words. Slots are ceilings: the voice sets the clock, a segment ends at its last word + 0.08 s (handoff law 1). Need 40 s? Write more words, never more silence.
Beats
| # | Beat | EVOLVE slot | Time | Words | Picture | Job | Line rules |
|---|---|---|---|---|---|---|---|
| 1 | Hook (×3) | hook | 0-3 s | 3-7 | her morning (door, knock, asleep kid), tier A; packing room / band on bench at 0 s only if Fish waives his 8-15 no-product-before-reveal rule | Stop HER: her symptom + the pile | Names her by an observable symptom; demand number optional; no backstory; never a pure "we sold out" mystery |
| 2 | Bridge (×3) | bridge | 3-8 s | 12-25 | her morning: door, third knock, asleep kid, clock (2-3 cuts) | The burden is hers, the mornings caused it | Pronoun-first; concrete counts/times from VOC; failed solutions generic (no brands, never bed shakers); no band |
| 3 | Objection | hold | 8-13 s | 15-20 | her face at the door / the kid asleep under noise | Say her doubt before she does | "He sleeps through everything. Why would a band work?" class, VOC-shaped |
| 4 | Claim | hold | 13-22 s | 25-35 | a phone alarm ringing beside a still kid → the band on a wrist, arm jolts (reaction-primary) | Root cause + mechanism | Fish's ruled lines verbatim: sound doesn't reach a deep-sleeping brain; touch gets through; silent to everyone else; keeps going until they turn it off |
| 5 | Proof (*-reveal) |
hold | 22-30 s | 20-30 | pouches on shelving, hands packing, band shivering silent on the bench | Social proof the mechanism works | "10,000+ parents" as written; stock line only if true today; no invented order counts/per-day numbers/staff counts |
| 6 | Benefit | hold | 30-35 s | 12-18 | kid up and dressed, out the door; her coffee, quiet hallway | Kid independence / her morning back | Behavioural transformation shown, not stated as a feeling |
| 7 | CTA | CTA | 35-45 s | 20-30 | hand takes a pouch off the pile; end card (optional, --end-card; off by default per Fish 10-06) ≤2 s under "tap below" |
Offer + risk reversal | Price from the live PDP JSON; 60-night guarantee as risk reversal, never the hook; one action |
Split rule, measured from the cut list: packing room ≤50 % of runtime, her morning ≥40 %.
Footage-truth table (every scene gets a tag in the pack)
| Tag | What it is | Lines allowed over it | Never |
|---|---|---|---|
real-dawn |
Footage Fish supplies of the real Dawn packing/fulfilment | deictic ("today's orders", "this shelf") if Fish confirms it's true | staff names without their consent |
stock |
Pexels/stock warehouse or packing footage | non-deictic: the line carries the claim, the picture illustrates | "our warehouse", "our team", a counted pile as today's orders, competitor or other brands' packaging in frame |
ai |
Generated b-roll (registry roles) | non-deictic, same as stock | presenting it as a real facility or a real person; "LIVE"/"behind the scenes at Dawn" overlays |
animated (W2) |
cartoon-h3 | deictic fine: reads as illustration | a cartoon packer named as a real employee |
Shot list by tier (core §2b; registry picks the model)
| Shot | Tier | Source order | Prompt/selection notes |
|---|---|---|---|
| Wire shelving stacked with pouches, out of focus | C | ai (Cheap simple-motion i2v) or stock | pouches back-side or soft; slow handheld drift |
| Empty packing table, morning light | C | stock → ai | plain table, tape gun, no labels |
| Band shivering silent on the wooden bench | C | ai | "lies flat on… shivers in place against the wood, rattling with tiny rapid movements"; display dark; solid black inside and out |
| Hands sliding a band into a pouch / sealing the ziplock | A | real-dawn → ai (Photoreal role, one-unit proof) | hands only, no face; closed fastened loop; pouch = composite if legible |
| Pile of pouches being counted into a crate | A | real-dawn → composite | legible pouches only from assets/dawnbands-pouch-3d-transparent.png composites |
| Her door, the knock, the asleep kid | B | own dawn-raw → stock |
one actress, one kid per ad; kid in sleepwear |
| Band on wrist, arm jolts awake | A | own dawn-raw → ai |
reaction-primary; wrist down after; never raised to the face |
| Kid out the door, backpack on | B | own dawn-raw (creator-kris entryway clips) → stock |
same kid as the bridge (cast law applies to product clips too) |
| Hand takes a pouch (CTA) | A | real-dawn / own footage with pouch → composite | pouch faces camera only if real or composited |
Pack skeleton (W1, one file per hook variant; ILLUSTRATIVE values)
{
"ad_slug": "wh-demand-a", "format": "vo-broll", "format_skill": "format-warehouse", "brand": "dawnbands",
"created": "<date>", "status": "draft", "execution": "W1",
"parent": "<recipe-B static whose callout + mechanism this reuses, with CPA>",
"iteration": "proof slot: warehouse demand vs the static's proof",
"stock_check": "<date> all variants available -> no scarcity lines",
"pov": "narrator-expressive", "title": "<hook headline>", "end_card": "<price + 60 nights + tap below>",
"scenes": [
{"scene_id": "h1-hook", "vo": "<3-7 words>", "footage_truth": "stock",
"shot": {"source_pref": "rip", "search_terms": ["mom knocking closed bedroom door morning"], "tags": ["mom", "door"]}},
{"scene_id": "h1-bridge", "vo": "<12-25 words>", "footage_truth": "stock",
"shot": {"source_pref": "rip", "search_terms": ["mom knocking on teen bedroom door morning"], "tags": ["mom", "door", "morning"]}},
{"scene_id": "hold-proof-reveal", "vo": "<20-30 words>", "footage_truth": "ai",
"shot": {"source_pref": "gen", "tags": ["product", "macro"], "gen_keywords": "band rattling on wooden bench"}}
]
}
Shared scenes (hold-*, cta) are byte-identical across -a/-b/-c; only h1-hook / h1-bridge differ (rename h2-*, h3-* per variant).
Structure example (ILLUSTRATIVE — shape only, not shipping copy; real lines come from VOC, the stake bank and Fish's approval)
- HOOK "Ten thousand moms stopped knocking twice." (her fist at the closed door; pouches here only with Fish's 8-15 waiver)
- BRIDGE "You knock at six forty. Again at six fifty. He doesn't move." (her at the door; the still kid; the clock)
- OBJECTION "And you've tried every alarm there is." (phone alarm ringing beside the sleeping kid)
- CLAIM "Sound doesn't reach a deep-sleeping brain. Touch gets through." (arm jolts awake, wrist down)
- PROOF "That's why more than ten thousand parents ordered one." (hands sealing a pouch; band shivering silent on the bench)
- BENEFIT "He's up before you knock. You get your morning back." (kid in the hallway, backpack on)
- CTA "Sixty nights to try it. Tap below." (hand lifts a pouch; end card (optional,
--end-card; off by default per Fish 10-06))
Line rules (all beats)
- One sentence per scene line where possible, 5-12 words; hooks 3-7 words.
- Said-out-loud test; pronoun-first; literal (a 6th grader gets it).
- Numbers spelled for EL ("six forty", "ten thousand").
- "We" = the brand. Never a named person, never "our warehouse team" over non-real footage.
- Scarcity words (sold out, back in stock, last batch, almost gone, waitlist) need a dated, Fish-confirmed stock event in
stock_check.
Grounding procedure (when Fish sends the real #11 link)
python3 scripts/ad_dissector.py "<foreplay share URL>" --slug warehouse-ref --brand-context "DawnBands silent vibrating wake-up wristband"(add--competitorif the source is a lane-leader in our niche: then the output is a gap map, never a template).- Read
output/ad-dissect/<slug>/dissect.md+pacing.json: cuts per 10 s, mean shot length, wps, beat roles, speaker (on-camera person vs VO), what's on screen at 0-3 s. - Update this file: beat timings + word budgets from measured wps; the shot mix (how much warehouse vs life); whether a person speaks (if yes, that's W3 and the gates stay).
- Rewrite references/sources.md with the beat-by-beat paraphrase, keep / change list; flip the evidence status in SKILL.md §2; append a line to memory/learnings.jsonl.