PULSE//MMM

marketing-mix modeling in your browser — transparent math, no AI, nothing uploaded
standby
WHICH CHANNELS ACTUALLY DRIVE RESULTS? The Audit console judges ads inside one platform. This one looks across platforms: drop a weekly spend-per-channel history and it fits a mix model — carryover (adstock), diminishing returns, and a least-squares fit — then tells you each channel's measured ROI, what the next dollar earns, and where to shift budget.
01Data feed one row per week (or day) · one spend column per channel · one results column
DROP CSV HERE — or click to browse
Needs: a date column, a spend column per channel, and a results column (revenue or conversions). 6+ months of weekly data works best. Daily data is auto-aggregated to weeks.
▸ What the file should look like (and where to get it)

A wide table, e.g. week, meta_spend, google_spend, tv_spend, revenue — one row per period. Most teams build this in a spreadsheet in ten minutes: paste weekly spend totals from each ads manager (each platform's export from the Audit page works as a source) plus weekly revenue or conversions from your store/CRM. Save as CSV, drop it here. Columns that aren't spend (clicks, impressions) are auto-excluded — you can re-include anything below.

Model setup — auto-detected, adjust if needed
Which column holds the date of each row.
Only matters for slash dates — check this if your dates look wrong.
Revenue, conversions, orders, leads…
Revenue → ROI per channel. Conversions → cost per conversion per channel.
Channels in the model — click to include/exclude
02Model readout how well the model explains your results — check this before trusting the verdicts
— awaiting data feed — load the sample above to see what this looks like —
03Channel verdicts measured contribution, what the next dollar earns, and where to move budget
— awaiting data feed —
PULSE//MMM runs entirely in this page — adstock + saturation + ordinary least squares, computed in your browser. Open source (MIT): github.com/riz1k9/pulse-mmm