Two-stage engine/pgvector + LambdaMART
Recommendations that learn your taste.
Not another row of what is trending. CineMatch builds a profile from what you watch, retrieves the closest titles with a pgvector index, and re-ranks them with a learned model so the next pick fits you, not the crowd.
01. Profileyour taste
$ taste = embed(your_likes)
02. Retrievepgvector kNN
$ candidates = pgvector.knn(taste, k=50)
03. Re-ranklambdaMART
$ picks = lambdaMART.rank(candidates)
See it in action
$ cinematch recommend --for "slow-burn sci-fi" matching 1,510 titles in the catalog 1 Arrival 98% match 2 Blade Runner 2049 96% match 3 Annihilation 94% match ranked by your taste, not the box office
cinematch
1
2
3
4
5
ranked by your taste, not the box office
CineMatchWhy it works
Movies and TV
815 films and 695 series, embedded and refreshed weekly from TMDB.
Built on your taste
A 1536-dim embedding per title. Your likes steer both retrieval and ranking.
Ranks in milliseconds
A LambdaMART model re-orders the 50 candidates with p95 latency near 0.9 ms.
Honest metrics
NDCG@10 0.81 on held-out users, a 14% lift over a popularity baseline.
The catalog
Find your next favorite.
One tap to sign in, no passwords. Your taste profile builds as you go.
Start matching























































