##Inspiration Every evening during an active film production, Assistant Directors (ADs) and production coordinators face an exhausting ritual: spending three to four hours manually combing through narrative screenplays to assemble the next day’s production call sheet. Operating under tight midnight deadlines, human fatigue makes errors inevitable. A single missed actor call time or miscalculated day-to-night lighting flip can derail a shoot and cost independent productions thousands of dollars in idle crew hours. We built Autocall Agent to eliminate this manual bottleneck and give indie filmmakers a reliable, automated logistics pipeline.

What it does

Autocall Agent takes messy, raw screenplay text and immediately turns it into a structured, production-ready call sheet:

Pulls scene details: Identifies scene numbers, locations, INT/EXT tags, and day/night lighting needs straight from standard sluglines.

Tracks the cast roster: Reads dialogue and stage directions to figure out exactly which characters appear in which scenes.

Builds call schedules: Maps out actor call times and scene assignments automatically.

Formats ready-to-use tables: Turns raw narrative text into clean tables you can actually send to a production crew.

How we built it

FastAPI: Set up a lightweight, asynchronous Python backend to handle requests and route data quickly.

Google Gemini 1.5 Flash: Used Gemini 1.5 Flash to handle the heavy lifting of reading the screenplay context. It's fast and handles long, messy text really well.

Pydantic Schemas: Screenplay parsing is useless if the output format breaks. I built strict models in models.py (CallSheet, SceneBreakdown, CastSchedule) to force Gemini's output into predictable, type-safe JSON every single time.

Pytest Suite: Wrote automated tests in tests/test_app.py to test the API endpoints and ensure the schema parsing doesn't fail on strange screenplay layouts.

Open Source: Published the whole project under the MIT license on GitHub.

Challenges we ran into

Screenplays are notoriously inconsistent. Screenwriters don't format things identically—some drop punctuation in sluglines, some introduce characters inline, and others use unusual formatting for action beats.

Early on, these quirks caused JSON parsing errors where the backend simply couldn't build the call sheet because unexpected keys or malformed structures came back from the model. I had to spend time refining the prompt instructions for Gemini 1.5 Flash and pairing them with strict Pydantic validation rules. This acts as a reliable filter so the app never crashes on weird formatting.

Accomplishments that we're proud of

Turning a 3-hour nightly slog into an automated task that takes under 5 seconds.

Getting deterministic, clean JSON out of raw creative writing without relying on hacky regex scripts.

Building a reliable codebase backed by automated test coverage.

What we learned

How to treat LLMs as structured data extractors rather than just conversational chatbots.

How essential Pydantic validation is when bridging generative models with a web frontend.

The nuances of film production logistics and what data crew heads actually need on a call sheet.

What's next for Autocall Agent

Direct File Imports: Supporting .fdx (Final Draft) and PDF script uploads directly into the UI.

Multi-Day Stripboards: Expanding beyond a single day's call sheet to generate multi-day shooting schedules grouped by actor availability and locations.

Crew Dispatch: Adding one-click WhatsApp/email webhooks to send customized call times directly to each cast and crew member.

Built With

Share this project:

Updates

Submission history