Curated summary
Thinking Fast & Slow for a Personalized Notification System
Netflix’s personalized notification system separates long-term messaging strategy from real-time content selection. A “slow” policy sets each member’s personalized weekly pacing plan, while a “fast” policy chooses the best message when an opportunity arises. This hierarchy addresses the limits of short-term optimization by balancing immediate engagement with fatigue, opt-outs, and long-term member experience.
Limitations of the Previous System
- The earlier system used a causal model to estimate the short-term incremental effect of sending a single notification.
- It optimized immediate actions, but could not capture cumulative effects such as:
- Notification fatigue
- Declining responsiveness over time
- Sustained viewing behavior
- Gradual opt-out risk
- Send frequency and message ranking were coupled:
- A relevance threshold implicitly controlled overall send volume.
- Changing the threshold affected both frequency and the quality or distribution of selected messages.
- Frequency could not be explicitly personalized according to each member’s engagement patterns.
The Hierarchical Slow-Fast Architecture
- The Slow policy makes strategic decisions over a longer horizon, such as a week.
- It selects a personalized “Pacing Plan Action” that defines intended push and email frequencies.
- The action space contains roughly 100 combinations of cross-channel pacing strategies.
- The Fast policy operates in real time, selecting the most relevant message within the limits established by the slow policy.
Utility-Based Strategic Planning
The Slow policy chooses the action that maximizes a personalized utility function:
U(member, action) = Σ wₖ · Rewardₖ(member, action) — Cost(action)
- Positive signals estimate whether a member will value and engage with notifications.
- Negative signals estimate fatigue and the likelihood of opting out of a channel.
- Explicit negative feedback is sparse, so predicted messaging costs alone are too small to prevent excessive sending.
- Netflix adds a universal cost to every message, ensuring that the utility remains well-behaved and discourages “always send” strategies.
- This cost is tuned through online experiments and offline evaluation.
Pacing Messages Over Time
- A basic pacing strategy converts the target frequency into a per-opportunity probability.
- At each eligible opportunity, the system uses weighted randomization to decide whether to send.
- This produces a naturally varied schedule while maintaining the desired expected frequency.
- The architecture can also support structured patterns, including:
- Day-of-week preferences
- User-activity-based pacing
- Bursts aligned with product launches
Communication Between Policies
- The Slow policy calculates a member’s plan and stores it in a low-latency feature store.
- The Fast policy retrieves that plan whenever a notification opportunity occurs.
- This asynchronous event-and-state design lets the planner focus on long-term member health while the executor focuses on immediate relevance.
The main recommendation is to decouple notification frequency and pacing from message ranking. A hierarchical system can explicitly manage long-term communication strategy while preserving the responsiveness and personalization of real-time selection.
Related reading
Continue with another curated summary.
GenPage: Towards End-to-End Generative Homepage Construction at Netflix
Read originalWhy We Use Separate Tech Stacks for Personalization and Experimentation | Spotify Engineering
Read originalGenRec: Towards LLM-Native Recommendation at Netflix
Read originalDemocratizing Machine Learning at Netflix: Building the Model Lifecycle Graph
Read original