~/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

  1. 00Signalswatch interactions + catalogue metadata
  2. 01SVDcollaborative candidates
  3. 02KNNneighbourhood candidates
  4. 03Content-basedmetadata similarity
  5. 04XGBoost rankerpersonal ordering
  6. 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