| date | learning | source |
|---|---|---|
| 2026-10-06 | One shot per person (street interview / vox-pop) removes cross-shot identity holding, the failure that killed Side Effects (9-30) and yapper (10-05). | ~/research/davidaistar/REPORT.md §2.4, §4 #5 |
| 2026-10-06 | Foreplay #9 (Skincu lipstick, 54 s) AI tells: stiff micro-expressions, slight lip-sync delay, suspiciously static street, unnatural hand/product interaction; its own risk note says don't let the avatar touch the product (wristband named as the hard case). | foreplay/09_street_interview.gemini.md |
| 2026-10-06 | Generated hand holding the Dawn band scored 3-4/10 (fused fingers, smartwatch look) even with real hand-holding refs; product must be real footage or a real cutout. | project_dawn_yapper_2026-10-04 (10-04 ~21:45, ~22:00) |
| 2026-10-06 | fal Seedance reference-to-video refuses realistic person frames; image-to-video accepts. Never bypass likeness filters (blur/medium-distance trick not adopted). | project_dawn_yapper_2026-10-04 (~19:00); analysis/diff_ai_ugc.md §2 |
| 2026-10-06 | H3 Max i2v with no audio input speaks a quoted line natively (Fish 'yea its good' 10-04). Only wired in yapper.py chain-render --native with a hard-coded car-pickup prompt (yapper.py:525); H3 stretches speech to the requested duration (duration = ceil(words/3.8)); never quote dialogue inside action text. | project_dawn_yapper_2026-10-04; scripts/yapper/yapper.py |
| 2026-10-06 | Fish closed the yapper lane 10-05 over overengineering; any photoreal people format starts from the simplest recipe (one start frame, plain prompt, one take) and needs his explicit go. | corrections-hot.md 2026-10-05; project_dawn_yapper_2026-10-04 |
| 2026-10-06 | Testimonial pairings are Dawn's weakest (statics 1.21-1.31, testimonial songs 1.26); recipe B callout wins. Vox-pop must be a chorus of the problem with one product mention, not product praise. | output/dawn-combo-map-2026-10-05/MAP.md §2 |
| 2026-10-06 | knowledge/brands/dawnbands/voc-*.md and phrasing-bank.md are retired pointer stubs with no quotes; answer sources = research/customer-evidence-2026-09-15.md (S01-S08, Q01-Q15), the Cooper stake bank (dawn-stakes.md, stakes-raw-owned.md), research/voc-competitor-reviews-2026-10-02.jsonl (q-IDs). | file reads 2026-10-06 |
| 2026-10-06 | omni.py supports many people in one job: per mom refscan -> ref -> avatar -> pick --name <frame>; lines carry frame. refscan/ref overwrite ref/, so do one mom at a time and copy ref.jpg aside. assemble has no interviewer track, question banner or end card (endcard.py runs standalone after). cost counts real-footage b-roll as an Omni clip. | scripts/ugc_omni/omni.py (cmd_refscan, cmd_ref, cmd_pick, cmd_assemble, cmd_cost) |
| 2026-10-06 | skills/ugc-omni/job.example.json dresses the avatar in a grey crewneck, which conflicts with feedback_ugc_avatar_wardrobe (no grey tops); don't copy it. | skills/ugc-omni/job.example.json; feedback_ugc_avatar_wardrobe |
| 2026-10-06 | Audit: si-010 is stale. job.example.json now has avatar.wardrobe "keep" (no grey crewneck); the risk is inheriting the ref person's grey top. Its bed-shaker line and generated demo b-roll (hand fastens band, taps display) are still there: never copy them. Omni bucket math uses DEFAULT_WPS 2.7 (not 3.0): 4 s <=9 words, 6 s <=14, 8 s <=20, 10 s <=25. | skills/ugc-omni/job.example.json; scripts/ugc_omni/omni.py plan_line (audit 2026-10-06) |
| 2026-10-06 | Seedance 2.0 references replaced: registry current = Seedance 2.5 on fal (ref-to-video refuses realistic faces; i2v native audio wired only as yapper talk --arm seedance_native). omni.py default image arms include nbp (Fish 10-06 comment) while the registry retired Nano Banana Pro 10-01: flagged, skill uses --arms gpt2 until Fish rules. | _MODEL-REGISTRY.md; scripts/yapper/yapper.py ARMS; scripts/ugc_omni/omni.py DEFAULT_ARMS |
| 2026-10-06 | Interviewer audio must match the street: record outdoors or mix the takes' street ambience under the line; a dry indoor voice over generated street takes reads detached. | starpop how-to-make-ai-ugc-videos-seedance-2-0; how-to-use-seedance-2-0-to-make-ads |
| 2026-10-06 | Omni lock rules now end 'No captions, subtitles or on-screen text.': models fill unspecified ad conventions with burned-in text. rules are in omni prompt_hash, so set before lock. | starpop how-to-use-seedance-2-0-to-make-ads; how-to-use-kling-3-0-to-make-ads; scripts/ugc_omni/omni.py prompt_hash |
| 2026-10-06 | Seedance 2.5 product proof rejected by Fish 10-06: product moments stay real footage + end card/cutaway. | output/model-proofs-2026-10-06/README.md |
| 2026-10-06 | Fish 10-06: photoreal ads carry a 'dramatization' label; lane reopened. | Fish chat 10-06 |
| 2026-10-06 | Production handed to ugc-omni G0-G4 (Fish 10-06). Band now = product-gated omni b-roll insert (broll.band product:true, pick --name broll_band --product >=7/10, display-off wording) with real footage as fallback; no mom handles the band. Flash gotcha: every hook line needs end_frame = its own frame or omni.py lands it on the body first frame (another mom). Arms gpt2,sd5; no draft step; H3 native voice = side arm. | skills/ugc-omni/SKILL.md; scripts/ugc_omni/omni.py take() |
format-street-interview
Photoreal vox-pop / street interview ad, 30-60 s. An off-camera interviewer asks moms one question ("Who gets your kid out of bed on school mornings?"), 6-8 different moms each answer in ONE 4-8 s take with real VOC lines, and the band is the answer, shown in a product-gated b-roll insert (real footage as fallback).