How I built a production tool for Crawford — without writing a single line of code
What becomes possible when the person who understands the problem can build the fix themselves.
I am not a programmer.
I want to get that out of the way right now, because what I’m about to describe is going to sound like it requires one. It doesn’t. What it requires is a clear creative vision, a willingness to stay in the room when things break, and an understanding that the messiest part of any production process is always the beginning.
Crawford is a scripted mystery series we’re producing at the level of traditional premium television — written, created, and produced using AI. The show is an attempt to prove what’s possible. We’re figuring some of it out as we go, building the plane while we fly it, solving one production problem at a time with the clock running.
This is what that process looks like.
What Crawford Is
Crawford is a series I’m showrunning under CanEl Studios — the production company I co-founded with Sean Canino. It’s a true crime/horror-thriller hosted by Dean Crawford, a Rod Serling-style narrator who walks through recreated scenes with the precision of a documentary filmmaker and the presence of a ghost. Think Fincher’s cinematography, Deakins’ light, and Serling’s authority — with AI serving as the principal photography tool.
Every episode is built from a written script. Every shot is generated from an image. Every image starts as a prompt.
That’s the pipeline. And up until recently, the only person handling all of those tasks was me — writing the scripts, creating shot lists, and then writing prompts manually, one by one, scene by scene, to generate the images I wanted.
That was unsustainable. So I built a program to fix it.
(On our previous series, Survive The Night, Sean and I split the shot list prompts, the scene generation, and the editing process together…and it still was barely sustainable).
The Problem I Was Trying to Solve
Here’s how the production pipeline works for Crawford:
Script → Shot List → Master Reference Images (MRIs) → Video Generation
The MRIs are the key. They are the beginning and end images of every shot — the visual anchors for each piece of footage we’ll generate using tools like Kling or MidJourney. Think of them as an AI storyboard: a start frame and an end frame that define the composition, the lighting, the mood, the character placement — everything. The video generation fills in between.
The problem was that going from script to shot list to MRI prompts by hand, across twenty-two episodes and hundreds of scenes, was simply not viable. I needed a program that could read a Crawford script, understand its visual logic, and output a structured shot list in the form of image generation prompts.
So I asked an AI to build it.
The Conversation That Started Everything
I sat down with ChatGPT and said, more or less, this:
“I want you to write me a program that reads my scripts for Crawford, identifies scene headings, character descriptions, and narrative action, and then generates a shot list — not in the traditional coverage sense, but as a set of prompts I can feed into MidJourney or Kling to generate Master Reference Images for every shot.”
What followed was one of the more interesting production conversations I’ve had. The AI understood the concept immediately. It knew what INT./EXT. scene headings meant, what action beats were, how dialogue differed from narration. And it knew what a MidJourney or Kling prompt needed to accomplish. The gap was getting from here to there in a way that was both automated and cinematically coherent.
We broke it down into layers: script parsing — detecting scene headings, action, dialogue, Crawford’s VO narration. Visual context inference — understanding whether a moment called for a wide establishing shot, a macro insert, a silhouette, or something more destabilizing. Crawford-specific visual rules — applying the Steel and Sodium palette, the Robotic Observer camera logic, the Serling ghost entry, the Channel 0 artifact style. And prompt generation — translating all of that into language Midjourney and Kling would understand.
The result was Python. Which I had never used before in my life.
Every rule the program applies — the Robotic Observer, the Ghost Entry, the macro distortion on evidence, the palette restrictions — came from a creative document I wrote before a single line of code was produced. The AI was encoding my vision into a repeatable system.
Learning to Run a Terminal at 4 AM
I will not pretend this part was elegant.
There were bad file saves. There were missing .py extensions. There were file names with spaces that needed quotation marks. There was a period where I genuinely thought I had done something wrong for twenty minutes because the Terminal kept saying “no such file or directory” — and the problem was that v3.2 of the engine hadn’t actually downloaded yet and was still a demo file sitting in a chat window.
I’m sharing this not to be self-deprecating but because I think it’s important. The skill here is not coding. The skill is creative persistence in a new production environment. Every new tool in this industry has a learning curve. Digital editing, virtual production, pre-vis — all of it had a period that looked like confusion before it looked like control. This was mine.
By the time v3.7 shipped, I was running scripts through Terminal with one command.
What the Engine Actually Does
The Crawford Prompt Engine v3.7 reads a .txt export of a Final Draft screenplay. It parses the script into sequences — not just standard INT./EXT. scene headings, but also the hybrid structure of a show like Crawford, which includes editorial sequences like MONTAGE, PHONE FOOTAGE, BODY CAM, and narrative transitions.
For each sequence, it builds a cinematic shot package of approximately six to ten shots, structured like this:
Establish → Orient → Anchor → Develop → Escalate → Payoff
Each shot is assigned a shot purpose (what narrative work it’s doing), a subject type (LOCATION / CHARACTER / PRESENCE / ARTIFACT / ANOMALY), a shot type drawn from a controlled Crawford vocabulary built from a full reference library of cinematic terms, a visual escalation level — moving from objective and wide toward invasive and subjective — and a MidJourney prompt and a Kling prompt, both formatted for direct image generation.
The engine knows the difference between a prop and an anomaly. It knows that a USB drive hidden inside a first-edition Dante is not treated the same as a desk lamp — the lamp gets an insert, the USB drive gets a macro shot with chromatic aberration and the suggestion that the technology is tapping into something it shouldn’t.
It knows Crawford. It knows when he’s a ghost in a recreated scene. It knows when the camera should behave like a robotic observer moving on rails — never handheld, never chasing, always watching with mathematical precision.
And it knows when to inject risk. One of the upgrades I pushed hardest for was the guarantee of at least one unsettling shot per sequence — a Dutch angle, a frame that’s slightly wrong, a composition that tells the audience something is off before the narrative has confirmed it.
What These Prompts Actually Produce
The output is a CSV and a JSON file — think of the CSV as a spreadsheet shot list. Every row is a shot. Every shot has its prompts.
These prompts are not finished images. They are the starting point for a conversation with the AI image tools — the same way a storyboard artist’s rough sketch is the starting point for a conversation with a cinematographer. I take the prompts, run them through MidJourney or Kling, and then the real work begins — selecting, refining, swapping, elevating. Making the calls a showrunner makes.
When I have final reference images, those become the MRIs. The MRIs go into video generation as start and end frames. The video generation fills the space between them. That footage is the principal photography of Crawford.
The entire front half of that pipeline — script to shot list to prompt — is now automated. Twenty-two episodes. Hundreds of sequences. Thousands of prompts. One command per script.
What This Actually Means
We didn’t build a director. We built a first-pass directing tool — one that understands visual grammar, respects a defined aesthetic, and generates usable material at production scale. That time I used to spend at 4 AM generating prompts by hand for Scene 14 of Episode 9 now goes back into the show.
This is one of several places where we’re exploring how AI changes the production process — not by replacing anyone at the table, but by collapsing the distance between intention and output. The Prompt Engine is the beginning of that pipeline. Every other piece of what we’re building at CanEl Studios is downstream from it.
Where We Go From Here
Right now, the engine goes into the field. All twenty-two Crawford scripts run through v3.7. The prompts generate images. The images get refined. The MRIs get built.
Then we see what the show actually looks like.
That feedback — what the images yield, where the prompts break down, where Crawford’s visual logic holds and where it doesn’t — will drive the next version of the engine. This is not a finished tool. It’s a production tool in active development, deployed on a live show.
Build it. Use it. Let the work teach you what to fix next.
I’ll report back from the field.