Inspiration
We have a deep background in film and film production.

We generated a lot of ideas, but we wanted to build something that didn’t already have a substantial AI solution. So we interviewed a bunch of product managers at some leading film software companies and a couple of studio development execs. They helped us whittle down our list. We were sad to see clearance, continuity, audition processing, and strip boards get crossed out. Maybe we'll come up with a better mousetrap for those later.

We are addressing two needs:
- Support fundraising and script coverage by creating a simple animatic from a script
- Engage investors and studio execs during production with a living rough cut
AI.nimatic
From Screenplay to Living Rough Cut
What it does
AI.nimatic turns a script into a LIVE ROUGH CUT
Two agents review the work
Generation is not the hard part. Judging what came back is. Two agents do that.
| Agent | What it looks at | What it decides |
|---|---|---|
| Beat review | The scene as written, next to the beats extracted from it | Whether that's a fair reading of this scene — turns merged, lines dropped, beats that don't match the page |
| Panel review | The drawn panel, the character's reference art, the beat | Whether the character reads, whether the action is right, who's in frame, shot size |
When an agent rejects its own output it writes new direction and runs again. It decides when it's done — acceptance is the model's call, not a retry counter. Every attempt is kept: what it saw, what it objected to, what it changed. Both agents run as google-adk workflow graphs — a rejection is a route back to the generating node.
On the reference script the panel agent caught a beat where Rocky was drawn already wearing the hat he's written as reaching for. It named the fault, rewrote the direction, and the redraw was correct.
One function decides what you're watching
Nothing stores whether a shot is a drawing or a film. It's derived, per beat, from what exists on disk — most real wins.
| Priority | Kind | From |
|---|---|---|
| 1 | Daily | a take covering several beats |
| 2 | Footage | footage/ |
| 3 | Motion | motion/ |
| 4 | Edited panel | edited-panels/ |
| 5 | Still panel | panels/ |
Adding footage is a copy, not a code change. Remove the file and the animatic shot comes back on the next render.
The encoder, the API and the browser all call that one function, so what gets built, what gets reported and what you're watching can't disagree. State is computed fresh every time it's asked for — never cached, never stale.
That's what makes the cut live. Shoot a scene, drop it in, and the film is more real
than it was a minute ago.
Through the web interface you can use text (and Gemini) to update panels or upload your own edited image to replace a panel.

Pain Point #1: Now you have an animatic to support fundraising and supplement script coverage.
Pain Point #2: As production begins, you can splice the dailies into the animatic so that investors and studio execs can see the progress IN THE CONTEXT of the full story.
Go ahead, click on the two videos below to see the original Gemini video and then the updated version after some text re-rendering, image upload and spliced dailies updates.
| Original Animatic | Updated with Dailies |
|---|---|
How we built it
It started with our eight industry interviews. We ended up getting a pretty good sense of how AI was currently being used across the stages of film production (especially in the near ubiquitous Entertainment Partners Movie Magic Budgeting and Movie Magic Scheduling). We got great guidance on things like "use simple image rendering, we don't want people to get caught up in look and feel at this point" and "a little bit of motion goes a long way" and "there has to be direct editing (AI or Photoshop) of individual beat panels".
This was enough to build a product spec.
Coding began with the IBM Bob IDE.
1. It absorbed extensions and settings from our existing VS Code IDE
2. Basic scaffolding
3. Led product definition + tech stack selection
4. Drove development through v3
We've used other coding platforms and Bob's "personality" was much less sycophantic and long winded (thank you!).
When we ran through our Bob credits, we switched to Gemini Antigravity and even did a code review to see how Antigravity might have addressed some of our core principles in a different way. The insights were good, but not meaningful enough to change our approach. Special thanks to the workplace for letting us use their account.
Our other guidance was "separate original build, editing, and viewing. We will want to send links that have limited access (e.g., only sees the LIVE ROUGH CUT). Keep it simple." We decided to avoid the AI generated website with black background, neon bars and action cards across the top. Maybe for real production.
Finally, we got a scriptwriter and an AD to spend ten minutes with it and give us notes.
The pipeline
| Step | Called |
|---|---|
| 1. Extract scenes and beats from the script | gemini-flash · JSON schema |
| 2. Review the extraction against the scene | gemini-flash · JSON schema · agent |
| 3. Resolve characters and locations | deterministic — regex, difflib |
| 4. Cast a voice per character | gemini-flash · JSON schema |
| 5. Draw a panel per beat | gemini · image |
| 6. Review each panel against its reference art | gemini · vision · JSON schema · agent |
| 7. Fit narration to the beat's duration | gemini-flash · JSON schema |
| 8. Generate dialogue and narration audio | gemini · TTS |
| 9. Select which beats get motion | deterministic — ranked sort |
| 10. Generate motion for those beats | veo · MP4 |
| 11. Resolve what each shot renders as | deterministic — priority over disk |
| 12. Assemble the cut | ffmpeg / ffprobe · MP4 |
Four of the twelve steps make no model call at all. The same script produces the same beats, the same shot selection and the same cut.
Challenges we ran into
- We used Dead Poet's Society and Rocky to build the prototype [see legal text below]. They are well enough known that we're pretty sure Gemini used some extra information in generating the panels – it wasn't the pure, no reference example that might have been good.
- It took a couple of iterations to lock down character consistency. Our character step was originally just for voice assignment, but we extended it to a set of character art profiles.
- We were digging the mood of IBM Bob when our credits ran out. We miss him.
- It took us a couple of iterations to optimize the re-rendering of the rough cut. At first each change triggered a beat-by-beat re-render. That was a long 44 minutes for the first edit set. Then we built sub-animatics so that changes became more about stitching new and old assets versus an end-to-end re-render. Now three changes might only take about five minutes.
Accomplishments that we're proud of
The product spec after customer testing was sooooo much better than the original. Also the 44 minutes to 5 minutes rough cut render time reduction made the bug correction and user experience 100x better.
What we learned
- Methods for working with Gemini to update images, not just create from scratch (lots of error and repeat)
- Antigravity likes the movie Dead Poet's Society
Data Source
No external datasets or APIs. The only inputs are the screenplay PDF, character reference art we created ourselves, and video clips used as dailies. The script is the sole source of content — parsed for scene and beat structure, and swept separately for the prose that describes how characters look.
What's next for AI.nimatic
We have follow up calls with a couple of our industry advisors to get more feedback on the current version.
We've started to mess around with an episode of The West Wing. TV is different because it cuts back and forth a lot between two running scenes. Look for a first pass at the episode "The Supremes"
The next big leap will be to upgrade how we handle "model sheets", being able to put some character art in a folder to inform the panel rendering.
We also did a first test of "listening" to the dailies and building a clone of real character voices and slotting them throughout the LIVE ROUGH CUT. It wasn't quite ready by submission time.
Click through on the "Try It Out" link. We hope you like it.
AI.nimatic does not claim any ownership of the IP of Rocky or Dead Poet's Society. The script and movie clips are widely available and are not being used for the economic benefit of AI.nimatic.
Our IP lawyer buddy had an 800 word paragraph instead of that little short disclaimer. She wasn't happy, but said it was "adequate" for this project.
Built With
- gemini
- google-adk
- ibm-bob
- javascript
- python
Log in or sign up for Devpost to join the conversation.