Netflix Recommendation Engine

Netflix Recommendation Engine

How a catalogue of thousands becomes a homepage of dozens, personalised for every viewer without anyone browsing a menu.

Two-stageRetrieve then Rank
ImplicitPrimary Signal
<100msServing Budget
Per-rowPersonalisation
← Back to Case Studies

Overview

A streaming catalogue holds far more titles than anyone could browse. The homepage you see is not a catalogue at all — it is a constructed page, assembled for you, where even the order of the rows is a prediction.

The system cannot score every title for every user on every visit; that is far too much work for the hundred milliseconds it has. So it splits the problem in two: cheaply narrow thousands of candidates down to a few hundred, then spend real computation ranking only those.

Almost everything it learns from is implicit. Very few people rate anything, but everybody reveals preference by what they start, what they finish, what they abandon after four minutes, and what they scroll straight past.

Think of it like this: it is a shop that rebuilds its window display for each customer as they walk in — using what people like them bought, what they lingered over last time, and what they pointedly ignored.

The Core Challenge

Personalisation at this scale runs into several problems simultaneously:

Catalogue Size

Scoring every title for every user on every page load is computationally impossible within the latency budget.

Sparse Data

Any individual user has interacted with a tiny fraction of the catalogue, leaving mostly blanks to reason about.

Cold Start

New users have no history and new titles have no audience, yet both need sensible treatment immediately.

Feedback Loops

Recommending something makes it more likely to be watched, which then reinforces the recommendation regardless of whether it was good.

Freshness

Taste shifts, and what someone watched an hour ago should influence what they are shown now.

High-Level Architecture

The pipeline separates cheap breadth from expensive precision: candidate generation casts a wide net quickly, ranking applies heavy models to a small set, and assembly turns ranked items into an actual page.

01

Interaction Log

Every play, pause, abandon, search and scroll is recorded as an event, forming the raw material for every model downstream.

In shortEverything you do is written down, especially the things you did not finish.

02

User & Item Embeddings

Users and titles are each represented as vectors in a shared space, learned so that a user sits near the titles they are likely to enjoy.

In shortPeople and shows are placed on the same giant map, and closeness means likely interest.

03

Candidate Generation

Several cheap retrieval strategies each nominate a few hundred plausible titles — nearest neighbours in embedding space, trending items, continue-watching, and similar-to-recent.

In shortA few quick shortlists are drawn up by different methods, no deep thinking yet.

04

Ranking Model

A heavier model scores each candidate using rich features about the user, the title, the context and their interaction, producing a predicted engagement score.

In shortNow the shortlist gets properly assessed, one by one, with everything the system knows.

05

Page Assembly

Ranked items are grouped into themed rows, deduplicated, diversified and ordered, since a page is more than a flat list.

In shortThe winners are arranged into rows with titles, so it reads as a page rather than a leaderboard.

06

Feedback Loop

What you actually do with the page becomes training data, closing the loop and continuously updating the models.

In shortHow you react to the page teaches it what to do next time.

Building Your Homepage

1

Load User Context

The system gathers the viewer's profile, recent activity, device, time of day and anything left partly watched.

In shortIt picks up who you are, what you were doing, and where you left off.

2

Generate Candidates

Multiple retrieval sources each propose a few hundred titles, which are merged into one pool of a few thousand at most.

In shortSeveral shortlists are drawn up and pooled together.

3

Filter the Pool

Already-watched titles, regionally unavailable content and anything explicitly dismissed are removed before any scoring happens.

In shortAnything you cannot watch or already have is dropped straight away.

4

Score and Rank

The ranking model scores every remaining candidate for predicted engagement, given this user in this context.

In shortEach survivor gets a score for how likely you are to actually watch it now.

5

Diversify and Group

Near-duplicates are suppressed and titles are organised into coherent rows, balancing confident picks with some variety.

In shortIt avoids showing you ten near-identical things and sorts the rest into themed rows.

6

Log the Outcome

Impressions, clicks, plays and abandons are recorded against exactly what was shown, enabling later evaluation and retraining.

In shortIt writes down what it offered and what you did about it.

What It Actually Learns From

Explicit ratings are rare, unreliable and often aspirational. The useful signal is almost entirely behavioural.

Completion and Abandonment

Finishing a title is strong positive evidence. Abandoning after a few minutes is strong negative evidence, and far more common than any rating.

In shortWatching it all the way through says yes. Bailing out after five minutes says no, loudly.

Impressions Without Clicks

Repeatedly showing someone a title they never select is meaningful negative feedback, even though nothing was clicked.

In shortIgnoring the same thumbnail ten times tells the system plenty.

Context Features

Time of day, device and session length matter — a thirty-minute comedy on a phone at lunchtime is a different proposition from a film on a television at night.

In shortWhat you want on a phone at lunch is not what you want on the sofa at ten.

Recency Weighting

Recent behaviour is weighted more heavily than old behaviour, so the model tracks shifting taste rather than averaging a lifetime.

In shortWhat you watched last week counts for more than what you watched two years ago.

Retrieval and Ranking

The obvious design is one model that scores every title for every user. It is conceptually clean and completely impractical:

Naive Approach
  • Score the entire catalogue for every user
  • One model doing both breadth and precision
  • Latency grows with catalogue size
  • Cannot afford rich features at that volume
  • Tends to collapse onto globally popular titles
VS
Production Approach
  • Two stages: cheap retrieval, then expensive ranking
  • Retrieval uses approximate nearest neighbour over embeddings
  • Ranking sees only a few hundred candidates, so it can be heavy
  • Multiple retrieval sources give complementary coverage
  • Diversity and business rules applied after ranking

In short: the trick is refusing to think hard about most of the catalogue. A cheap method throws away ninety-nine percent of the options in milliseconds, which buys the budget to think properly about the remaining one percent.

The Cold-Start Problem

Collaborative approaches need history, and both new users and new titles have none. This is the single most common failure mode of a naive recommender.

New User

With no history, the system falls back to popularity within the user's region and any onboarding preferences, then adapts rapidly over the first few sessions.

In shortIt starts with what is broadly popular near you, then learns fast from your first few choices.

New Item

A title nobody has watched has no collaborative signal, so content-based features — genre, cast, description, visual similarity — carry it until behavioural data accumulates.

In shortA brand-new show is recommended based on what it is like, not who has watched it.

Exploration Budget

A deliberate fraction of slots is given to uncertain items, because a system that only shows confident picks never learns anything new.

In shortIt gambles on a few unknowns on purpose, otherwise it would never discover anything.

Hybrid Blending

Content-based and collaborative scores are blended with weights that shift toward collaborative as evidence accumulates.

In shortIt leans on descriptions early and on real behaviour later.

Scalability & Reliability

The serving path has a hard latency budget, so almost everything expensive is moved offline or precomputed:

  • Offline training, online serving — models are trained in large batch jobs and only inference happens in the request path.
  • Precomputed embeddings — item vectors are computed in advance and loaded into an approximate nearest-neighbour index, turning retrieval into a fast lookup.
  • Precomputed pages — for many users a page is generated ahead of time and lightly refreshed on request, rather than assembled from scratch.
  • Graceful fallback — if personalisation is unavailable, the page degrades to popular and trending content rather than failing — an unpersonalised homepage is fine, a blank one is not.
  • Continuous evaluation — changes are rolled out behind experiments, because offline metrics routinely disagree with what users actually do.

Typical Tech Stack

LayerCommon Choices
Event CollectionStreaming pipelines capturing impressions, plays and abandons
Feature StoreShared online and offline feature storage to keep training and serving consistent
TrainingDistributed batch training for embeddings and ranking models
Retrieval IndexApproximate nearest neighbour indexes such as FAISS or ScaNN
Ranking ServiceLow-latency model serving with strict timeout budgets
Page AssemblyRow construction, deduplication and diversity rules
ExperimentationA/B testing infrastructure with guardrail metrics

Trade-offs & Lessons

  • Relevance versus discovery — the most accurate recommender shows you more of what you already like, which is also the fastest route to boredom. Some deliberate imprecision is a feature.
  • The feedback loop is self-fulfilling — anything you promote gets watched more, which then looks like evidence it was a good recommendation. Breaking that requires deliberate exploration and careful evaluation.
  • Offline metrics mislead — a model that scores better on historical data frequently performs worse with real users, because the historical data was itself produced by the old model.
  • Absence is information — the most abundant signal is what people were shown and ignored, and systems that only learn from positives throw most of their data away.

A recommender is really a two-stage funnel with a feedback loop attached — cheap breadth, then expensive precision, then learning from the outcome. The same shape applies to any system that must select a small number of things to put in front of someone from a pool far too large to evaluate exhaustively.

Jargon, Decoded

A quick, no-nonsense translation of the technical terms used above.

Collaborative Filtering

Recommending based on what similar users liked, rather than on properties of the item itself.

Content-Based Filtering

Recommending based on attributes of the item — genre, cast, description — rather than on other users' behaviour.

Embedding

A list of numbers representing a user or item, arranged so that similar things end up close together.

Candidate Generation

The cheap first stage that narrows a huge catalogue down to a manageable shortlist.

Ranking

The expensive second stage that carefully scores and orders the shortlist.

Cold Start

The problem of recommending for a new user or a new item with no interaction history.

Implicit Feedback

Preference inferred from behaviour — watching, abandoning, ignoring — rather than from an explicit rating.

Approximate Nearest Neighbour

A method for finding items close to a point in embedding space quickly, trading a little accuracy for a lot of speed.

← Back to all Case Studies

Contact Us




Send us a message