Manufactured Love: Production Plan

Status: v0.3, 2026-09-04. Phase 0 approved; D1 to D7 locked (section 7). Phase 1 research done (8 files, /research/). Phase 2 bible drafted and awaiting review (/bible/). Review site: https://dating.dev.dgw.to (this doc renders at /plan.html).

0. Outcome and acceptance

Deliverable: one 120-second trailer for a fictional streaming docuseries about the producers of a high-drama dating show.

Acceptance (all must hold):

# Criterion How checked
A1 120s ± 5s, 16:9, 1080p or better, 24 fps, stereo mix ffprobe on final MP4
A2 6 to 8 recurring producer/PA characters, recognizable across every shot they appear in side-by-side contact sheet per character; Daniel signs off
A3 A legible plot: hook, escalation, turn, button, title card script table read + rough cut review
A4 Matches the measured trailer grammar (R3, 10 trailers): montage sections average 0.8 to 1.3 s per shot, setup 1.5 to 2.5 s, two mid-trailer music stops, a 2 to 4 s near-silence before the title, title card at 86 to 96% of content shot-length histogram per 20 s window from scripts/analysis/trailer_metrics.py run on our cut; visual side-by-side
A5 Dialogue lines are intelligible and lip-synced on every on-camera speaking shot per-shot QA flag
A6 Hosted and playable at https://dating.dev.dgw.to/trailer/ curl 200 + browser playback
A7 Every phase has a review page on the site before the next phase starts index page shows status per phase

Non-goals for this pass: a full episode, vertical cutdowns, distribution, real-person likenesses, licensed music.

1. Premise, format, and prior art

Logline (draft): Nobody watches a dating show for the love story. A docuseries follows the story producers, field producers, and production assistants of a Netflix-style villa show as they engineer every hookup, breakup, and blowup the audience will think was real.

Frame: The audience never sees the finished dating show. They see the production of it. Every interview is a producer or PA in a confessional chair. Contestants appear only as raw feed, hidden-camera, or monitor-wall footage. The producers narrate what they did to them and why.

Series title: Manufactured Love (Daniel, 2026-09-04). Name-collision check in docs/research/name-check.md.

Show-within-a-show: Sunburn, a fictional Too Hot to Handle / Love Island hybrid. Trailer only needs a logo card and a recognizable look. Backup names: Heat Index, Villa Rules.

Platform: Bulu, a fictional streamer parodying Hulu (lowercase wordmark, green field, its own tagline). Different green and typeface from Hulu so the trade dress is distinct. Backup: Tantamount+. End card: "A Bulu Original Documentary Series. Coming Soon."

Tone: dark comedy documentary (locked). Straight-faced, no winking. Producers are charismatic, proud, and occasionally horrified at themselves. The comedy comes from the gap between what they say in the chair and what the raw feed shows.

Explicitness rule: manipulation, alcohol, and sex live in dialogue and in implied visuals, never shown outright. Implied beats to build from: a PA tops up a glass below frame; a producer speaks into a radio while a contestant's face falls on the monitor wall; a whiteboard reads "BREAK UP BY EP 4"; a phone slides across a table; a night-vision doorway silhouette; a producer in the chair says "we didn't make her do anything."

Prior art to study and differentiate from:

2. Research tracks

Each track produces a markdown file under docs/research/ with cited sources, rendered to the review site. Claims below are seeds to verify, not findings.

R1. How dating shows are actually produced

Seeds to verify with primary or well-sourced secondary sources:

Output: docs/research/R1-production-reality.md, plus a glossary.md the script must use correctly.

R2. Genre visual and editing grammar

Output: docs/research/R2-genre-grammar.md with a style sheet: 10 reference stills, palette swatches, shot-length targets.

R3. Streaming trailer grammar

Output: docs/research/R3-trailer-grammar.md with a beat sheet template the script fills in.

R4. AI video models and character consistency (done 2026-09-04, refresh at Phase 5)

Live fal catalog pulled with the fal key on 2026-09-04: 154 text-to-video and 233 image-to-video endpoints. Flagship options for talking humans, prices as listed on fal today:

Model fal endpoint Price (per second) Max clip Audio Ref-to-video Notes
Alibaba Wan 3.0 Prime (Aug 24) alibaba/wan-3.0-prime/{text,image,reference}-to-video $0.14 at 720p, $0.28 at 1080p 30s single pass Yes, same pass 10 images + 5 video + 5 audio Best reports for two-person dialogue lip-sync at moderate cost
ByteDance Seedance 2.5 (Jul 31) bytedance/seedance-2.5/{text,image,reference}-to-video ~$0.47 at 720p, ~$1.16 at 1080p 30s multi-shot Yes Up to 50 refs Highest face realism reports; safety filters reject flirtation/drinking prompts; mixed lip-sync reports
MiniMax H3 Max (Aug 26) minimax/h3-max/{text,image,reference}-to-video, /director, h3-max-turbo $0.02 at 768p promo to Sep 7, list $0.08 15s Yes, stereo Yes Cheapest iteration; strong lip-sync reports; weaker voice timbre
Google Gemini Omni 1.1 Flash (Aug 27) google/gemini-omni-flash/v1.1/* $0.15 at 1080p, $0.30 at 4K 8s, extend to 40s Yes Yes Clean speech; hero-shot fallback
Google Veo 3.1 (Oct 2025) fal-ai/veo3.1, /fast, /reference-to-video $0.40 audio 1080p; fast $0.15 8s, extend Yes Yes Oldest flagship, most expensive; cleanest speech per reports
Kling 3.0 / O3 (Feb 2026) fal-ai/kling-video/v3/pro/*, o3/* $0.168 with audio 15s, multi-prompt up to 6 shots Yes Elements Repeated audio/lip-sync complaints
LTX 2.5 (Aug 11), FLUX 3 video (Jul 23), Grok Imagine 1.5 (Jun 17) see catalog $0.12 to $0.29 10 to 20s Yes Partial Bench only if the top three fail

Not available: Sora (product shut down April 2026; fal endpoints deprecated), Runway Gen-4.5 (not on fal), Luma Ray 3.2 (on fal only via luxin's wired luma/agent/ray/v3.2, no ref-to-video).

Talking-head specialists on fal: fal-ai/bytedance/omnihuman/v1.5 (image + audio to talking video, $0.16/s), fal-ai/kling-video/lipsync/audio-to-video, fal-ai/sync-lipsync/v3.

Character reference images: fal-ai/nano-banana-pro, fal-ai/nano-banana-2, fal-ai/bytedance/seedream/v5/lite/{text-to-image,edit}, fal-ai/gpt-image-1.5. All in the live catalog.

Consistency approach (to validate in Phase 3 and 5):

  1. Generate a character sheet per person: 1 neutral front, 1 three-quarter, 1 profile, 1 full-body, 2 expression shots, in the locked wardrobe, on a neutral grey backdrop. Then two lighting variants (confessional, villa daylight).
  2. Feed 3 to 10 sheet images as references into reference-to-video for every shot the character is in. Never rely on prompt text alone for identity.
  3. For the confessional chair shots, generate a keyframe still first (image edit with references), then image-to-video with audio. Keyframe approval is a cheaper gate than clip approval.
  4. Use first-last-frame or extend endpoints for shots that must continue across cuts.
  5. Keep a per-character refs/ folder and a drift.md log of what broke identity (hair, glasses, wardrobe pattern).

Sources and the community comparison notes are in docs/research/R4-models.md (to be written from the 2026-09-04 lookup; X-post claims are single-creator tests and not reproduced).

R5. Long-form and multi-shot AI video practice

Output: docs/research/R5-longform-practice.md and the dialogue-strategy decision.

3. Creative deliverables

All in the repo, all rendered to the review site.

4. Technical pipeline

Stack: TypeScript on Node 22, pnpm. Reuse from this box:

Stages, each a CLI command under pipeline/:

  1. chars: generate and curate reference sheets (image models).
  2. frames: style frames and per-shot keyframes (image edit with refs).
  3. clips: per-shot video generation via fal queue, with model per shot from shots.csv; writes out/clips/<shot>/<take>.mp4 + a JSON receipt (model, prompt, refs, cost, duration, seed).
  4. qa: automated checks (duration, resolution, black frames, audio present); identity gate by InsightFace buffalo_l cosine between each character's front crop and every 6th frame (threshold calibrated on accepted takes, start near 0.40); a 0/1/2 rubric pass (hands, text, extra people, eye line, lip motion) via a vision model; then a contact-sheet page for human pick. (R5 section 4 and 7.)
  5. voice: one ElevenLabs Voice Design voice per character, saved to a slot and reused on every line; confessional-chair lines driven through fal-ai/bytedance/omnihuman/v1.5 from an approved still, two takes per line; native model audio only where a camera move is needed. (R5 section 2.)
  6. music: trailer bed from Stable Audio 2.5 or Lyria 3 Pro on fal. Not Eleven Music: film/TV rights need an Enterprise plan. SFX and stings from ElevenLabs SFX. (R5 section 5.)
  7. assemble: EDL from shots.csv -> ffmpeg cut, Remotion titles/lower-thirds, mix, grade LUT, export.
  8. publish: copy phase outputs into site/ and rebuild the index.

Receipts: every generated asset gets a sidecar JSON with model, endpoint, prompt, refs, seed, cost, and time, so the cost table in the review site is computed, not estimated.

Secrets: .env.local (gitignored). fal key sourced from ~/claude/luxin-repo/env/.env.local (newest of 7 on disk, verified 2026-09-04). ElevenLabs key exists in ~/claude/zerostudio/.env.local (verify it still works before Phase 7).

Storage: renders live in out/ (gitignored) and are copied to site/ for review. If total exceeds a few GB, move to Vercel Blob or R2 and link.

Review site (live)

5. Phases and checkpoints

Each phase ends with a page on the review site and a checkpoint. Work does not start on the next phase until the checkpoint is passed, except research tracks, which run in parallel with creative drafting.

Phase Work Review page Exit criterion Est. spend
P0 Plan This document /plan.html Done 2026-09-04: D1 to D7 locked $0
P1 Research R0 to R5, glossary, name check, UnREAL memo /research/ Done 2026-09-04: 8 files, every claim sourced, each with a Not verified list $0
P2 Bible Show one-pager (Sunburn, Bulu, two looks), character bible v0.2 (8 crew, 4 cast in trailer, host), arcs, trailer plot on the beat sheet /bible/ Done 2026-09-04: four-lens review, decisions in docs/reviews/; Marcus lead, Kaya closer, Colton and Rafe cut $0
P3 Looks v1 and v2 on Seedream 5 lite (superseded). v3 on Nano Banana 2: 21 characters (10 full sheets with three action frames, 11 light), 15 location plates with two candidates each, real stills as style references on every sheet view /characters-nb2/, /style-nb2/ v3 plates done 2026-09-04 and read as photographs; v3 fronts generated, picks and sheets in progress; two-reviewer QC against docs/qc-rubric.md before Daniel's checkpoint v1+v2 $18, v3 about $25
P3.2 Realism bake-off Daniel (2026-09-04): the v2 set is "so much worse" than real show stills. Benchmark set of real Love Island / THTH / Bachelor stills in out/refs/real/; R6 research on per-model photoreal prompting and style-reference workflows; the newest generation of each image family on fal (Seedream 5 Pro, Nano Banana 2 and Pro, FLUX 2 Pro, GPT Image 2, Qwen-Image 3, Grok Imagine 2, Muse, MAI-Image 2.5 Pro; Seedream 5 lite and gpt-image-1.5 kept only as baseline rows) on six identical briefs including the real Love Island promo template, text-only then identity-plus-real-still style reference. Rule from Daniel: never use an out-of-date model; check the fal catalog by date before each phase /bakeoff-img/ Decided 2026-09-04: Nano Banana 2 (fal-ai/nano-banana-2, $0.12 per image) for cast, crew, and plates; it matched the real promo template, produced press-photo candids and a photographed-looking bedroom, accepted swimwear briefs, and held identity through style references. Seedream 5 Pro is the fallback for refusals. GPT Image 2 refused every swimwear brief; Grok, MAI, and Muse refused too. v3 set (out/characters-nb2) uses the promo template for cast fronts, a press-still brief for crew fronts, and two real stills per view as style references $12 actual for the bake-off
P4 Script + board 120s script, beat sheet, shots.csv with model + prompt per shot /storyboard/ Table read holds up; shot count and durations sum to 120s $0
P5 Bake-off Same 3 shots (solo confessional, two-person scheme, montage action) on Wan 3.0 Prime r2v, Seedance 2.5 r2v, H3 Max r2v/i2v, plus Omni Flash 1.1 and OmniHuman 1.5 for the confessional /bakeoff/ Model-per-shot-type chosen with side-by-side evidence, identity-gate scores, and per-clip cost $30 to $60
P6 Clips v1 All shots generated, QA, regen failures /clips/ Every shot has an approved take; drift log closed out $100 to $300
P7 Audio Voices cast and recorded, lip-sync where needed, music, SFX /audio/ Every soundbite approved; cue approved $10 to $40
P8 Cut v1 Assemble, grade, titles, mix /trailer/v1/ Watchable end to end; shot-length histogram matches R3 targets $0
P9 Final Notes, regens, v2/v3 /trailer/ Acceptance A1 to A7 all pass $30 to $100

Hard cap: $500 total generation spend (D5 locked). A running spend table on the review site index is computed from asset receipts.

Draft-first policy: every shot is first generated as a draft at 480p or 768p (H3 Max, or Omni Flash at 360p) to lock prompt, blocking, and identity. Only approved drafts are regenerated at 1080p on the model the bake-off picks. Target split: drafts and bake-off under $120, finals under $300, reserve $80.

Cost basis (R5 section 7, fal list prices 2026-09-04, 50 shots, 5 s clips): draft pass of 150 takes on Wan 3.0 Prime at 480p about $51 (H3 Max 768p list about $60); final pass of 75 takes on Wan 3.0 Prime at 1080p about $105 (Omni Flash 1080p about $90); 20 confessional lines x 2 takes on OmniHuman 1.5 about $32; ElevenLabs lines about $2; Topaz upscale of the cut $2.40; music candidates $0.08 to $1.20 each. Clean run about $190. Reference sheets (10 to 20 image generations per character, 11 characters) and the bake-off sit on top. Seedance 2.5 at 1080p ($437 for the final pass alone) is out unless it wins the bake-off by a wide margin, and then only for a handful of hero shots.

6. Risks and mitigations

Risk Mitigation
Character drift across shots Reference sheets in every call; keyframe-first; drift log; accept 720p if it buys more regen passes
Safety filters reject drinking / manipulation / sexual content (Seedance reports) Write prompts in production language ("hands her a third drink" not "gets her drunk"); keep explicit content in dialogue, not picture; Wan and H3 Max as fallbacks
Lip-sync fails on native audio Strategy (b): ElevenLabs track + lip-sync model; decided in P5
Trade dress: Bulu reads as Hulu's actual mark Own typeface, own green, own tagline; parody name only. No real platform logo or sting anywhere
Real-person likeness by accident Prompts never name real people; refs are generated, not photos; QA checks for celebrity lookalikes
"This is UnREAL" Differentiation memo in P1; docuseries format; ensemble
fal queue timeouts and partial failures Queue API with polling, per-shot receipts, idempotent regen
Cost overrun Per-phase spend gates; receipts roll up on the review site; hard cap set in D5
Music licensing Generated cue only
Review site is public Accepted (D6). No secrets or keys ever land in site/

7. Decisions (locked 2026-09-04)

# Decision Answer
D1 Series title Manufactured Love. Inner show Sunburn
D2 Tone Dark comedy
D3 Platform framing Fictional streamer Bulu (Hulu parody), own trade dress
D4 Explicitness Dialogue plus implied visuals; nothing shown outright
D5 Budget $500 hard cap; drafts at low res before any 1080p spend
D6 Review site Public
D7 Aspect 16:9 only

8. State on this box, verified 2026-09-04

Verified 2026-09-04 (later in the day): ElevenLabs key in ~/claude/zerostudio/.env.local is active, Creator tier, about 290k of 300k characters left this cycle. fal image prices: Seedream 5 lite $0.035 per image (text-to-image and edit), Nano Banana 2 $0.08, Nano Banana Pro $0.15 (+ edit). Reference sheets for 11 full characters at 15 generations each cost about $6 on Seedream 5 lite or $25 on Nano Banana Pro.

Not verified: fal upscaler endpoint behaviour beyond the R5 price list; Gemini Omni Flash duration options beyond 8s on fal; Kling v3 resolution enum on fal; all X-post quality claims.