AD/Marketing Tech

A DSP (demand-side platform) processes 2M bid requests/second across 15 ad exchanges. Each bid decision must happen in under 100ms. The ML model's bid price needs continuous recalibration based on win rates, CPAs, and remaining campaign budgets.

Campaign CAMP-8812's CPA drifted from target $4.20 to $7.80 over 3 hours because the bidding model wasn't recalibrated against real-time win/conversion data.
LIVEbid_events
bid_idcampaign_idexchangebid_pricewonimpressionclickconversionts
bid_9a3f01CAMP-8812google_adx2.4truetruefalsefalse2024-03-15T14:00:01.112Z
bid_9a3f02CAMP-8812google_adx2.55truetruetruetrue2024-03-15T14:00:01.445Z
bid_9a3f03CAMP-8812openx2.2falsefalsefalsefalse2024-03-15T14:00:01.667Z
bid_9a3f04CAMP-8812pubmatic2.8truetruetruefalse2024-03-15T14:00:02.001Z
bid_7b2e01CAMP-4455google_adx1.9truetruefalsefalse2024-03-15T14:00:01.230Z
bid_7b2e02CAMP-4455index_exchange1.75truetruetruetrue2024-03-15T14:00:01.890Z
Streaming SQLRunning
Compute rolling win rate, CTR, and CPA per campaign in 5-min windows
CREATE SOURCE bid_events WITH (
  connector = 'kafka',
  topic = 'dsp.bid_events',
  properties.bootstrap.server = 'broker:9092'
) FORMAT PLAIN ENCODE JSON;

CREATE MATERIALIZED VIEW campaign_metrics AS
SELECT
  campaign_id,
  window_start,
  COUNT(*) AS total_bids,
  COUNT(*) FILTER (WHERE won) AS wins,
  ROUND(
    COUNT(*) FILTER (WHERE won)::NUMERIC
    / NULLIF(COUNT(*), 0) * 100, 1
  ) AS win_rate_pct,
  COUNT(*) FILTER (WHERE click) AS clicks,
  ROUND(
    COUNT(*) FILTER (WHERE click)::NUMERIC
    / NULLIF(COUNT(*) FILTER (WHERE impression), 0) * 100, 2
  ) AS ctr_pct,
  COUNT(*) FILTER (WHERE conversion) AS conversions,
  CASE
    WHEN COUNT(*) FILTER (WHERE conversion) = 0 THEN NULL
    ELSE ROUND(
      SUM(bid_price) FILTER (WHERE won)::NUMERIC
      / COUNT(*) FILTER (WHERE conversion), 2
    )
  END AS effective_cpa,
  ROUND(AVG(bid_price) FILTER (WHERE won), 2) AS avg_win_price
FROM TUMBLE(bid_events, ts, INTERVAL '5 MINUTES')
GROUP BY campaign_id, window_start;
Generate bid adjustment signals when CPA deviates >15% from target
bid_adjustmentsauto-updating
campaign_idcurrent_cpatarget_cpadeviation_pctbid_modifierwin_rateaction
CAMP-88125.14.221.40.8568.2REDUCE_MODERATE
CAMP-44552.853.5-18.61.1572.1INCREASE_MODERATE
CAMP-21906.354.832.30.755.4REDUCE_AGGRESSIVE
RisingWave recalculates effective CPA per campaign every 60 seconds. When CAMP-8812's CPA hits $5.10 (21% above target), bid prices auto-reduce by 15% — CPA returns to $4.40 within 20 minutes.
Best-in-Class Event Streaming
for Agents, Apps, and Analytics
GitHubXLinkedInSlackYouTube
Sign up for our to stay updated.