Letterboxd: context-aware recommendations
overview
Letterboxd is a social platform where film fans log, rate, and review what they watch, and save films they want to see to a watchlist. As a personal project, I designed Help me pick a film, a feature that reads a user's watchlist alongside the context of the moment they are in, then returns the few films that actually fit. I scoped it end to end: defining the customer and the problem, writing down the assumptions the feature rests on, designing the flow and its edge cases, and setting the metrics that would show whether it worked.
problem
Users save films to a watchlist with every intention of watching them, then face a list of hundreds when the moment comes. Finding one that fits means manually evaluating many options across several sources: scrolling the watchlist, comparing films, reading reviews, checking runtimes, and looking up streaming availability. That work often ends in no decision at all, with users running out of time or energy before they choose. The pattern is common enough that users describe it themselves in the Letterboxd community:
target users
I scoped the feature to active Letterboxd users who review films, maintain a watchlist, and already use the platform to decide what to watch. The moment I designed for is narrow on purpose. They are ready to watch something now and want to choose from films they have already saved, rather than discover something new from the full catalog.
pain points
When these users decide what to watch, they browse the watchlist, compare films, and read reviews while weighing six factors at once: their current mood, the time they have, who they are watching with, the viewing experience they want, ratings, and streaming availability. Letterboxd supports none of those factors directly. Sorting and filtering work on fixed attributes like release year and runtime, so everything about the moment itself stays in the user's head and has to be re-applied to every film they consider.
why Letterboxd
Letterboxd already holds both halves of the solution, which is what makes this a scoping problem rather than a data problem:
Existing data
Watchlists, ratings and likes, viewing history, and film metadata already live on the platform for every active user.
Existing functionality
Sorting, filtering, and recommendations based on watched and liked films are already built, and Letterboxd describes the platform itself as one large organic recommendation engine without a section labeled as such.
The opportunity is to combine these existing preference signals with real-time context to recommend relevant films.
assumptions
Before designing anything, I wrote down the three assumptions this feature depends on, so the experiment could be built to test them rather than to confirm them:
1. The problem is widespread
A meaningful segment of active watchlist users have difficulty selecting a movie to watch.
2. Letterboxd is where they decide
Users turn to Letterboxd at the moment they are trying to make a decision, rather than deciding elsewhere and logging it after.
3. Context is the missing input
Context-aware recommendations would improve selection confidence, reduce decision time, or both.
solution
I placed a single entry point at the top of the watchlist, so the feature sits exactly where the decision already happens and nothing else about the page changes:
the tradeoff I made
Recommending only from the watchlist was the central product decision, and it costs something real, so I designed the mitigation alongside it:
Prioritized
Existing user intent. Every recommendation comes from films the user already chose to save, which makes each pick easier to trust.
Sacrificed
Recommendation breadth. A film that would fit perfectly but was never saved will not be surfaced.
Mitigated
Users can adjust their preferences in place, and every result state offers a path to explore films beyond the watchlist.
how a match is scored
To keep the recommendations defensible rather than opaque, I proposed an explicit scoring model and the thresholds that decide what gets shown. The weights lean on the moment first and on history second, since historical taste alone is what Letterboxd already does:
| Classification | Proposed criteria |
| Top match | Meets all hard constraints and scores 80 or above |
| Close match | Scores 60 to 79, or narrowly misses a flexible constraint |
| No suitable match | Low relevance, or violates a non-negotiable constraint |