~/work / ott-recommender
globalone/ott-recsysshipped in-app
OTT Recommender
Personalized movie and show recommendations for an OTT app. Multi-source candidate retrieval feeds an XGBoost ranking model.
- recommendation
- candidate-retrieval
- learning-to-rank
01 / problem
Why it needed to exist
An OTT catalogue is too big to browse. Every user needs a short, personal list of what to watch next.
02 / what i built
The approach
01
Candidate generation
Three retrievers run in parallel: SVD matrix factorization for collaborative signal, KNN over user and item neighbourhoods, and content-based filtering on catalogue metadata for cold items.
02
Learning to rank
An XGBoost model re-ranks the merged candidates so the final ordering reflects each user rather than global popularity.
03
End to end into the app
Owned the pipeline from candidate retrieval through ranking to serving recommendations in the OTT application.
03 / architecture
How data flows
- 00Signalswatch interactions + catalogue metadata
- 01SVDcollaborative candidates
- 02KNNneighbourhood candidates
- 03Content-basedmetadata similarity
- 04XGBoost rankerpersonal ordering
- 05Apptop-N rows per user
04 / results
What it did in the real world
- Shipped inside the OTT application
- Two-stage retrieve-then-rank architecture