Skip to content

SYSTEM Cited by 1 source

Yelp Ad Budget Allocation

Definition

Ad Budget Allocation is Yelp's production system that splits each advertising campaign's monthly budget between on-platform inventory (Yelp website, mobile site, app) and off-platform inventory (the Yelp Ad Network). Disclosed in the 2026-02-02 Yelp Engineering back-testing post as the target system of the Back-Testing Engine.

Daily decision cycle

Per campaign, per day:

  1. Beginning of day — compute daily budget from the monthly budget + spend history; decide the on/off-platform split based on campaign goals.
  2. Throughout the day — the campaign generates outcomes (impressions, clicks, leads). Yelp "can't directly control the number of these outcomes" — they are monitored as budget is spent.
  3. End of day — results are collected and used to bill the campaign.

Each day's decisions depend on previous days' outcomes — a cascading feedback loop where small changes ripple across the billing period. This day-by-day coupling is why the Back-Testing Engine replays at daily granularity rather than aggregating.

Scale

  • Hundreds of thousands of campaigns per month (verbatim: "hundreds of thousands of campaigns each month").
  • Monthly budget cycle — advertisers typically set monthly budgets, which is the constraint that makes A/B tests at the advertiser level slow (must wait a month per experiment).

Why it's hard to experiment on

The post names three properties of the system that make live A/B testing expensive:

  • Advertiser-level A/B yields small sample sizes for detecting some effects (can't randomise at user grain).
  • Monthly budget cadence forces ≥1-month wait per experiment.
  • Mistakes affect real advertisers — budget-allocation bugs spend real money.

These three properties motivated the Back-Testing Engine.

Architectural coupling

  • Upstream: campaign metadata + goals (the feature input to ML models and to budgeting logic).
  • Downstream: billing system, off-platform partner ad networks.
  • Repos involved: at least a Budgeting repo and a Billing repo (both included in the Back-Testing Engine as Git Submodules).

Seen in

Last updated · 476 distilled / 1,218 read