Case study
Ten AI models, one studio a person can steer
How we turned a ten-stage generation pipeline into a studio where the creator stays in charge of every scene.
Klean··2 min read

3DLabs takes a topic, say “The History of NASA”, and returns a finished documentary. Behind that one input sit ten stages: story, scene plan, stills, video, narration, a sound-effects plan, the effects themselves, the audio mix, assembly and export.
Chaining those models together makes a great demo. It does not make a product. The first time a scene comes back wrong, the person using it needs a way to fix it without starting the whole film again.
The pipeline was never the hard part
Every stage feeds the next, so a weak still in stage three becomes a weak clip in stage four and a mistimed cue in stage seven. Fully automatic was the wrong goal. The goal was a studio where the creator can see each stage and decide before the next one runs.
Automate the work, not the decisions.
A choice at every scene
The studio shows four shots for every scene. Pick one, regenerate the rest, and move on. The same pattern repeats at each step, so the film is built from approved pieces instead of one long gamble.
- Story: read and edit the script before anything renders
- Images: pick one of four shots per scene
- Video: review each clip, regenerate any that miss
- Audio: narration and effects, timed to the scene plan
- Export: one film in the formats the creator needs
Swap models without touching the pipeline
Generative models change month to month. So every stage talks to a routing layer, not to a model. Gemini, Flux, Seedance, LTX, Minimax and ElevenLabs sit behind it today, and a model registry adds or removes one without changing the pipeline around it.
Charge for films, not for failures
Long renders fail sometimes. When they do, the creator should not pay for them. Credits are held when a job starts, kept when it finishes, and handed back if it fails.
const hold = await credits.reserve(workspace, estimate);
try {
await pipeline.run(job);
await credits.capture(hold);
} catch (error) {
await credits.release(hold);
throw error;
}Workspaces keep each team's projects, assets and credits apart, and every run leaves an audit trail of what it used and what it cost.
What shipped
- The studio, from story to export
- A ten-stage generation pipeline
- A model-routing layer and registry
- Credits, workspaces and team access
Keep reading
More from the studio.

14 Oct 2026
A medical assistant is only useful if you can check it
Building Hippocrates: grounded answers with citations, a curated knowledge base, and access rules that hold up in a hospital.

30 Sept 2026
Making a solo run feel like a race
RoadRacers turns a run into a live race against friends. Here is how we designed the race, the feed and the panther that cheers you on.
A short note when there’s something to say.
One email a month at most. No spam.