RL4RS

Each time the user opens or refreshes the app, the platform must display a “slate” of five short videos. The goal is to maximize both click-through rate (CTR) and total dwell time, while also encouraging the user to return and engage with the feed over multiple sessions. A reinforcement learning (RL) agent is integrated between the existing ranking engine and the homepage. From a set of candidate videos (pre-filtered by business rules), the agent selects the optimal combination that maximizes long-term value (LTV)

Use case
Optimizing the Video Feed of a Mobile Platform

Example observationsuser_profile: gender, region, tenure (6 categories)
device_profile: OS, network (4 + 2 categories)
session_stats: number of past refreshes, total time spent, click/view ratio (5 scalar features)
recent_watch_seq: IDs of the last 20 watched videos + embeddings (20 × 32-d vectors)
candidate_pool: up to 25 preselected videos, each with:
 – video_id, publisher_id
 – content_vec (32-d), length, category, popularity score
Example actionsOrdered selection of a slate of K = 5 videos from the candidate_pool
Example rewardΣ_{i=1..5}( 0.7*r_click_i + 0.3*r_dwell_i ) + 0.5*r_long

With:
r_click = 1 if clicked, 0 otherwise (per video)
r_dwell = min(view_time, 60 s) / 60
r_long = +1 bonus if the user requests another refresh within 30 seconds