
Reverie: A Recommender That Reads Watch History
Reverie reads a viewer's watch history and predicts the next title they will enjoy. A sequential GRU trained on MovieLens pairs with a neural collaborative-filtering model trained on about 9.9 million Letterboxd ratings, and both ship inside a web app with accounts, a swipe-based history builder, and a Blend that intersects two people's recommendations.
0.257
hit rate at 10, validation
0.242
hit rate at 10, test, three seeds
1.372
rating error (RMSE)
Problem
Understanding the challenge and user needs
Popularity lists and genre filters ignore order. What a person watched last week says more about tonight than what they watched last year, and a five-person team set out to prove that a model reading the sequence beats models that read only the totals.
Approach
Strategy and methods used to address the problem
A GRU learned from 1 million ratings by 6,040 MovieLens users, measured against three baselines on the same split: most-popular, recent-genre popularity, and item-kNN. Twenty-five logged runs tested embeddings, genre features, and regularization, and three seeds fixed the final test number. A FastAPI service and a React front end turned the model into a product, covered by 22 automated tests.
(opens in a new tab)Final Solution
The final design and outcome
The GRU reached a hit rate at 10 of 0.257 on validation against 0.076 for item-kNN and 0.042 for most-popular, and 0.242 plus or minus 0.002 on the held-out test set across three seeds. The collaborative model cut rating error to an RMSE of 1.372 against 1.619 for the movie-mean baseline and beat that baseline for 94 percent of users.
(opens in a new tab)Next-title ranking on validation
| Model | Hit rate at 10 | MRR |
|---|---|---|
| Reverie (GRU) | 0.257 | 0.120 |
| Item-kNN | 0.076 | 0.035 |
| Recent-genre popularity | 0.045 | 0.023 |
| Most popular | 0.042 | 0.022 |
Held-out test result across three seeds: 0.242 plus or minus 0.002.
Rating prediction on the test set
| Model | RMSE |
|---|---|
| Neural collaborative filtering | 1.372 |
| Movie mean | 1.619 |
| User mean | 1.963 |
| Global mean | 2.072 |
Lower is better. Ratings run from 1 to 10.
Impact & Validation
Results, learnings, and outcomes
Reverie shows the full path from a research question to a product: a model with honest baselines, an experiment log, a tested API, and an interface a person can use to find something to watch with a friend.
Presentation
The deck, slide by slide

Slide 1 of 25







