Restaurant Ads Performance & Experimentation

Public Kaggle ad data reframed as restaurant advertisers on a food-delivery app. Money is in spend units because the source does not state a currency. ROAS assumes a revenue per order, since the data has no revenue (change it below).

Headline KPIs

Where the money goes

Ad performance data. All charts follow the filters above.

Share of spend vs share of conversions, by age

An age group whose grey bar is longer than its blue bar is over-funded.

View as table

Audience segments: age × gender

View as table

Spend concentration (paid ads, largest first)

If the blue line sits below the grey one, the biggest ads deliver less than their share of spend.

View as table

Advertisers

"Paid-only cost/conv." excludes conversions credited to ads that spent nothing.

Did ads cause extra orders? A/B test

A separate dataset of 588,101 users, not affected by the filters above. The ad group saw sponsored restaurant ads; the holdout saw a non-commercial ad in the same slots.

Lift in conversion rate (ad group minus holdout)

Intraday trend: conversion rate by hour of peak ad exposure

The dataset has no calendar dates, so the trend is shown across hours of the day. Holdout lines are noisy overnight because few holdout users fall in those hours.

View as table

Where did the lift show up?

Dot = lift, line = 95% confidence interval. Filled dot = still significant after Holm correction for 18 segment tests. Segments are exploratory.

View as table

Opportunity: move 20% of the 45–49 budget to 30–34

From excel/opportunity_sizing.xlsx (paid ads only; revenue per order fixed at the assumed value). Base / Best / Worst vary how much worse the new spend performs.