Skip to content
Academy
Marketing Academy · Field Work●Analytics & Attribution
MiniAudit· 25 minutes

The Reallocation Call: Auditing Grab's MMM Output

Grab Holdings

Objective: Given a supplied 5-channel MMM output table for Grab's ride-hailing and food delivery ad mix (contribution %, saturation status, adstock decay), apply the lesson's interpretation framework to flag the over-invested and under-invested channels.

You're the media analyst at Grab preparing the quarterly budget memo. Finance wants a reallocation recommendation, not a wall of regression output.

Read the response-curve and adstock outputs already fitted by the data science team, and translate them into a plain-English reallocation call.

Before you start

What you'll need

Free path (everything below is enough to finish)

FreeSort, filter, and chart the MMM output table

Free, no account friction, handles a 5-channel weekly table easily

The process

2 steps

Step 01 of 02

Reading saturation curves to spot over-invested channels

The lesson's playbook step 6 says: fit the response curves, then solve for the spend mix that maximizes revenue at the current budget. A channel past its saturation point returns less per dollar than one still climbing its curve.

Grab's MMM output shows Google Search Ads contributing 9% marginal revenue per additional ₹1L/week up to ₹40L/week with no flattening, while Meta's marginal contribution drops from 8% to 2% once weekly spend crosses ₹18L. Grab is currently spending ₹22L/week on Meta and ₹15L/week on Search. What's the call?

Google Sheets— Import mmm-output-grab.csv, plot marginal contribution vs weekly spend for each channel.

Procedure

  1. Import mmm-output-grab.csv and freeze the header row
  2. Sort channels by 'marginal contribution at current spend' ascending
  3. Flag any channel whose current spend sits past its saturation point
Sample output
Channel        CurrentSpend  SaturationPoint  MarginalContribAtCurrentSpend
Meta           22L/wk        18L/wk           2%
Google Search  15L/wk        40L/wk+          9%
YouTube        9L/wk         12L/wk           6%
TV             6L/wk         20L/wk           7%
Podcasts       2L/wk         5L/wk            8%

Healthy

Search, TV, and Podcasts are all still climbing their curves, moving spend there returns more per rupee than Meta does today.

Unhealthy

Leaving Meta at ₹22L/week because 'it's always been the biggest channel' while it returns a quarter of what Search returns at the margin.

What this means

Saturation isn't a warning to cut a channel to zero, it's a signal that the NEXT rupee is better spent elsewhere.

So what do I do about it?

SymptomActionEffort
A channel's marginal contribution is below 3% while others sit above 7%Shift the next budget increment to the under-saturated channel, don't cut the saturated one to zero30 min
YouYou can do this yourself, no engineering access required.

Step 02 of 02

Distinguishing carryover (adstock) from immediate response

The lesson's worked example notes podcasts can carry a 6-week decay, a channel can look 'dead' in the week it's cut and still be driving sales for over a month after.

Grab paused podcast spend in week 40 for a cost review. Weekly revenue attributable to podcasts (per the model) was 4,200 in week 40, 3,100 in week 42, and 1,800 in week 46. Is this evidence podcasts don't work, or something else?

Google Sheets— Chart the podcast contribution column across weeks 38-48 against the spend column.

Procedure

  1. Plot podcast weekly spend and modeled contribution on the same chart
  2. Note the week spend drops to zero
  3. Measure how many weeks the contribution line takes to reach zero after that
Sample output
Week  Spend  ModeledContribution
38    2000   4500
40    0      4200
42    0      3100
44    0      2600
46    0      1800
48    0      900

Healthy

Contribution decays gradually over ~6 weeks after spend stops, this is adstock carryover working as expected, not a sign the channel failed.

Unhealthy

Reading week-40's still-high contribution as 'podcasts don't move fast enough to matter' and cutting the channel permanently after one pause.

What this means

A channel's decay curve length tells you how long to wait before judging a pause, not whether the channel is broken.

So what do I do about it?

SymptomActionEffort
A paused channel still shows contribution 2+ weeks laterWait out the full adstock decay window before concluding the channel has no effect5 min
YouYou can do this yourself, no engineering access required.

Final deliverable

A one-page reallocation memo: which channels are past saturation, which still have room, and the adstock decay window for any channel under review.

See a reference example
Sample output
Zomato Q3 MMM reallocation memo (excerpt)

OVER-SATURATED: Google Display (spend 14L/wk, saturation point 8L/wk, marginal contribution 1%)
STILL CLIMBING: YouTube (spend 5L/wk, saturation point 15L/wk, marginal contribution 8%)

Recommendation: shift 4L/wk from Display to YouTube next quarter.

Success criteria

You're done when you can:

  • Correctly flags every channel spending past its saturation point
  • Does not misread adstock decay as channel failure