Inspiration
Productions run on scripts, and tiny changes can have downstream consequences. The AD, prop master, and script supervisor may each find themselves holding different versions of the truth, discovered only on set.
What it does
Ripple turns a screenplay into a production graph. Import Fountain, Final Draft, PDF, or text, and an AI pass extracts details about the cast, props, locations, wardrobe, and transportation as assertions, each citing the line they came from. Edit a line and Ripple shows you changes and continuity conflicts.
Ask Ripple a question about any script and get an evidence-backed answer. Give it a change request and watch it plan a rewrite scene by scene.
How we built it
FastAPI, vanilla JS, SQLite, and Gemini.
Challenges
- Extraction counts varied between identical runs (e.g., 8 entities, then 9), preventing deterministic results. Temperature and seed values played a role.
- Rebuilding graphs piled facts up instead of replacing them.
- Text extraction gremlins: scripts failing due to lack of scene headings (e.g., Hedda Gabler uses "ACT FIRST”); writing things like pronouns, "Two Characters", and on-screen text into the graph as cast members; diacritics (“Bela” vs. “Béla”).
Accomplishments
- Graph and provenance
- Agent (“Ripple”) and its planning + confirmation flow
- Interactive screensaver (helps explain Ripple quickly)
- Reliability work (pinned temperature, seeded queries, overhauled rebuilds, extraction variance checks)
Learnings
- Get the graph right and you can build everything else over it.
- Scripts are more complicated than they look. A century of formatting conventions, house styles, and translations broke our parser quite a bit.
- Entity resolution needs nuance. Appearing in a scene turned out to be three claims:
- on stage (physically in the scene's action)
- referenced (spoken of, but absent from the scene)
- depicted (e.g. in a photo, recording, letter, song, painting).
- UX is key. Try to make things a little less annoying each time.
What's next for Ripple
- Live testing with writers' rooms, script supervisors, and line producers, on their own scripts.
- A hosted deployment with team accounts, RBAC, and other production features like scheduling and budgeting.
Built With
- css
- fastapi
- final-draft
- fountain
- google-gemini
- google-genai
- html
- javascript
- jinja
- keycall
- ocr
- pytest
- python
- replit
- ruff
- sqlalchemy
- sqlite
- tesseract
- traceact
- uvicorn

Log in or sign up for Devpost to join the conversation.