← Generative · 2026-10-24
📖 DEEP DIVE · GENERATIVE

GenPage: Towards End-to-End Generative Homepage Construction at Netflix

Lequn Wang, Jiangwei Pan, Linas Baltrunas
33 minread4.45score

The Netflix homepage is made of rows, each row a theme (such as "Korean TV Dramas"), with several titles laid out horizontally in each row. The old homepage was assembled by a multi-stage recommender: first retrieve candidate rows and candidate titles, rank them separately, and finally build the page. GenPage uses one decoder-only Transformer to generate the whole page directly: user history, account attributes and request information are encoded as a prompt, and the model generates row tokens and title tokens one by one, left to right and top to bottom, with each row and each title taking just one token. Training copies the large-language-model recipe: first pretrain with next-token prediction on homepages that received positive feedback online, then post-train with weighted binary classification (WBC) or reinforcement learning. The roughly 200M-parameter WBC version raised the core engagement metric Netflix uses for launch decisions by 0.24% in a 14-day A/B test and cut end-to-end latency by 20%; the reinforcement learning version has not launched yet.

1. Why generate the whole page

In a multi-stage system, retrieval, ranking and page construction each have their own models and objectives, and feature engineering is scattered across the stages. Whole-page generation aims to solve three things. First, one model goes from raw inputs straight to a page, so fewer models need maintaining, and the problem of inconsistent objectives across stages goes away. Second, a page generated token by token can be optimized with reinforcement learning on a whole-page reward, accounting for interactions between rows: for example, when the "Continue Watching" row is at the top, users mostly resume a show they have already started and stop browsing further down; the paper calls this ability to hold attention and make users stop browsing stopping power. Third, model quality can keep improving by adding data and parameters, without repeatedly changing the system structure.

Going online brings four constraints: the homepage must be generated in real time, so latency comes first; the catalog gets new titles every day, so cold start must be handled; user interests and trends change, so the model must stay fresh; and the page must satisfy a large number of business rules.

2. How data becomes tokens

Tokenization of homepage data. On the left are context tokens, equivalent to the prompt, from three kinds of data: user history (title ID, action type, action-time bucket, watch-duration bucket), account attributes (language, kids or adult account), and request information (device type, time-of-day bucket). On the right are page tokens, equivalent to the model's answer: row 1 through row N laid out in order, each row consisting of one row ID and several title IDs.
Tokenization of homepage data. On the left are context tokens, equivalent to the prompt, from three kinds of data: user history (title ID, action type, action-time bucket, watch-duration bucket), account attributes (language, kids or adult account), and request information (device type, time-of-day bucket). On the right are page tokens, equivalent to the model's answer: row 1 through row N laid out in order, each row consisting of one row ID and several title IDs.

Each training example corresponds to one homepage impression and has three parts: context (user history, account attributes, request information), page (rows and titles in layout order), and feedback (plays, thumbs-up, abandonment, etc.). Only context and page are tokenized as the model's input and output; feedback is turned into a supervision signal by the reward system.

The team did not use an off-the-shelf text tokenizer but designed custom tokens for homepage data. The fact "the user watched Orange Is the New Black for 50 minutes 30 days ago" takes 16 tokens with GPT-5's tokenizer and only 4 with GenPage: title ID, action type, action-time bucket, watch-duration bucket. Each title and each row corresponds to one token, so sequences are shorter, inference is cheaper, and business rules can be written directly as masks on certain tokens. The row and title vocabularies are updated daily.

The homepage is usually generated over several requests, a few rows each time. Before each page-down, the rows already generated and the user's latest actions on those rows are appended to the prompt, so the next batch of recommendations can use both long-term preferences and in-session behavior.

3. Reward and model

The reward comes from Netflix's existing reward system, which has been tuned through online A/B tests and aligned with users' long-term satisfaction. The system gives each impressed title on the page a scalar reward: a show binged in one night gets a high reward, a movie watched for only 10 minutes a low one, and a title the user abandons after impression a negative one. The whole-page reward is the sum of all impressed titles' rewards.

The model is a standard decoder-only Transformer with one change: input embeddings and the output projection do not share weights. Pretraining optimizes a softmax over the whole vocabulary, while WBC post-training optimizes a separate sigmoid for each token; the two need very different logit ranges, and untying the weights lets the model adapt to both objectives. The online A/B used a model of about 200M parameters, to stay within the latency budget.

4. Training

4.1 Pretraining: imitate the production system

Pretraining uses homepage impressions that received positive feedback online: given the context and the first few page tokens already generated, predict the next page token. The model is trained from scratch, not initialized from an existing large model. This step teaches the model to generate pages similar to the production system's, but it only imitates and does not directly optimize the size of the reward; after GenPage launches, repeatedly retraining on its own generated pages also risks degrading the model.

4.2 WBC post-training: turn generation into per-token valuation

WBC has the model estimate, given the context and the generated prefix, the value of generating each candidate row or title. Each impressed title's label is the sign of its reward (1 for positive engagement, 0 for abandonment), its weight is the absolute value of the reward, and a row's reward is aggregated from the rewards of the titles in it. Following the paper's description, the loss is written as:

is one impressed row or title on the page, its reward, the logit the model gives this token at that position, and the sigmoid. Besides each impressed target, some tokens are randomly sampled as negatives. Rarely impressed titles are drawn as random negatives far more often than they appear as positives, so the model naturally values long-tail titles lower; this acts as a popularity prior and keeps the model from ranking long-tail titles very high because of a few noisy examples.

At generation time, the model computes logits over all candidate tokens at each step, greedily picks the largest, appends it to the prefix, and generates the next. On the standard offline evaluation set for the production ranker, the WBC model beat the production ranker on title-level metrics such as weighted AUC.

4.3 Reinforcement learning post-training: optimize for the whole-page reward

WBC optimizes individual titles; reinforcement learning optimizes the whole page. The approach follows RLHF for large models: first train a reward model that takes any generated page and predicts its whole-page reward (the supervision target is the sum of title rewards given by the reward system), then optimize the generation policy with Dr. GRPO (a variant of GRPO that corrects an objective bias), with verl as the training framework and vLLM as the inference engine. The policy, reference model and reward model are all initialized from the pretrained checkpoint. The reward model's training data comes from the production policy and is only reliable on pages similar to production ones, so the policy is kept near the reference model with a KL penalty, to stop the policy from generating pages the reward model would wrongly score high. There are also rule-based rewards, for example that the page must have a row-by-row structure and that business-critical rows must not be placed too far down.

5. Engineering problems to solve for launch

Cold start has two remedies. One is to write the metadata of new titles or time-sensitive content such as live events directly into the context tokens. The other is semantic embedding fusion: each title's input embedding fuses an ID embedding with a content embedding built from the synopsis, cast, subtitles, genre and video content, so a new title has a usable representation even with few interactions.

Freshness relies on multi-cadence incremental training: every so often, a full pretraining and post-training pass over a longer history window; between those passes, post-training continues daily from the previous day's checkpoint on the most recent day of data plus a sample of historical data, keeping up with new titles and trends without forgetting old knowledge. New rows and new titles are first initialized with the fallback token of their type, and during training a small fraction of known tokens is randomly replaced with fallback tokens, so the model learns to handle tokens it has never seen.

Business rules are guaranteed by constrained decoding: at each step a mask of allowed tokens is computed from the applicable rules and multiplied onto the output logits, so only compliant tokens can be generated. For example, to pin the "Popular Games" row to row 2, all other row tokens are masked at the row-2 position. Rules vary by request, so the masks must be built dynamically per request and per position, and the team modified the inference engine for this.

Each row autoregressively generates only its first few titles, because those draw the most attention and most determine the impression the row makes; the remaining positions are filled with one forward pass conditioned on that prefix, taking the highest-logit compliant titles. This is called hybrid row decoding and is used to reduce decoding steps.

6. Experiments

6.1 Does pretraining help

This experiment is meant to show that pretraining gives WBC post-training a better starting point. It compares pretraining followed by WBC against doing WBC directly.

MetricWith pretrainingWithout pretraining
Loss (weighted BCE)0.3210.333
Row AUC0.8840.879
Entity AUC0.9200.910

Entity AUC going from 0.91 to 0.92 looks small, so the authors restate it: ignoring example weights, if you randomly draw a pair of impressed titles (one positive, one negative), the probability the model orders them wrongly drops from 9% to 8%. On a mature production system, a single change rarely brings an improvement this large.

6.2 Add parameters or add context

This experiment compares the gains from two ways of improving: scaling the model from about 120M to 900M parameters, versus keeping the model size fixed and progressively enriching the prompt's content and tokenization.

The left plot shows pretraining loss (cyan, left axis) and WBC post-training loss (red, right axis) as model parameters go from 120M to 900M; both fall roughly as a power law in parameter count, with WBC loss dropping from about 0.3265 to about 0.3222. The right plot fixes model size and progressively enriches the context, with WBC loss normalized to 1.0 at step 1, falling to about 0.93 after 6 steps.
The left plot shows pretraining loss (cyan, left axis) and WBC post-training loss (red, right axis) as model parameters go from 120M to 900M; both fall roughly as a power law in parameter count, with WBC loss dropping from about 0.3265 to about 0.3222. The right plot fixes model size and progressively enriches the context, with WBC loss normalized to 1.0 at step 1, falling to about 0.93 after 6 steps.

Scaling the model about 7.5x lowers WBC loss by only about 1.3%; enriching the context lowers it by about 6.9% cumulatively, and several single context improvements each gained more than the whole parameter scale-up. The authors' judgment is that at the current stage, personalization quality is limited first by the information available to the model and how it is represented, and only then by capacity. The two experiments use different axes, and each context step is measured as an improvement over the previous step on a different data snapshot and then multiplied together, so only relative comparisons are possible.

6.3 Is reinforcement learning optimizing the whole page

This experiment is meant to show that reinforcement learning learns a page-level policy rather than greedy token-by-token choices. The reward rises steadily during training, but it is computed by the same reward model the policy is optimizing, so it only counts as a sanity check. More convincing is diversity: measured by pairwise embedding distance between titles on the page, it is not part of the training objective, yet it also rises during training.

Reinforcement learning post-training curves, with reward (red) and diversity (cyan) both normalized to 1.0 at the pretrained checkpoint. Within 140 steps the reward rises to about 1.54 and diversity to about 1.15 to 1.17, even though diversity is not part of the training objective.
Reinforcement learning post-training curves, with reward (red) and diversity (cyan) both normalized to 1.0 at the pretrained checkpoint. Within 140 steps the reward rises to about 1.54 and diversity to about 1.15 to 1.17, even though diversity is not part of the training objective.

6.4 Online A/B

The online control is the existing multi-stage homepage recommender, and the treatment is the roughly 200M-parameter WBC model. To keep business rules such as eligibility checks, GenPage decodes within the candidate row and title sets produced by the existing system. There are 5 treatment arms, differing in the number of random negatives and which online impressions are included in training.

ResultValue
Core engagement metric (5 treatment arms)All significantly up, p<0.001
Best treatment arm+0.24%, 95% confidence interval [0.17%, 0.30%]
End-to-end latency-20%

The 5 configurations gained similar amounts, showing that the gain does not depend on one particular training-data setup. The authors call it one of the largest algorithm-driven gains in recent years. Latency dropped because one Transformer consumes tokenized raw inputs directly, replacing several ranking stages and a lot of feature computation, while custom tokens and hybrid row decoding reduce decoding steps, and the available optimizations are not yet exhausted.

Two more things were observed after launch. First, the latest in-session actions quickly influence later recommendations and fall back to long-term preferences after a day or two, showing the model really uses action timestamps, which the old system needed many hand-crafted features to do. Second, the composition of impressed content changed unexpectedly: for example, the ratios of new to old titles, series to movies, and high-quality to low-quality engagement all shifted. The authors speculate this is because GenPage's personalization is more precise, exposing that components inherited from the old system, such as the reward system, are not yet aligned with the generative paradigm, and they will tune these components next.

7. Limitations

The authors list three unfinished parts: reinforcement learning post-training has not launched; long context still relies on hand-designed summaries; and text, multimodal and reasoning capabilities have not been brought in. Reinforcement learning also has two open problems: offline evaluation depends on the reward model the policy is optimizing, so the conclusions are circular; and WBC decomposes fully by title while whole-page reinforcement learning does not decompose at all, and how to exploit partial structure between the two remains unanswered.

In addition, the online experiment decodes within the candidate sets from the old system and does not replace the retrieval stage, so this A/B validates ranking and page construction, not fully end-to-end generation.

8. Practical implications

  • If you work on generative recommendation, check your tokenization first: one item or one layout unit per token keeps sequences short, and business rules can be written directly as logit masks, without maintaining complex constraints over a multi-token text vocabulary.
  • Enrich the context before scaling the model. In Netflix's data, the cumulative loss reduction from context improvements is about 5 times that from a 7.5x parameter scale-up.