A cinematic short where the lead character has to look the same in every shot — and the system delivered, with auto-anchor, drift grading, selective retries, and four animated episodes from the same keyframes.
A 70-year-old fisherman named Grandpa Tom takes his 8-year-old grandson Sam on his last sunrise fishing trip. Eight scenes, one boat, two characters that have to look like the same two characters in every shot. This is the failure mode every multi-shot generative tool faces: the marks drift, the wardrobe drifts, the faces drift. By scene 5 you're looking at a different grandfather.
The agent submitted eight scenes through generate_project with character_anchor: "auto". That triggered a four-step pipeline server-side:
nano-banana produced one image showing both characters in neutral poses — the canonical reference the rest of the pipeline grades against. Latency: 13.2 s. View the anchor sheet.source_url. Each scene rendered through flux-dev. Wall clock per scene: 7.8 – 21.2 s.face 0.4 + marks 0.4 + wardrobe 0.1 + palette 0.1) fell below 0.70, the worker retried the scene with stronger anchor language. Budget: 5 retries total.Viewer URL the director can share: storyboard.daydream.monster/v/proj_3a433187c484
The eight stills are the storyboard — the deliverable a director would have shipped a decade ago. The same MCP surface keeps going. The director's agent picked four key narrative beats (Scene 1 Dawn, Scene 3 Lesson, Scene 6 Catch, Scene 8 Rowing home), passed each scene URL as source_url, and called create_media action=animate model_override=seedance-i2v in parallel. The keyframe is the first frame; seedance generates 5-6s of cinematic motion from it.
Two of the four initial calls failed transiently with a worker abort. The agent saw the typed error, branched on retryable=true, and re-submitted both. Both succeeded on retry — the workflow is robust to fal-side flakes by design (AX-1 error envelope + idempotency-friendly retries).
Total cost for the four episodes: ~$1.10 (seedance-i2v ~$0.25/clip). Total time wall-clock: 195-230s per clip, all in parallel. The director now has a paper edit — eight beats — plus four moving shots they can drop directly into Premiere or DaVinci.
This case study doesn't smooth over what happened. The drift gate logged every grading call. The first three scenes scored well (0.87, 0.83, 0.79). Scenes 3 and 4 dipped below the 0.70 threshold and triggered the retry path. The retries pulled scores back to ~0.78 average. Three stable scenes were also captured into a LoRA-training-ready bucket (anchor_hash v1_58a688c6ad8ae48a45cff009) — the substrate for future Z4 auto-LoRA work.
Specific grader observations the system logged:
"The wardrobe for both characters is completely different from the anchor sheet." — drift_check, score 0.28, scene retried
"The older man's wardrobe is inconsistent, wearing a plain top instead of the cable-knit sweater from the anchor." — drift_check, score 0.87, passed threshold
"Neither the man nor the boy are wearing their canonical outfits from the anchor sheet, and the boy's face is obscured." — post-retry, score 0.63, second retry queued
The system surfaces drift not by claiming consistency it doesn't have, but by grading and retrying when the score is below threshold. That's the substantive difference vs prompt-and-pray.
| Capability | Storyboard MCP | Runway References / Gen-4 | Midjourney character refs | Sora 2 |
|---|---|---|---|---|
| Auto-extract characters from brief | ✓ Gemini Vision NER | Manual upload | Manual upload + --cref | Manual |
| Auto-generate anchor sheet | ✓ nano-banana, ~13 s | Manual composition | Manual composition | n/a |
| Drift detection per scene | ✓ Vision LLM, 0–1 weighted score | None (style transfer only) | None | None |
| Auto-retry below threshold | ✓ 5-retry budget, anchor-strengthened prompts | Manual re-roll | Manual re-roll | Manual |
| LoRA-training-ready capture | ✓ Stable scene URLs logged for downstream training | Separate Gen-4 training flow | Manual gallery curation | n/a |
| Cost for 8 scenes with auto-anchor | ~$0.40 | ~$1.80 (Gen-4 credits, no anchor) | ~$0.70 (Standard, no drift gate) | ~$2.40 (preview pricing) |
Eight months ago, the same brief would have required the director's agent to:
What the agent actually did, post Z+AX:
generate_project({ title, scenes, character_anchor: "auto" }) — one call.get_creative_job twice while the worker fanned out scenes + ran the drift gate + queued retries.viewer_url, anchor_url, and a full consistency_log with every drift score and retry decision.Three tool calls. Two characters. Eight scenes that mostly look like the same characters. A consistency log the director can audit.
Submit your own multi-scene brief: mcp__storyboard__generate_project with character_anchor: "auto" when you have 3+ scenes. The pipeline does the rest.
Live: storyboard.daydream.monster/v/proj_3a433187c484 · Anchor sheet: view