I Built a Horror Movie Finder That Was Too Smart to Find Horror Movies
Ian Lang ·
Last week, I launched Midnight Repertory, my free horror movie discovery website. And something pretty incredible happened: People actually liked it.
A lot, apparently.
I shared it in a few horror communities on Reddit, figuring a handful of fellow weirdos might enjoy playing around with it. Instead, people started bookmarking it, sharing it, testing it, and generally being much nicer about the whole thing than I had any right to expect.
Which was wonderful, except for one minor problem.
The damned thing didn't always work.
Not in the traditional sense. The website loaded, people could submit searches, and the database was there. It would even recommend actual movies. But occasionally, someone would type in an entirely reasonable request, and the engine would respond with some elaborate explanation of why it couldn't possibly recommend anything.
Someone wanted anthology horror. Sorry, couldn't verify a match.
Someone wanted a pre-1960 haunted-house movie. It recommended Nosferatu.
Someone asked for something really scary. It recommended M3GAN.
And one person wanted to search for movies directed by Roger Corman, which exposed the fact that I'd spent months cataloging 7,300 horror films without bothering to make director credits searchable.
In my defense, I'd built the original system for myself, and I never really searched that way. Not much of a defense, admittedly.
How I managed to make something so complicated
Here's where some background might help.
Midnight Repertory began as a personal project because I was sick of being recommended the same horror movies over and over. I wanted to describe exactly what I felt like watching and get recommendations beyond the usual suspects. So I assembled a frankly unreasonable database of horror films, documenting not just ordinary information like runtime and release year, but what actually happens in the movies.
What kind of threat are we dealing with? How does the story develop? Is it supernatural? Does the protagonist investigate the danger or spend 90 minutes running away? Is the setting important? Does the movie escalate, or is it content to sit there making you uncomfortable?
That sort of thing.
The database eventually reached 7,332 films, and it worked wonderfully as part of my personal recommendation system. Turning it into a public website, however, meant building an actual search engine around all that information.
And I made a mistake.
I was so concerned about the engine making unsupported recommendations that I designed an elaborate series of checks intended to ensure that every suggestion could be substantiated.
The idea was sensible enough. If somebody asks for a supernatural movie under 90 minutes, I don't want the website confidently recommending a 110-minute psychological thriller because an AI model thinks it sounds close enough.
Unfortunately, I'd built something that occasionally treated every preference as an inviolable legal requirement.
Ask for something witchy and atmospheric? Well, could the engine prove that a particular movie was atmospheric? What did witchy actually mean? Was there sufficient evidence? Perhaps we should ask the user to clarify.
Meanwhile, there were thousands of movies sitting right there in the database.
I'd built a horror movie finder that sometimes needed you to know the magic words before it would find you a goddamn horror movie.
Worse, the architecture had become so complicated that fixing one problem could expose another. When I finally loosened the interpretation rules, the engine started recommending more movies. Great!
Except now it sometimes recommended the wrong movies for entirely different reasons. In one test, I asked for something like Hellbender, but with more people involved and a nastier streak.
The engine recommended Tokyo Gore Police. Now, I enjoy Tokyo Gore Police. But if you've seen both films, you can probably appreciate why this is an insane recommendation.
The engine had noticed the two things I wanted to change—more people, nastier violence—and apparently forgotten everything about what made Hellbender appealing in the first place.
Technically, it had followed instructions. Unfortunately, the instructions were stupid.
So I tore out a bunch of the machinery
After several increasingly ridiculous rounds of engineering, I finally reached a conclusion that probably should have occurred to me earlier:
I needed to let the AI exercise some actual judgment. Some people will find that indefensible. God you’re such a loser, why would you outsource your judgment to AI, does it write your emails for you too? Did it write this blog?
No, and no. And to put it simply, I’m of the mind that if this technology is going to exist, it may as well be used in ways that genuinely help people and/or enhance existing capabilities. And it turns out, it really is very good for this particular use case—but only if I designed it correctly.
The new system is much simpler.
Instead of passing a request through a collection of separate AI components, one model handles the discovery process. It can search the movie database in several different ways, inspect the narrative evidence attached to promising films, and decide which ones most closely deliver the requested experience.
The boring factual stuff—movie identities, runtimes, release years, countries, and other verifiable requirements—still has safeguards.
But subjective things like atmosphere, pacing, tone, and the way a story unfolds are treated as things requiring judgment rather than absolute mathematical certainty.
Which, when you think about it, is how human beings recommend movies.
If somebody tells you they want something creepy, you don't demand a formally recognized definition of creepiness before offering a suggestion. You think about movies you've seen, consider what they probably mean, and give them a few options.
That's what I wanted Midnight Repertory to do. And I'm happy to report that the new version is getting pretty damn good at it.
Here's what it can do now
One of my favorite recent tests involved a request for three movies where the characters gradually discover that the situation they've entered is fundamentally different from what they believed.
The catch was that all three movies needed to deliver that experience through different storytelling mechanisms.
The engine came back with Triangle (2009), The Wicker Man (1973), and The Autopsy of Jane Doe (2016).
Think about that combination.
One is a looping nightmare. Another involves an investigation manipulated by an entire community. The third is a forensic mystery that becomes increasingly dangerous as its investigators learn more. Completely different movies, but there's a recognizable experience connecting them.
And yes, The Autopsy of Jane Doe is one of the movies I originally built this entire system to stop ChatGPT from recommending incessantly. Apparently I can't escape it.
But here's the difference: this time, it's a good recommendation.
Another test asked for something "decrepit." Abandoned buildings, peeling wallpaper, decay, the feeling of exploring somewhere you absolutely should not be.
But the request also specified that the movie needed an actual story with a satisfying payoff, rather than just 90 minutes of gloomy scenery.
The engine suggested Grave Encounters, Gonjiam: Haunted Asylum, and Final Prayer.
Not the world's most diverse collection of films, perhaps. But I could understand why each had been selected, including how the third movie approached the requested experience differently from the obvious asylum examples.
That's what I'm after.
The engine can also handle requests for entire movie nights. You can ask for a fun opener, something tense and claustrophobic in the middle, and a genuinely threatening supernatural movie to finish.
Rather than simply returning three similar movies, it can consider the different roles you want them to play.
And you can follow up without starting over. Tell it you've already seen something, that you'd prefer less supernatural horror, or that you want to replace one movie while keeping the others.
It isn't perfect. But it feels much closer to the way I actually decide what to watch.
I also fixed some of the stuff you can see
The recommendation pages were getting cluttered, so I simplified them. The important information is now easier to find, while some of the nerdier details are tucked away until you want them.
I've added thumbs-up and thumbs-down buttons to individual recommendations, too.
These aren't ratings of the movies themselves. If Midnight Repertory recommends a terrible 1980s slasher that perfectly satisfies your request for a terrible 1980s slasher, that deserves a thumbs-up.
The feedback is about whether the recommendation was appropriate.
It doesn't automatically retrain the AI or change the rankings. It gives me useful information about where the system is doing its job and where it isn't.
You can also share individual movie discoveries directly now, without needing to copy a bunch of text or expose the specific request you submitted.
And there's more coming.
One of the first things a classic-horror enthusiast did was search for movies directed by Roger Corman. That exposed an entire category of film-history discovery I hadn't properly considered, and I'm working on adding director-based searching.
Other people want larger recommendation lists, additional movie information, and better ways to explore the collection when they don't know what they're looking for.
All reasonable requests. I can't promise I'll build everything, but I am listening.
The part I didn't expect
Here's what has made this entire experience worthwhile.
A few days ago, someone on Reddit told me they'd bookmarked Midnight Repertory.
I thanked them and asked them to let me know how it worked.
They came back the next day.
They'd asked for an '80s slasher under 90 minutes, and the engine had recommended Cannibal Campout, an extraordinarily low-budget horror movie shot on a VHS camcorder.
They watched it. Their review was essentially that it was a terrible film and they'd loved every minute.
Then they told me the website had also helped them rediscover Doom Asylum, a movie they'd been trying to remember for years.
I cannot adequately explain how happy that made me.
This person didn't just enjoy playing with my website. They found something to watch, watched it, and had a good time. That's the entire reason I built the thing.
And it's been happening in other ways, too. I've had people tell me they added it to their bookmarks bar or their phone's home screen. I've had longtime horror fans recognize obscure recommendations. I've had people point out glaring flaws, keep using the website anyway, and come back with more suggestions.
The response has been genuinely surprising.
It's also been humbling. Turns out there are a lot of ways to search for horror movies that never occurred to me, despite spending an unreasonable amount of my free time thinking about precisely that.
Who knew?
Where things go from here
The new discovery engine is live now.
I think it's substantially better than what I launched with, and much closer to the system I'd been using privately before I decided to unleash it on everyone else.
There's still plenty of work to do. Some requests won't have good answers. Some movies won't have sufficient information to support particular requirements. Streaming availability can change between database updates. And I'm sure people will continue finding entirely new ways to break things.
That's fine.
This is still a free website I built because I wanted something like it to exist. It also costs actual money every time somebody uses it, so at some point I'm going to have to figure that part out. But I'm having an enormous amount of fun.
I built Midnight Repertory because I wanted a better way to find horror movies. Now other people are using it to discover movies I'd never have thought to recommend them myself.
And every time somebody comes back to tell me they found something good—or something gloriously awful that was exactly what they wanted—I remember why I started. So I'm going to keep working on it.
If you try it and find something interesting, I'd love to hear about it. And if it recommends M3GAN when you ask for something terrifying, please let me know about that, too.
Apparently I still have some work to do.