Inspiration

Before a film shoots a single frame, someone sits with the script for days and breaks it down: every prop, costume, vehicle, and location, scene by scene. Get it wrong and the crew finds out on the day, at full crew cost. The errors that hurt most are continuity errors: the car that changes model year ten scenes apart, the key a character uses before anyone hands it to her. A script supervisor is paid to catch them; on smaller productions, often nobody does.

What it does

Stripboard reads a screenplay (Fountain format) and hands back the production paperwork:

  • A real stripboard: scenes regrouped by location and lighting setup, colored by the physical convention every first AD reads by reflex (white INT/DAY, yellow EXT/DAY, blue INT/NIGHT, green EXT/NIGHT).
  • A full element breakdown: cast, props, wardrobe, vehicles, set dressing, categorized per scene.
  • Continuity conflict checks: property mismatches, time-of-day contradictions, props used before they are established, wardrobe changes across CONTINUOUS cuts.

The rule that makes it different: nothing ships without a citation. Every element carries the scene, the page, and the verbatim line it came from. An element with no quote behind it never reaches the table. That is the difference between a generator and a tool a line producer can defend. You can paste your own scenes into the live app and get a cited breakdown in under a minute.

How we built it

Four Gemini agents run in sequence: ingest, breakdown, continuity, schedule. The element table lives in ClickHouse, because a feature-film breakdown is thousands of rows and the useful questions are analytical (group by category, uniqExact over variants, conflicts across scenes). The agents reach ClickHouse at runtime through the official mcp-clickhouse MCP server: every read in verify_stack.py goes through list_databases() and run_query(), never a raw driver. The whole thing runs on Google Cloud Run with ClickHouse co-located in the container, scaling to zero when idle. Gemini does the judgement calls; everything else is deterministic.

Challenges we ran into

  • Running ClickHouse inside a Cloud Run container: base image pinning, data-dir ownership, and learning never to daemonize the server (it forks, detaches, and dies silently).
  • Grounding: early prompts happily invented plausible props. The citation gate (verbatim quote required, checked against the source text) is what made the output trustworthy.
  • Evaluating continuity detection honestly: our first fixture scored a correct report as a miss because the ground truth was soft. We learned to sharpen the fixture before touching the prompt.

Accomplishments that we're proud of

  • 4/4 planted continuity errors caught with 4/4 precision, stable across repeated runs.
  • The live paste-your-own-scenes demo catches a planted wardrobe error in fresh, never-seen text in about half a minute, with both quotes as evidence.
  • python -m stripboard.verify_stack proves the required integration in one command: six checks, all green, every read through the MCP tools.

What's next for Stripboard

Scene-day scheduling export (the strip colors already encode it), per-department breakdown sheets as PDFs, and cast day-out-of-days tables straight from ClickHouse.

Built With

Share this project:

Updates

Submission history