Uber Blog

How Uber Optimizes the Timing of Push Notifications using ML and Linear Programming

thumbnail

Introduction

Uber has experienced quick growth in volume for marketing push notifications, which were introduced in March 2020. However, many of these notifications had conflicting messaging and lacked personalization for users. As a result, Uber needed a comprehensive approach to optimize the timing and content of push notifications.

Problem Statement

The problem statement is to determine the best schedule with which to send pushes currently buffered for a user, considering push expiration time, push send window, frequency cap, minimum time difference between push notifications, and other constraints.

Planning Over a Time Horizon

The system considers potential combinations of pushes and delivery times over a fixed time horizon and picks the schedule that maximizes some objective. To simplify, the problem is formulated as an assignment problem, where the schedule that maximizes the sum of scores from its assignments is determined using linear program formulation and machine learning models.

Scoring Assignments

The value of a push-time pair is determined with an XGBoost model trained on historical data to predict the conversion probability. The model uses time, push, and user features.

Components

The Persistor stores pushes onto non-volatile storage, while the Schedule Generator fetches all buffered pushes for a user and determines the optimal schedule for them. The Scheduler delivers scheduled pushes, and the Push Delivery component sends the push to downstreams responsible for device delivery.

Future Work

Uber plans to expand the models to take multiple objectives into account and optimize the timing and content of other notification types. Additionally, more volume on Uber Eats comes from email than push.