Media-Mix Model and Incrementality Honesty Gate Automation: A Coefficient Can't Speak Without Its Fit

Why a media-mix model needs a referee, not just an output
A media-mix regression always produces coefficients — that is what regression does, regardless of whether the data behind it actually supports a conclusion. The dangerous version of this is a model trained on one channel, or on a handful of noisy weeks, that still confidently reports "Instagram drives 100% of results," because with one input variable a regression has no choice but to attribute the entire outcome to it. Nothing about the math itself signals that this is an artifact of the input, not a discovery about the business — that has to be checked separately, by a rule that knows what a trustworthy model looks like.
How the underlying problem shows up before you fix it
A dashboard reports a channel's "contribution to revenue" from a model with a barely-better-than-random r², with no visible caveat about the fit.
A one-channel model reports that channel driving 100% of results, and the number is read as a finding rather than what it actually is: unavoidable arithmetic given only one input.
A model trained on too few weeks of data is treated with the same confidence as one trained on a full year, because nothing surfaces the observation count next to the coefficient.
An incrementality test that hasn't collected enough data yet gets summarized as "no measurable lift," when the honest state is "not enough evidence yet" — a materially different claim.
A significance threshold gets applied inconsistently across different reports, so the same underlying result is called "significant" in one place and not in another.
Why "just show the coefficient" invites the exact mistake it should prevent
A coefficient by itself is an answer with no context attached — it doesn't say how much data trained it, how well the model actually fits reality, or whether that fit even had enough channels present to attribute anything meaningfully. A single-channel model is the sharpest version of this: mathematically, a model with one input variable has to attribute 100% of whatever variation it explains to that one variable, so "100% contribution" from such a model is not a signal about the business — it is a property of having asked a one-variable question. Treating that number as a budget recommendation converts an artifact of the setup into decision-grade evidence it never earned.
How Centriu Dash decides whether a model gets to speak, and how it handles a missing p-value
Every media-mix model trained on an organization's data is evaluated against four fixed thresholds before it is allowed to carry a "usable" label: r² of at least 0.5 (the model actually explains a meaningful share of the outcome's variation), a MAPE of 30% or less (predictions are close enough to be worth acting on), at least 60 observations (enough data points to have trained on), and at least 30 days with an actual measured outcome (enough of the window had something to explain in the first place). A model failing any one of these does not get partially trusted — `usable` is a single boolean, and the function that computes it collects every failed threshold into a plain-language reasons list rather than stopping at the first failure, specifically so a report can say ALL the reasons a model isn't ready, not just one.
On top of the four thresholds sits a fifth, structural check aimed specifically at the single-channel trap: a model trained on exactly one channel showing that channel at or near 100% contribution is flagged with its own distinct message — "single-channel model: a 100% contribution here is arithmetic, not discovery" — a wording chosen specifically to stop that number from being read as a finding. The file's own governing comment cites the real, current example this rule is built to catch: as of this reading, the one MMM model actually trained in this database explains 8% of variation (r²=0.08), errs by an average of 102.9% (MAPE), and is recorded with `supports_budget_simulation: false` — exactly the kind of model this gate is designed to intercept before its number reaches a budget conversation.
When a model fails the gate, the interface shows a "does not decide budget" badge instead of "utilizável," with the specific list of reasons rendered in plain language next to it — phrased deliberately to be readable out loud in a meeting, not as an error code. The coefficients themselves are not hidden; they remain visible for inspection, because a rejected model can still be useful context for someone who understands its limitations — it is simply barred from being cited as if it had passed.
Incrementality experiments get the same discipline applied to statistical significance: at a fixed α of 0.05, a result is significant only if its p-value is below that threshold. When a p-value hasn't been computed yet — because an experiment hasn't run long enough to produce one — the significance field renders as `null`, not `false`, and the code's own comment states the reasoning directly: a missing p-value means "not yet measured," which is a different claim from "no effect was found," and collapsing the two into a single "not significant" result would misrepresent an experiment that simply isn't finished as one that already failed.
What is actually built today
Four fixed usability thresholds applied together: r² ≥ 0.5, MAPE ≤ 30%, observations ≥ 60, days-with-outcome ≥ 30 — a model needs all four, not any one.
Every failed threshold collected into a plain-language reasons list, rather than stopping at the first failure — so a report can name every gap at once.
A dedicated single-channel check that names a one-channel model's "100% contribution" as arithmetic rather than a finding, with its own distinct message.
A "does not decide budget" badge shown in place of "usable" for a failing model, with coefficients still visible for inspection only.
A fixed α = 0.05 significance threshold for incrementality experiments, applied consistently rather than varying by report.
A missing p-value rendering as `null` ("not yet measured"), explicitly distinct in the code from `false` ("no effect found").
A one-channel model that would have said "100%" (illustrative scenario, not a real client)
A team wants to know how much of their revenue comes from paid social, and trains a media-mix model using only that one channel's spend as an input. The regression, correctly following the math, attributes essentially all of the modeled variation to that single channel — a 100% figure that would look decisive on a slide. The single-channel check catches this specifically, labeling the result an arithmetic artifact of a one-variable model rather than evidence that paid social drives all revenue, and the badge reads "does not decide budget" rather than presenting the number as a real finding.
What changes operationally
A marketing lead can no longer accidentally cite a barely-fitted or single-channel model's coefficient as if it were a validated insight — the gate names the specific reason it isn't ready, out loud, before the conversation gets that far. And an incrementality test that simply hasn't finished collecting data reads as exactly that — "not yet measured" — rather than being quietly reported as proof that a channel had no effect, which protects a genuinely promising channel from being cut based on an unfinished experiment.
When this is not the right fit
A team wanting a model to always produce a confident, actionable contribution number will find the opposite here by design — a model that doesn't clear the four thresholds is explicitly barred from making a budget recommendation, whatever coefficient it produced. A team wanting the significance threshold configurable per report will find one fixed α value applied everywhere instead, specifically so the same underlying result can't be called significant in one place and not in another.
A dashboard that trusts every coefficient vs. a gate that checks the fit first
Publishing every media-mix coefficient a regression produces, with no check on how well the model actually fits or how much data trained it, treats "the math ran" as equivalent to "the finding is real" — a gap a single-channel model exposes immediately, since it mathematically has no choice but to attribute everything to its one input. Centriu Dash instead requires a model to clear four independent, named thresholds before its number is allowed to inform a budget decision, names the single-channel arithmetic trap explicitly rather than let it pass as insight, and keeps a missing p-value from ever being read as proof of nothing happening.
Related systems
Main system: Centriu Dash.
What it does NOT do
- Does not mark a model "usable" on partial credit — all four thresholds (r², MAPE, observation count, days with outcome) must pass together, or the model is barred from deciding budget.
- Does not present a single-channel model's "100% contribution" as a finding — a dedicated check names it as arithmetic specific to having only one input variable.
- Does not hide a failing model's coefficients — they stay visible for inspection, only barred from being cited as a validated budget recommendation.
- Does not report a missing p-value as "no effect" — it renders as `null` ("not yet measured"), explicitly distinct in the code from `false`.
- Does not vary the significance threshold by report — α is fixed at 0.05 and applied the same way everywhere incrementality is evaluated.
- Does not stop at the first failed threshold when explaining why a model isn't usable — every failed check is collected into the reasons list shown to the viewer.
Security and governance
Model and experiment data are scoped to the requesting organization through the same authenticated session or hashed MCP key as every other Dash screen and tool. Any personal data referenced in underlying campaign or customer records remains subject to Brazil's LGPD (Law No. 13,709/2018). Full detail on access control lives at /governanca and /iso.
Pricing and contracting
Available by monthly subscription, with tiered plans. Values and terms come from the official pricing table at /precos (Centriu's central source — never restated here).
Frequently asked questions
What makes a media-mix model "usable" in Centriu Dash?
Clearing four fixed thresholds together: r² of at least 0.5, MAPE of 30% or less, at least 60 observations, and at least 30 days with a measured outcome.
Why does a single-channel model get flagged even if its fit looks fine?
A one-input model mathematically has to attribute all of the variation it explains to that one channel — a dedicated check names that "100% contribution" as arithmetic, not a real finding.
What happens to the coefficients of a model that fails the gate?
They stay visible for inspection, but the model is marked "does not decide budget" instead of "usable," with the specific failed thresholds listed in plain language.
What does it mean when an incrementality experiment shows significance as unknown rather than "not significant"?
It means no p-value has been computed yet — the field renders `null` ("not yet measured"), which the code deliberately keeps distinct from `false` ("no effect found").
What significance threshold does Dash use for incrementality experiments?
A fixed α of 0.05, applied consistently rather than varying by report.
What does Centriu Dash cost?
It is sold by subscription with a published starting price — exact current values are on the central pricing page.
See how Centriu Dash gates media-mix models before they can decide budget
Reach our commercial team directly, or leave your details below — we'll follow up with guidance for your case.