Executive AI Dinner hosted by Kumo - Austin, April 8

Register here
5Regression · Revenue Optimization

Ad Revenue Optimization

Which ad slot maximizes revenue without increasing churn?

Book a demo and get a free trial of the full platform: research agent, fine-tune capabilities, and forward-deployed engineer support.

By submitting, you accept the Terms and Privacy Policy.

Loved by data scientists, ML engineers & CXOs at

Catalina Logo

A real-world example

Which ad slot maximizes revenue without increasing churn?

Ad-supported streaming tiers must balance revenue per viewer against ad fatigue that drives cancellations. Too many ads and subscribers downgrade or leave; too few and revenue per viewer drops. For a platform with 15M ad-supported subscribers generating $8 ARPU, a 10% improvement in ad load optimization adds $144M in annual revenue without increasing churn.

Quick answer

Graph neural networks optimize ad placement and frequency per subscriber by modeling the revenue-churn tradeoff individually. The model learns each subscriber's ad tolerance based on viewing patterns, engagement depth, and content type, enabling platforms to show 4 ads to tolerant viewers and 1 ad to at-risk subscribers. For a platform with 15M ad-supported subscribers, this optimization adds $144M in annual revenue without increasing churn.

Approaches compared

4 ways to solve this problem

1. Fixed ad load rules (X ads per hour)

Set a uniform number of ads per content hour or per session, regardless of subscriber behavior. The simplest approach.

Best for

Easy to implement and manage. Ensures consistent advertiser delivery commitments.

Watch out for

Treats all subscribers the same. Some subscribers abandon after 2 ads while others tolerate 5. A uniform load either leaves revenue on the table (too few ads for tolerant viewers) or drives churn (too many ads for sensitive viewers).

2. Segment-based ad capping

Define subscriber segments (heavy viewer, light viewer, high-risk, etc.) and set different ad load rules per segment.

Best for

Better than uniform rules. Captures the broad differences between subscriber types.

Watch out for

Segments are coarse. Within 'light viewers,' some are light because they are disengaging (ad-sensitive) and others are light because they only watch one show per week (ad-tolerant). Same segment, opposite ad strategies needed.

3. A/B testing ad loads

Run experiments with different ad loads across subscriber cohorts and measure the impact on revenue and retention.

Best for

Ground-truth measurement of the revenue-churn tradeoff. Good for validating model predictions.

Watch out for

Slow -- each test takes 4-8 weeks for meaningful retention signals. Can only test a few load levels at a time. Cannot personalize at the individual subscriber level.

4. KumoRFM (relational graph ML)

Connect subscribers, ad impressions, content, and watch sessions into a graph that models the revenue-churn tradeoff per subscriber. The GNN predicts optimal ad slots per session, balancing incremental revenue against individual churn risk.

Best for

Per-subscriber optimization that maximizes total revenue across the base. Learns that SUB303 tolerates 4 ads per session while SUB302 should see at most 1. Captures how ad tolerance varies by content type and viewing context.

Watch out for

Requires subscriber-level ad interaction data with session completion signals. Churn outcome data takes 30-60 days to materialize, so the model needs historical depth.

Key metric: Per-subscriber ad load optimization adds $144M in annual revenue for a 15M ad-supported subscriber base without increasing churn rates.

Why relational data changes the answer

Ad tolerance is not a subscriber attribute -- it is a function of the subscriber, the content, the session context, and the cumulative ad exposure this week. Subscriber SUB302 tolerates a pre-roll ad during a movie they are excited about, but abandons if shown a mid-roll during a casual browse session. The same subscriber's tolerance drops further after seeing 6 ads across sessions this week. This interaction between subscriber, content, session, and cumulative exposure lives across four tables. A flat model that predicts ad tolerance from subscriber-level features misses all of this context.

Relational models connect subscribers to their sessions, sessions to content, and sessions to ad impressions, learning the full context of ad tolerance. They discover that the revenue-optimal strategy is not to find the 'right' ad load per subscriber, but the right ad load per subscriber-content-session combination. On the RelBench benchmark, relational models score 76.71 vs 62.44 for single-table approaches. For ad revenue optimization, that accuracy gap means the difference between a $144M revenue gain and a strategy that either leaves money on the table or drives valuable subscribers to cancel.

Uniform ad loads are like a restaurant that serves the same portion size to everyone regardless of appetite. Some diners leave hungry (revenue left on the table), others leave feeling stuffed and never return (churn). Graph-based ad optimization reads the full dining context -- the diner's history, what they ordered tonight, how long they have been at the table -- and adjusts the portion (ad load) accordingly.

How KumoRFM solves this

Graph-powered intelligence for media platforms

Kumo connects subscribers, ad impressions, content, and watch sessions into a graph that models the revenue-churn tradeoff per subscriber. The GNN learns each subscriber's ad tolerance based on viewing patterns, engagement depth, content type, and historical responses to ad load changes. PQL predicts optimal ad slots per session, balancing incremental revenue against churn risk for each individual subscriber.

From data to predictions

See the full pipeline in action

Connect your tables, write a PQL query, and get predictions with built-in explainability — all in minutes, not months.

1

Your data

The relational tables Kumo learns from

SUBSCRIBERS

subscriber_idplanad_tieravg_session_min
SUB301Ad-supportedStandard55
SUB302Ad-supportedLight32
SUB303Ad-supportedStandard78

AD_IMPRESSIONS

impression_idsubscriber_idad_slotrevenuetimestamp
AI501SUB301Pre-roll$0.0452025-03-01 20:00
AI502SUB301Mid-roll-1$0.0382025-03-01 20:15
AI503SUB302Pre-roll$0.0422025-03-01 14:30

CONTENT

content_idtypegenreduration_min
SER401SeriesDrama48
MOV501MovieComedy95

WATCH_SESSIONS

session_idsubscriber_idcontent_idads_showncompleted
WS701SUB301SER4013True
WS702SUB302MOV5012False
WS703SUB303SER4014True
2

Write your PQL query

Describe what to predict in 2–3 lines — Kumo handles the rest

PQL
PREDICT SUM(AD_IMPRESSIONS.revenue, 0, 1, days)
FOR EACH SUBSCRIBERS.subscriber_id
WHERE BOOL(SUBSCRIBERS.is_cancelled, 0, 30, days) = False
3

Prediction output

Every entity gets a score, updated continuously

SUBSCRIBER_IDOPTIMAL_ADS_PER_SESSIONPREDICTED_DAILY_REVCHURN_RISK
SUB3013$0.128Low
SUB3021$0.042High
SUB3034$0.172Low
4

Understand why

Every prediction includes feature attributions — no black boxes

Subscriber SUB302 -- Ad-supported Light tier

Predicted: Optimal: 1 ad per session ($0.042 daily, churn risk: High)

Top contributing features

Session abandonment after 2+ ads

68% rate

33% attribution

Average session duration

32 min

24% attribution

Days since plan downgrade consideration

12 days

19% attribution

Content type engagement depth

Low

14% attribution

Similar subscribers' churn rate at 2+ ads

22%

10% attribution

Feature attributions are computed automatically for every prediction. No separate tooling required. Learn more about Kumo explainability

Frequently asked questions

Common questions about ad revenue optimization

How do you optimize ad revenue on a streaming platform without increasing churn?

Model the revenue-churn tradeoff at the individual subscriber level rather than applying uniform ad load rules. Graph models learn each subscriber's ad tolerance based on viewing patterns, session context, and content type, enabling per-subscriber ad load decisions that maximize total revenue without pushing sensitive subscribers toward cancellation.

How many ads can you show on a streaming platform before subscribers churn?

There is no single answer -- it varies by subscriber. Heavy, engaged viewers tolerate 4-5 ads per session with minimal churn risk. Light viewers with declining engagement may abandon after 1-2 ads. The key is predicting tolerance at the individual level rather than setting a platform-wide cap.

How do you balance ad revenue and subscriber retention?

Use a model that explicitly predicts both incremental revenue and incremental churn risk for each additional ad shown per subscriber-session. The optimal ad load maximizes revenue subject to a churn-risk constraint. Graph models handle this naturally because they see the full subscriber behavioral context.

What data do you need for ad revenue optimization?

Subscriber profiles, session-level viewing data with ad impression logs, session completion signals (did the subscriber finish the content or abandon), and churn outcome data (30-60 day lookback). Content metadata helps the model learn that ad tolerance varies by content type and genre.

What is the revenue impact of per-subscriber ad optimization?

A platform with 15M ad-supported subscribers at $8 ARPU adds $144M in annual revenue by optimizing ad load individually. The gain comes from two sources: increasing ad load for tolerant subscribers (50-60% of the base) and preventing churn-driven revenue loss from over-exposing sensitive subscribers.

Bottom line: A platform with 15M ad-supported subscribers adds $144M in annual revenue by optimizing ad load per subscriber. Kumo balances revenue against individual churn risk, showing some subscribers tolerate 4 ads while others leave after 2.

Topics covered

ad revenue optimization streamingad load balancing AIAVOD revenue modelad frequency capping MLstreaming ad optimizationKumoRFM ad revenueviewer ad tolerance predictionrevenue-churn tradeoff model

One Platform. One Model. Infinite Predictions.

KumoRFM

Relational Foundation Model

Turn structured relational data into predictions in seconds. KumoRFM delivers zero-shot predictions that rival months of traditional data science. No training, feature engineering, or infrastructure required. Just connect your data and start predicting.

For critical use cases, fine-tune KumoRFM on your data using the Kumo platform and Research Agent for 30%+ higher accuracy than traditional models.

Book a demo and get a free trial of the full platform: research agent, fine-tune capabilities, and forward-deployed engineer support.