Compass
Analyst Console
Posterior summary · Google Meridian · v1.x

Model output, in the way an analyst wants to see it.

Everything the executive page hides for clarity, surfaced here for the people who'll be QA-ing the model and answering follow-up questions. Response curves, ROI posteriors, contribution decomposition, adstock decays, fit diagnostics, and the optimizer's full output — all sourced from the same posterior.json the executive page consumes.

01 · RESPONSE CURVES

Per-channel response curves with current and optimal spend

For each channel, the saturation curve fit by Meridian. Solid where spend is below current, dashed where it's above. The dot marks current quarterly spend; the square marks the optimizer's recommended spend.
Below current spend Above current spend Current spend Optimal spend
02 · COMBINED VIEW

Response curves overlaid

All channels on one axis — useful for spotting which channels have the steepest mROI at current spend and where saturation cliffs sit. Convention matches the panel above: solid below current, dashed above.
Constructed from the posterior median Hill curve per channel, parameterized at quarterly scale: response(s) = β · sᵅ / (sᵅ + ec50ᵅ). Credible intervals are suppressed here for legibility — see the per-channel grid above for those.
03 · ROI POSTERIORS

Where each channel's ROI sits — and how confident we are

Posterior median (dot) with 90% credible interval (bar). A wide bar means the data didn't pin down ROI tightly — usually because the channel didn't vary enough during the training period.
90% credible intervals from n_keep × n_chains posterior draws. Channels with floor-hugging intervals (≥1.0×) are "data-confirmed productive"; channels whose intervals straddle 1.0× should be reallocated cautiously.
04 · CONTRIBUTION DECOMPOSITION

Where every dollar of pipeline actually came from

Posterior-mean decomposition of the past quarter's modeled pipeline created. Baseline is brand, organic, referral, and customer-expansion intent — pipeline you'd have generated with zero paid media.
Stacked shares sum to total modeled pipeline created. Each channel's contribution = posterior-mean incremental outcome attributable to that channel under the historical flighting pattern.
05 · HILL PARAMETERS

Saturation curve coefficients per channel

Posterior medians and 90% credible intervals for the three Hill parameters. Use these for sanity-checking against marketing intuition: high α = sharp inflection, low α = gradual; ec50 = the spend where you've hit half the channel's ceiling.
Channel α (steepness) ec50 (half-saturation, $) β (ceiling, $) Saturation @ current
06 · ADSTOCK DECAY

How long each channel's media keeps working

Geometric adstock decay weights over weeks since exposure. Weight at lag = 0 is always 1.0 (this week). Weight at lag = k is decay^k. Channels with longer memory (Field Events, Podcast) carry influence many weeks past the original touch — exactly what you'd expect in a B2B sales cycle.

Decay curves overlaid

Effective contribution by weeks since exposure

Posterior summaries

Decay coefficient and effective memory
ChannelDecayEffective memoryMax lag
Effective memory ≈ 1 / (1 − decay). A decay of 0.62 implies ~2.6 weeks of effective contribution per impression.
07 · MODEL FIT

Actual vs predicted KPI

Weekly observed pipeline created (points) against the posterior-mean prediction (line) with a 90% predictive band. Drift between actual and predicted near recent weeks may signal pacing or attribution changes worth investigating.
Reported R² and MAPE are computed on the in-sample fit; holdout_mape is the rolling forward-walk error. Convergence chips at the top (R̂, ESS) summarize MCMC reliability — R̂ < 1.05 and ESS > 200 across all parameters is the standard target.
08 · OPTIMIZATION DETAIL

Recommended reallocation, line-by-line

The full output of Meridian's BudgetOptimizer: per-channel current spend, optimal spend, and movement, with the constraints and objective that produced the result.
Objective
maximize_incremental_outcome
Total budget
Per-channel floor / ceiling
Projected lift
Channel Current Optimal Δ Δ % mROI today Verdict
09 · METHODOLOGY

What's under the hood

Model
Google Meridian (Bayesian hierarchical MMM). KPI is monetary: weekly pipeline value created (dollar value of new opportunities). One geo (national) in this prototype; production setups extend to N geos with hierarchical pooling on β across geos.
Saturation
Hill curve, applied after adstock: μ(s) = β · sᵅ / (sᵅ + ec50ᵅ). α controls inflection; ec50 controls scale.
Adstock
Geometric decay with max_lag = 26 weeks, tuned for B2B sales cycles. A LinkedIn ad seen in March can still influence a deal that closes in September. Effective spend at week t is Σₗ decay^l · spend[t−l].
Priors
β ~ LogNormal (weakly informative); α ~ Uniform[0.5, 4]; ec50 ~ Uniform across plausible spend range; decay ~ Beta(2,2). The full prior spec is in the source under pipeline/meridian_pipeline.py.
Sampler
NUTS, 4 chains × (500 adapt + 500 burn-in + 1000 keep). R̂ and ESS reported in the chips at the top.
Optimizer
meridian.analysis.optimizer.BudgetOptimizer with spend_constraint_lower=0.30 and spend_constraint_upper=2.50 (per-channel multiplicative bounds on current spend). Objective: maximize posterior-mean incremental outcome, fixed total budget.
Caveats
Out-of-sample reliability degrades when proposed allocations move outside the historical envelope. Treat ranges >2× current spend as extrapolations. Reach & frequency mechanics are not modeled in this demo (spend-only); enable them by switching media from spend to impressions in the loader and adding reach/frequency coords.