Felix
AI-powered continuity assistant for screenwriters working on complex, multi-era narratives.
Why
A friend writes screenplays — complex thrillers with interleaved timelines, dozens of characters, and continuity traps everywhere. He was tracking everything in spreadsheets. I figured a graph database + LLM could do better: parse raw scene text, build a knowledge graph, and let the writer query it in natural language.
What it does
Drop raw text in, Felix handles the rest:
From 100% local to API (the pivot)
The project started with a hard constraint: everything had to run locally on a Mac M4, with Qwen2.5-7B via LM Studio. Entity extraction held up thanks to heavy guardrails — narrative reasoning on a 7B did not. Rather than keep fighting the hardware, I pivoted to the Mistral API (mistral-small), keeping the small-model-plus- targeted-tools philosophy. The guardrails survived the pivot: they turned out to be the real product.
The real challenge: caging the LLM
An LLM writing into a graph will invent entities, relationships, plot twists. The whole job is stopping it:
Stack
What I learned
Graph modeling for narrative data is surprisingly tricky — when does a character mention become a node rather than a property? How do you merge entities across scenes written months apart?
A free-form relation vocabulary always drifts — validating it hard at write time killed an entire class of bugs at once. And you can't steer an LLM agent without an eval harness: here, every fix starts with a failing eval.
The wall
I hit a pretty hard wall between what I wanted to do and what the small models I was using could do. Extraction holds. Narrative reasoning, merging entities across scenes written months apart, restraint (writing nothing on a plain "hi"): no. A 7B invents, and mistral-small still invents. The guardrails limit the damage, they don't replace a model that understands the story.
Status
Paused since June 2026, resume point documented in the journal. The engine runs on a real screenplay and "screenplay" is just one profile among others (a "construction site" profile exists).