Teaching Claude fifteen years of my taste in movies
Ask any streaming service for a recommendation and you get the same forty titles everyone else gets. Ask an AI and you get an enthusiastic list of “underseen gems” — half of which you’ve already seen, because it has no idea what you’ve watched.
That second problem turned out to be fixable.
The import
Netflix will hand you your complete viewing history if you ask. Fifteen years of it, in my case. Cleaning it was a real job: episode rows had to collapse into series, duplicates and rewatches had to merge, and films had to separate from TV. What came out the other side: 459 films and 168 series of verified ground truth about what I’ve actually watched.
That became a little media system that lives as plain markdown — no app, no database, three files with distinct jobs:
- WATCHED — the anti-repeat list. Every candidate gets checked here.
- WATCHLIST — things I’ve already said I want to see. Checked first, every time, so new ideas never bury my own queue. There’s nothing more annoying than a recommender ignoring the list you gave it.
- PREFERENCES — what actually lands and why, written down once instead of re-explained forever: the genres that work, the hard exclusions (no gore for gore’s sake), and the standing notes — subtitles are fine, animation is fine, a slow burn is a feature not a bug. When my circumstances change — more time, different mood rules — the file changes, not the conversation.
Letterboxd captures new films going forward and syncs into the system; the markdown stays the source of truth, because it’s the thing Claude can actually read in full.
Lessons from running it
Exact-title matching or nothing. Early on, substring matching produced confident false positives — the system swore I’d seen movies I hadn’t, because their titles lived inside other titles in the history. Three separate recommendations died that way in one session before we found it. Every candidate now gets verified against the raw list by exact title.
Know what your data doesn’t cover. The history is Netflix. Theaters, other services, physical discs — none of it captured. So the watched list can prove I have seen something, never that I haven’t. The routine states that caveat with every recommendation instead of pretending to omniscience. An honest “probably new to you” beats a false “you’ll love this.”
Volume changes the game. This was the surprise. With this much history, the standard “hidden gem” tier is exhausted — recommendation after recommendation kept dying against the watched list, because fifteen years of a heavy viewer eats the entire canon of safe deep cuts. The fix was permission to go genuinely weirder: foreign-language, pre-2000, festival circuit, the truly obscure. The recommendations got better because the easy ones were provably used up. Constraints as a feature.
The payoff
“Find me something for tonight” now runs like a checklist: watchlist first, then fresh candidates from the deep end, each verified by exact title against the history, each filtered through written-down preferences, each delivered with honest caveats about coverage. It’s the difference between an algorithm guessing at me and a system that knows the ground truth — and knows the edges of what it knows.