Inspiration

Even multi-million dollar blockbusters suffer from infamous continuity errors—from disappearing props to the infamous Game of Thrones coffee cup. Script supervisors have an incredibly difficult, tedious job tracking the state of characters, props, weather, and timelines across hundreds of pages. We were inspired to build an AI agent that automates the tedious part of script supervision, catching contradictions before production starts so filmmakers can focus entirely on the art of storytelling.

What it does

ScriptContinuity is an intelligent cinematic agent. Filmmakers upload their screenplay (PDF), and our agent reads it scene-by-scene. It automatically extracts and tracks characters, props, locations, and weather states, building a persistent "continuity database." If a character leaves their umbrella in Scene 2 but is suddenly holding it in Scene 5, the agent instantly flags the contradiction with severity levels (Minor/Major) and explanations.

How we built it

We built a modern, decoupled architecture:

  • Frontend: We crafted a stunning, cinematic UI using React, Vite, and the brand new Tailwind CSS v4. We integrated Framer Motion for micro-animations and Three.js / React Three Fiber for the interactive, geometric background sphere that reacts to the application's state.
  • Backend: A highly concurrent FastAPI (Python) server handles the heavy lifting.
  • The Agent: We leveraged Google Gemini as our core reasoning engine. The backend streams the PDF to Gemini, prompting it to perform structured data extraction (JSON) scene-by-scene to maintain the global state database.
  • Real-time Streaming: Because reading a 120-page script takes time, we used Server-Sent Events (SSE) to stream real-time progress, log outputs, and analysis back to the React frontend so the user is never left waiting in the dark.
  • Deployment: Hosted completely via Infrastructure as Code (render.yaml) on Render.

Challenges we ran into

  1. Context Management: Ensuring the AI remembers the exact state of a prop from page 2 when analyzing page 90 required careful prompt engineering and structured JSON outputs to build a reliable local database.
  2. Real-time UX: Passing asynchronous generator events from Python down through FastAPI into an HTTP stream without dropping packets was tricky, but we successfully implemented a robust SSE pipeline.
  3. Bleeding Edge Tooling: Upgrading our entire design system to Tailwind CSS v4 in the middle of the hackathon caused some unexpected Vite build conflicts, requiring us to pivot to a native PostCSS engine implementation on the fly!

What we learned

  • Advanced state tracking and structured output generation using the Gemini API.
  • How to cleanly implement unidirectional SSE streams in FastAPI for real-time progress bars.
  • Deep integration of Three.js into a React component tree to create "cinematic" web design.

What's next for ScriptContinuity

  • Timeline Analysis: Flagging day/night logic errors (e.g., if a scene is marked "DAY" but a character mentions looking at the moon).
  • Wardrobe Tracking: Generating automated wardrobe change lists for costume designers.
  • Final Draft Integration: Native .fdx file parsing to plug directly into industry-standard workflows.

Built With

Share this project:

Updates

Submission history