Most marketing measurement fails before any modelling happens. The data arrives from four platforms that each name things differently, metrics get summed that cannot be summed, and a join quietly duplicates half the revenue. Nexus validates before it models, and shows you what it found rather than passing it through.
What happens on arrival
File validation. Uploads are checked by content, not by extension. A file claiming to be a spreadsheet is verified against the actual byte signature of one, and executables, scripts and documents are rejected whatever they are named. Parsing is bounded, so a crafted file cannot consume the server before the row limits apply.
Column mapping. Column names are normalised and mapped to the metrics Nexus understands. Platforms disagree about almost everything — what a conversion is called, whether cost is spend or cost, whether a date is a date — and the mapping is reviewable rather than guessed at silently.
Vocabulary resolution. Prospecting, prospecting_us and PROSPECTING | US are the same tactic. Nexus maps the surface forms your team actually types to a shared vocabulary, so a cut by tactic reflects strategy rather than spelling. Without this, every dimensional breakdown fragments into near-duplicate rows and nothing aggregates.
Joins are proposed, not assumed
When two sources need joining, Nexus proposes the join and shows you what it is matching on before it runs.
This is the step that silently destroys more marketing analysis than any other. A join on a key that is not unique duplicates rows, which inflates revenue, which inflates ROAS, which produces a channel that looks like it is printing money. The numbers remain internally consistent throughout, so nothing looks wrong — the dashboard is confident and incorrect, and nobody finds out until someone reconciles against the platform.
Proposing the join puts a human in front of the decision while it can still be questioned.
Metrics that cannot be summed
Not every number adds up, and treating all of them as additive is a correctness bug rather than an approximation.
Reach is the clearest case. Two ad sets reaching 10,000 people each have not reached 20,000 people — the overlap is unknown and often large. Nexus keeps reach at the level where it is meaningful and does not roll it up to a total that implies a unique audience it cannot verify.
Frequency inherits the same problem, being impressions over reach.
Derived ratios — ROAS, CPA, CTR, CVR — are recomputed from summed components rather than averaged. The average of two ROAS figures is not the ROAS of the combined spend, and averaging them weights a £500 ad set equally with a £50,000 one.
This is also why creative fatigue is measured at ad level. The question is whether a specific piece of creative has worn out with the audience seeing it, which has no meaning once several ads are added together.
Validation before modelling
Before a model runs, Nexus tests whether the data can support one.
Multicollinearity (VIF). When channels move together, a model cannot separate their effects. Variance inflation factors quantify how badly, and a high VIF means the attribution that follows will be unstable regardless of how good the model is.
Channel co-movement. Where two channels' spend is near-identical over the period, any split between them is a modelling assumption rather than a finding. Nexus flags the pair and says so.
Statistical tests on the series. Stationarity and distributional properties, which determine whether the modelling assumptions hold at all.
These results are shown with an explanation of what they mean for the conclusions, not buried as diagnostics for someone else to interpret.
Thin data is marked, not ranked
Groups below a conversion threshold appear in tables but are never ranked on, and are visually marked as excluded.
A cost per acquisition computed from six conversions will top any table and mean nothing. The ad that looks like a winner because it barely ran is the most expensive mistake a creative panel can cause — it gets scaled, and the apparent performance evaporates because it was noise.
Showing these rows while excluding them from the ranking is deliberate. Hiding them makes the table look cleaner and leaves the reader unable to see that a cut has very little data behind it.
Why this is the foundation rather than a feature
Every number downstream inherits these decisions. A marketing mix model fit on double-counted revenue returns a precise, reproducible, well-converged answer to the wrong question. An incrementality test measured against a corrupted baseline produces a confident verdict about nothing.
The validation layer is not a preliminary step before the interesting work. It is what makes the interesting work mean anything, and it is where most of the engineering in Nexus has gone.