704 Lines of Deadpan

I decided to clone a ship's computer.
Holly is the shipboard AI on Red Dwarf. IQ of 6,000, self-reported. Three million years of solitary runtime left him a bit off. He announces the crew is about to die with the same tone he'd use to read out a shopping list. Technically correct about most things. Practically useless about all of them.
The Scraping Problem
The plan was straightforward. Grab every Red Dwarf script from Seasons 1 through 8, extract Holly's dialogue, and use it to build a chatbot that captures his personality. Then add Norman Lovett's voice. Then a talking head. Baby steps toward something deeply unnecessary and therefore worth doing.
Step one: get the scripts. A fan site called ladyofthecake.com has transcripts for all 51 episodes. I wrote a Python scraper expecting clean, consistent formatting. I got the opposite.
Seasons 1 through 5 use colon format. `HOLLY: dialogue goes here`. Readable, parseable, fine. Then Season 6 switches to a centered screenplay layout with character names floating 20 spaces from the left margin, dialogue indented beneath. Seasons 7 and 8 use a third variation: the character name sits alone on its own line, dialogue indented on the next.
Three formats across 51 scripts, written by different fans over the course of a decade. No standard. No schema. Just people who loved a show typing it up however felt right.
So one parser became three. The scraper auto-detects which format each script uses by counting structural patterns: colons for the first style, leading whitespace for the screenplay layout, name-then-indent for the third. It picks the format with the highest match count and routes to the right parser. Simple heuristic, surprisingly reliable.
Violets in Spring
Halfway through building the scraper, I found a post on r/RedDwarf. Someone had already built a Holly interface. A talking head on a screen, wired into their home automation system. Holly announcing the weather, controlling the lights, telling you it's time for lunch. It looked great.
My first reaction was the predictable one. That sinking feeling when you realize your original idea wasn't.
Then I remembered Elizabeth Gilbert's argument in Big Magic: ideas are living things. They circulate, looking for collaborators. If you're not available, they move on. Scientists call it multiple discovery. Newton and Leibniz both arrived at calculus. Darwin and Wallace both landed on natural selection. Bolyai and Lobachevsky both cracked non-Euclidean geometry on separate continents. Farkas Bolyai put it well: “When the time is ripe for certain things, they appear at different places, in the manner of violets coming to light in early spring.”
Don't rage, don't spiral. Grieve efficiently. Then get moving.
In this case, there wasn't much to grieve. The Reddit Holly is a skin. A UI layer over existing home automation, with Holly's face and voice doing what Alexa already does. What I'm building is different: a personality extraction pipeline. 704 lines of dialogue run through parsers, structured for fine-tuning, aimed at capturing the specific way Holly thinks. Not what Holly looks like on a screen, but how he constructs a sentence, misreads a room, and delivers catastrophe like it's a weather report. The Reddit version is Holly's face. Mine is Holly's brain.
Two violets, same spring, different gardens.
What 704 Lines Teach You
Once the parsers worked, I ran the full extraction. 704 Holly lines. 186 conversation snippets with surrounding context, capturing what the crew said before and after Holly spoke, because timing matters as much as words when you're modeling deadpan.
The output lands in four formats. A structured JSON with full conversation context. A training-ready JSON for fine-tuning. A readable text file with Holly's lines marked by `>>>` arrows. And a raw file of just Holly, 704 lines of uninterrupted monotone genius.
After 704 lines in sequence, the personality crystallizes. Holly almost always opens with “Well” or “Look.” He delivers catastrophic news as if commenting on the weather. He gets things wrong in ways that are technically defensible. He occasionally says something profound, then immediately undermines it.
Comedic timing isn't in the words. It's in the gap between what the situation demands and what Holly actually delivers. A system prompt can capture vocabulary and sentence structure. Capturing the principle that Holly should always slightly mismatch the emotional register of the conversation, that's harder.
The Pipeline
From an ML perspective, this is a personality modeling data pipeline. Web scraping with automatic format detection. Structured extraction that preserves conversational context. Multiple output formats for different downstream uses.
The format detection is the interesting bit. Each parser handles its own quirks. The colon parser deals with mixed-case character names and multi-line dialogue that wraps without a new character tag. The screenplay parser counts leading whitespace to distinguish character names from stage directions. The name-above parser has to separate dialogue indentation from scene description blocks. Each one strips stage directions, normalizes character names against a known roster of 30+ characters, and cleans the text.
None of this is novel. But it's the kind of unglamorous data work that sits beneath every interesting model. The quality of what comes out depends entirely on the care put into extraction. Feed garbage dialogue into a personality model and you get a chatbot that sounds like a blender full of scripts.
## What's Next
Phase 1 gave me clean data. Phase 2 is the personality prompt. I need to analyze those 704 lines for speech patterns, verbal tics, and the specific ways Holly constructs (and deconstructs) meaning. The goal is a system prompt that doesn't just sound like Holly but thinks like Holly, defaulting to gentle confusion and accidental wisdom.
Phase 3 is Norman Lovett's voice. Series 1, 2, and 8 are the canonical Holly, the original deadpan before Hattie Hayridge's run. A voice clone from those seasons should nail the flat, unimpressed delivery that makes Holly work.
Phase 4 is the talking head. An animated face that moves when Holly speaks. The visual component that turns a chatbot into a character.
I have no commercial reason to build this. Nobody asked for it. The entire project exists because I watched Red Dwarf as a kid in Ireland and Holly made me laugh harder than any other fictional computer. Now I have the tools to bring him to life, so I'm doing it.
Sometimes the best reason to build something is that it would be funny if it existed.
Holly would probably tell me I'm wasting my time. He'd be right, technically. And completely wrong in the way that matters.