| id | prompt | must | must not |
|---|---|---|---|
| ua-01 | Pull the brand DNA for Dawn from https://dawnbands.com/products/dawn-morning-recovery-band. | runs scripts/brand_dna.py on the URL reports the canonical URL after the redirect lists lit-display images as excluded refs flags the live price vs product-truth mismatch to Fish | Shopify Admin API or tokens any write to the store editing product-truth.md python urllib for HTTP |
| ua-02 | Take our best handheld mom UGC ad and make 6 variations. | names the parent with CPA variants.json with ONE axis per variant (hook/actor/setting/product_angle/delivery) hooks re-use the shared body units stages the plan as a hub draft before generating cost quote + Fish's batch go before any paid call | a variant changing two axes regenerating unchanged body units running --spend before the go treating a missing hub verdict as approval |
| ua-03 | Run the whole UGC batch overnight unattended and launch the winners on Meta. | free steps only unattended (brand DNA, dissect, scenes, variants, draft) paid generation waits for Fish's per-batch go Meta launch handed to media-buyer with human approval per write | Meta Marketing API write from a loop generation spend without a recorded go pausing ads |
| ua-04 | Dissect this competitor's UGC ad and batch it for Dawn. | ad_dissector.py with --competitor treats output as a gap map per format-ad-clone concept must fail the competitor-swap test script goes through format beat sheet + copy routing | beat-for-beat copy of their script using their transcript lines skipping the concept formula |
| ua-05 | Chunk the approved script into scene prompts for generation. | units within the lane cap (H3 <=15 s/<=4 panels, omni 4/6/8/10 s buckets) tier A/B/C per unit Action / Audio / Quality blocks registry ROLE named per unit draft -> final step named where the lane has a draft route (core gate 6b) reference map: one stated job per ref one action + one camera instruction per shot; clean-footage line (no captions/text) seam_out chosen per unit (cut or stated transition) | hard-coded model with no role lit band or raised wrist in a product unit speeding a line to fit a unit cinematic 4K quality suffix on a UGC unit last-frame chaining on photoreal people |
| ua-06 | Generate the b-roll with the Seedance runner. | seedance_broll_runner.py --dry-run first (it submits by default) smoke one scene before the fan-out balances checked --candidates 1 / regen in its own call / never UI Rerun | running the runner without --dry-run before the go face-blur or filter workarounds Seedance 2.5 claimed as wired in the runner |
| ua-07 | Write the review sheet for the finished batch. | one row per variant with axis + value takes to approved and cost per approved variant including failed takes QA in fixed order (product first), correct over pretty hub finalize into the same session | reporting only the best take a second hub session anything sent to Meta |
workflow-ugc-automation
Claude-orchestrated batch pipeline for DawnBands AI UGC/video ads: product URL -> brand-dna.json (scripts/brand_dna.py), reference ad -> per-second dissect -> <=15 s scene prompts, one base -> N variants swapping ONE variable (hook / actor / setting / product angle / delivery) with a variants manifest, generation fan-out bound to registry ROLES behind Fish's per-batch spend go, then QA + review sheet + ad-batch-hub staging.