Getting Into Serial Killer Research Without Losing Your Mind

The first thing I learned when I started digging into case files is that most people come at this completely sideways. They want the gore and the twist endings. What they actually need is a system for organizing thousands of pages of police reports, autopsy summaries, and court transcripts. I spent three years building something I actually use. What I'm going to walk through here is my personal workflow for tracking, cross-referencing, and analyzing serial offender cases. It's not glamorous. It's not a true crime podcast script. It's just how you stay sane when you're looking at data that would make most people throw up. I started down this path around 2014 when a friend asked me to look into a cold case for a local journalist. I had no formal training in criminology. I'd read a bunch of books and watched way too many documentaries, which turned out to be both useful and deeply misleading. The books made it seem like there were clean categories. There aren't. The reality is messier, and that's exactly what makes building a reliable research method necessary.

Here's what the system looks like now. I use a combination of Notion for the main database and a simple Python script I wrote to handle cross-referencing. Notion because it's flexible enough to pivot when I find a new angle. Python because manually scanning 400 case files looking for a match on a specific modus operandi detail is a recipe for giving up entirely. The core of the database has six main tables: Offenders, Victims, Cases, Modus Operandi, Geolocation Data, and Media Sources. Each table links to the others. An offender record pulls in every case they're connected to, every victim profile, and any media coverage I've catalogued. The Modus Operandi table is where most people stop, and that's a mistake. The MO table is the only one that actually lets you find patterns across cases that seem unrelated on the surface.

I break down MO into specific behavioral markers rather than the lazy categories you see in textbooks. "Strangulation" isn't a marker. "Manual strangulation with ligature used as restraint in 75% of cases" is. "Leaving a signature item" is useless. "Leaving a single photograph face-up on the victim's chest within 48 hours of disposal" is something you can actually track. The script I run checks these markers across the entire database and flags potential connections. It doesn't replace judgment, but it catches things my brain would miss after I've been staring at spreadsheets for eight hours straight. A human reviewer goes through every flagged connection afterward. The script throws possibilities at the wall. I decide which ones stick. Geolocation is another area where people go wrong. They look at where bodies were found and assume that maps out the killer's comfort zone. It doesn't always. I learned this the hard way with a case from the Pacific Northwest. The initial spread suggested the killer operated in a three-county area. After running the geolocation analysis with time-of-day and weather data factored in, the actual center of activity shifted about forty miles east. The bodies were placed in the original area to misdirect. I wish someone had told me that earlier, but then again, I needed to burn through that particular illusion myself before it would've stuck.

Get the Full Details

Faces of Evil: Unmasking the World’s Most Horrific Serial Killers ...
Faces of Evil: Unmasking the World’s Most Horrific Serial Killers ...

One edge case that almost broke my system involved a serial offender who operated across state lines in the late nineties. The problem was that each state handled their case files differently. One kept detailed forensic logs. Another had almost nothing digitized. A third released records in PDFs scanned at ridiculous resolutions that my OCR software couldn't touch. I ended up spending three weeks just converting and cleaning that data. The workaround was writing a custom parser that could handle the specific quirks of each state's document format. It's clunky now, but it saved me from having to rebuild the whole thing later. Media sources deserve their own table. Not because gossip matters, but because sensationalized reporting contaminates the record. I've seen analysts treat a tabloid claim as fact because it appeared in a magazine article. The original police report says something completely different. Every piece of information gets tagged with its source type: primary law enforcement document, court record, news article, podcast, book, or secondary summary. Primary sources get priority weight in any analysis. Everything else is treated as potentially distorted until verified. Victim profiles are the most important part of this and the part most research ignores entirely. I've spent more time building out victim databases than offender databases. The reason is simple. Serial killers are studied because they're terrifying and novel. Victims are people whose lives got erased and then reduced to bullet points. But if you want to understand the pattern, you have to understand who's being targeted and why. That means demographic data, lifestyle indicators, vulnerability factors, and circumstances of opportunity. It's uncomfortable work. It's also the only way to move past the pop psychology explanations that fill most true crime content.

There's a practical reason for this beyond ethics. When I was cross-referencing two cases that looked completely unrelated, the connection only became clear through the victim overlap. Same neighborhood, similar work schedule, same type of convenience store where they worked part-time. The offender wasn't randomly selecting victims. He was hitting a pattern I would've missed if I'd only been tracking his movements between crime scenes. The biggest limitation of this whole setup is that it depends entirely on data availability. Some jurisdictions are transparent. Others treat their records like state secrets. Cold cases from the eighties often have fragmented documentation. You can build the best system in the world, but if the underlying data is incomplete or lost, you're just organizing gaps. I've had to walk away from several cases because the record was too thin to draw anything meaningful from. That's not a failure of the method. It's a failure of the archive. If you're just starting out, don't build a system before you've read through at least twenty complete case files. I know that sounds backwards. People want tools first, understanding later. But you'll design the wrong database if you don't know what questions you actually need to ask. The structure I described evolved over years of hitting dead ends and figuring out what information I kept needing to find.

The download link for the template database I mentioned is below. It's a Notion base with all six tables pre-built, sample entries to show you how the linking works, and the Python script for cross-referencing. The script runs on Python 3.9 or higher. You'll need the pandas and networkx libraries installed. I included a requirements.txt file in the package. I don't claim this is the definitive way to approach serial killer research. It's just the way that's worked for me. There are plenty of people doing better work with different tools and methodologies. What I can say is that treating this like a data problem instead of a mystery has saved me from more dead ends than anything else I've tried. Download Template Database and Script

The Dark Book of Serial Killers : The Secrets and Stories of the World ...
The Dark Book of Serial Killers : The Secrets and Stories of the World ...