
GenRec: Netflix’s first step towards LLM based recommender system
Explore how Netflix is transforming recommendation systems with GenRec, an LLM-based ranking model that combines user behavior, content understanding, and personalized recommendations. Discover its two-phase training approach, context engineering, and reward mechanisms designed to improve both engagement and long-term user satisfaction.
In today’s AI world, we’re using LLMs almost everywhere: writing, coding, search, support.But what about recommendation systems? The thing deciding what we watch, buy and scroll every day?Most of them still run on thousands of hand-crafted features and custom-built models.Netflix took the first step and shared GenRec, A LLM-based recommendation ranker.
Introduction
Until now, Netflix’s recommendation system has been a classic large-scale system. It runs on a huge number of hand-crafted features describing users, titles and their interactions, plus higher-order combinations of those features.
On top of those features, a set of custom architectures were used for example neural networks to model feature interactions, transformer based architectures for capturing interests of users and multi-task learning architectures powering multiple recommendation tasks.

Where this approach struggles?
The system works absolutely fine and it has been refined over many years. But it is hard to extend. As what of tomorrow netflix wants to add a new content type so to add that content type it needs:
- New features to be engineered
- Changes to the model architecture
- New infrastructure
and rounds of experiments.
As the business grows, this complexity makes it hard for the recommender to keep pace.
Why LLMs?
Large language models bring what the old stack lacks: broad knowledge of the world and a strong grasp of language. That lets them model users, content and context more richly than a pile of numeric features. A member’s history can simply be written as text and handed to the model. It also opens the door to steering recommendations with a prompt, instead of building a new model for every new use case.
Off-the-shelf LLMs are not ready to be recommenders on their own, though. They push globally popular titles, invent titles that are not in the catalog, ignore business rules and personalize weakly.
Enters GenRec
To bridge this gap, Netflix built GenRec, an LLM-backed ranker that scores titles for each member. Netflix calls it its first step from a traditional recommendation stack toward an LLM-native one.
At a high level, GenRec is trained in two phases.
Phase 1: A Netflix-adapted foundation LLM
Netflix takes an open-source LLM and continues training it on its private data, so the model understands Netflix members and content.
Phase 2: GenRec
This foundation model is then post-trained on ranking-specific data and objectives, producing GenRec, a model tuned for ranking titles.

Deep dive: the two phases, one by one
Let’s look at each phase in turn, starting with the foundation.
Phase 1: A Netflix-adapted foundation LLM
Phase 1 starts from an open-source LLM and continues training it on Netflix’s private data. Its job is to build and balance a broad set of foundational skills: world knowledge, personalization, content understanding and language ability.
A few traits set it apart:
- It targets long-term understanding of members, content and language, which changes slowly and it is updated rarely.
- It aims to be the most capable base model, so it is less constrained by serving cost.
- It is a common base for many Netflix applications, not only recommendations.
It pays off. Starting GenRec from this model, instead of the raw open-source LLM, improves offline ranking quality by roughly 10–20%.
The paper says little beyond this. It does not name the base model, its size, the training data or the recipe, because its focus is Phase 2. So that is where we go next.
Phase 2: GenRec
Phase 2 turns the foundation model into a ranker:
- Phase 1 balances broad skills. Phase 2 zooms in on ranking quality and the ability to steer recommendations.
- Phase 2 is retrained often, to keep up with new releases, shifting popularity and members’ latest interests.
Turning watch history into conversations
LLMs learn well from chats, so Netflix rewrites each member’s history as a conversation between a user and a recommender. It can be one exchange (single-turn) or several in a row (multi-turn).
Each turn has two parts.
The user message packs in everything known before the member’s next move:
- Context: where in the app, time, device, locale.
- Profile and history: country, how long they have been a member, plan, past interactions.
- Title details: IDs, metadata like name, release date and synopsis, and popularity trends.
- Task: for example, predict what this member will play or thumb up next.
The assistant message is what the member actually did: played, for how long, abandoned, thumbs up or down. This is the ground truth the model learns from.
Here is a simplified, made-up example:
User: Saturday, 9 PM, TV. Member for 3 years. Recently finished a crime thriller series and gave it a thumbs up. Watched the first episode of a sci-fi mystery. Task: what will this member play next?Assistant: Played a crime drama for 1 hr 40 min, then gave it a thumbs up.
Training teaches the model how the assistant message follows from the user message. Because everything is plain text, the same data trains two goals at once: the language-modeling objective and the catalog-aware ranking objective, both covered later.
Verbalization and context engineering
An LLM can only read a fixed number of tokens at once, and a long-time member can have thousands of interactions. Longer prompts also cost more, and can drown out the useful signals.
So Netflix uses context engineering: it carefully decides what goes into the text, using four techniques.
- Retain in full: strong signals, like long watches or a thumbs up, are kept with rich detail.
- Omit: weak signals, like a few seconds of playback or a quick click, are dropped.
- Compress: repeated behavior, like bingeing ten episodes, becomes one short line.
- Elaborate: new or little-known titles get extra description, since the model knows little about them.
The goal is a short prompt packed with useful information. It should keep recommendations accurate without overflowing the model’s input limit or driving up cost.
Training objectives
GenRec’s Phase 2 training has two objectives:
- Recommendation ranking: Score titles so the ones a member truly enjoyed, like long watches or a thumbs up, come out on top.
- Language modeling: Keep predicting the next word in the verbalized text, as any LLM does.
Both are trained together. But when GenRec actually makes recommendations, only the ranking part is used. It never writes text.
So why keep language modeling? It adds extra signal from the text that helps ranking. It keeps the model good at reading language and following prompts. And it leaves the door open for future features, like explaining recommendations in plain words.
Model architecture
GenRec is a standard decoder-only Transformer, the same design as the Phase 1 foundation LLM, with one addition: a catalog-aware scoring head. Here is how a ranking is produced:
- The member’s history, context and title details are written into one piece of text. They call this verbalization.
- The LLM reads this text and condenses it into a single vector that captures the member’s current taste and context.
- Every title in the catalog has its own learned vector. The scoring head compares the member’s vector with each title’s vector, for example with a dot product, to give every title a score. Sorting by score gives the ranking.
The LLM, the scoring head and the title vectors are all trained together. For very large catalogs, training compares the right title against a sample of other titles rather than all of them (sampled softmax).
Because only real catalog titles have vectors, GenRec can never recommend something that is not on Netflix. And since scoring is a simple comparison, it stays fast even for large catalogs.

Reward signals: Teaching GenRec what “good” means
Learning purely from what members did has a catch: the model copies their habits, bad ones included. It might push the next episode of the same show over anything new, favor videos over games, or chase quick clicks over titles people truly enjoy.
So GenRec has two goals beyond plain accuracy:
- Business balance: a healthy mix of movies, shows, games, live events and podcasts, and of new and older titles.
- Long-term satisfaction: members who stay happy with Netflix, not just members who click today.
To get there, Netflix uses separate reward models. They don’t recommend anything. They grade each past engagement with a number.
- Long-term value: Real long-term outcomes are slow and noisy, so these models look at early signs. Did the member come back more often, explore more of the catalog, or keep watching over time?
- Rebalancing: These models boost under-shown content types and launch stages, so no kind of content gets ignored.
These grades become a single weight for each training example. During training, each example’s loss, the number that measures how wrong the model was, is multiplied by that weight:
final loss = normal loss × reward weight
Take two examples the model got equally wrong, each with a loss of 2.0 (made-up numbers):
- A member tried a new genre and then started returning more often. Weight 1.5, so the final loss is 3.0.
- A member rewatched the same comfort show for the sixth time. Weight 0.5, so the final loss is 1.0.
The bigger the loss, the more the model changes to fix it. So the first example teaches it a lot, and the second only a little. Across millions of examples, GenRec still learns from real behavior, but leans toward the kind that is good for members in the long run and for the business.
What this means: Towards LLM-native recommendation
GenRec is more than swapping in a new model. It changes how recommenders are built:
- From feature engineering to context engineering: The prompt becomes the new feature vector, so the work shifts to choosing what text goes in.
- From custom architectures to foundation backbones: Instead of a bespoke model per task, many tasks share one LLM and differ only in data, training and rewards.
- Scaling laws as a design guide: More data and bigger models reliably improve quality, so teams can plan investments the way LLM labs do.
- Pre-training, post-training and reward alignment: Build one Netflix-aware foundation once, then adapt it cheaply for each use case.
- From RecSys infrastructure to LLM infrastructure: Serving now looks like running an LLM, with GPUs, vLLM, batching and caching, rather than small classic models.
Conclusion
GenRec is Netflix’s first real test of an LLM as its recommendation ranker, and it held up. In a live A/B test against a production system tuned for years, it won on both short-term engagement and a long-term metric. It did this with about 40 times fewer Phase 2 training examples and far fewer input signals.
The recipe is simple to state. Write a member’s history as text, keep the prompt compact, score only real catalog titles, and use rewards to favor long-term satisfaction over quick clicks.
It is still an early step. The test covered recommendations computed in advance, not every surface in the app, and running an LLM costs more than the old feature-based models. But the direction is clear: recommendation is starting to look less like feature engineering and more like language understanding.
Enjoyed reading this content? Let the author know!
Your likes, comments, shares, and saves help creators reach more builders.
Loading recommendations
Loading article