Audit guide

Media planning accuracy: how to prove a tool computes what it claims

Three tests a media director can run in an afternoon — against our engine, an incumbent platform, or the spreadsheet the team already trusts.

By the Tilsim team · · 7 min read

How to Prove a Media Planning Tool Is Accurate

Media planning accuracy is reproducibility. A tool is accurate when two independent computations of the same plan return the same number, and when you can measure any gap between them instead of arguing about it. That is the whole definition, and you can test it in an afternoon. Everything below follows: three tests to run against any media planning software, plus the conventions where TV math drifts.

Market maturity has nothing to do with it. Markets with long-established currency panels and well-drilled agency processes fail the same way as markets still building measurement infrastructure: a number off by a rounding rule or a discount convention survives review because nobody has a second computation to check it against. The test closes that gap everywhere.

Test 1: does it match a reference computation?

Take a plan your team has already agreed on — signed off, sent to the sales house, argued over internally. Feed the tool the same inputs: target rating points, CPP base, seasonality, discount ladder, prime share, spot lengths, flight shape. Measure the difference between its output and the reference as a percentage.

That percentage is your accuracy number — not "it looked right in the demo."

For TV Budgeting the number is below 0.01% against an agency's reference Excel model, the file that market had been closing deals with. We checked both directions on the same frozen core: TRP into budget, budget into TRP. Direction matters more than people expect. A tool that computes one way and inverts numerically accumulates error in the inversion. Same core, both directions, one answer.

Ask any vendor for their number and the reference behind it. "We're accurate" is not an answer. "0.4% versus your own model, here is the cell-by-cell diff" is.

Test 2: is the computation frozen?

A parity result is a photograph. The question is whether it still holds after the next release.

Ours holds because roughly 750 backend tests and roughly 2,100 frontend tests — close to 3,000 in total — are pinned to the computational core. They exist to make it impossible to ship a change that quietly moves a budget number by 0.3%. Catching crashes is incidental. If a refactor alters an output, the suite fails and the release stops.

The practical question for a vendor: what happens to my agreed plan when you deploy on Thursday? If the answer contains the word "shouldn't," ask how it is enforced.

Test 3: what does it do with a missing input?

This is the fastest test and the most revealing. Leave a required field empty and submit.

Most tools substitute a default — the most dangerous behavior in planning software, because a substituted default produces a number that looks exactly like a computed one. Nobody spots the difference, and the assumption rides all the way into a tender.

Our system refuses. If a value is absent, the computation fails and names the field. What you see is what was computed; nothing was filled in on your behalf. Active months come from delivered TRP, not from whatever the planner typed into a month selector, so the calendar shows the plan that exists.

Where does TV math actually drift?

Parity failures cluster in a handful of conventions. Check these lines one by one, in any tool.

The plan's shape deserves the same discipline. Free-typing 52 weeks invites a habit inherited from last year's plan, so we offer 17 flight templates (Flat, Front-Loaded, Mid-Peak, Crescendo) and 5 intensity levels from 0.5 to 1.7, each with the research behind it: Broadbent's adstock decay of roughly 2.5 weeks for FMCG, Jones's STAS work, and Binet & Field.

Accuracy on the data side

Computation is half of it. If the audience numbers going in are approximate, parity on the arithmetic buys you nothing.

TV Planner reads Nielsen's raw delivery files — the binary EVS/RDS/RSP set — and skips the text export. Granularity is why: the export carries an age band of 1–5, the source exact ages from 4 to 65. Industry breaks like 18–49 and 25–54 cannot be assembled from bands. That ceiling belongs to the text export, not to Nielsen's data.

Our proof is a cell-by-cell reproduction of an official audience table: of 60,858 cells, all 21,548 non-zero cells matched within 0.5 of a person (Nielsen rounds to whole people), across 17 of 17 demographic breaks. We reproduce Nielsen's published numbers. That is the whole claim — reproduction of the source, and nothing beyond it.

Conventions matter here too. Multi-day aggregation is universe-weighted, never an arithmetic mean of daily percentages. Reach and frequency are computed at the individual level against a universe of 2,295,613 people. File intake is idempotent by SHA-256: a re-sent delivery is skipped, a corrected delivery deletes and replaces the old rows, so a revised day never becomes a silent duplicate.

Post-buy runs at spot level. Every aired spot receives exactly one of seven mutually exclusive statuses against the plan — matched, out_of_flight, unplanned_channel, out_of_week, out_of_daypart, wrong_length, no_lines — which turns "it aired" into something you can defend in a client meeting.

Two honest limits. Our CPP is a planning proxy: the data contains no real prices, so we claim no cost savings or ROI as a product outcome. And autonomous forecasting is on the roadmap, not in the product today. Audience data currently covers one market, Moldova.

Run Test 1 on your own plan

Bring a plan your team has already agreed on and we will put the same inputs through the core while you watch. The output lands within 0.01% of yours or it does not. Either way you leave knowing something you did not know this morning.

FAQ

What does "media planning accuracy" actually mean?

That the same inputs produce the same outputs across independent computations, and that any deviation from an agreed reference is measurable. Below 0.01% against a named reference model is a claim you can verify; "accurate" on its own is not.

What happens to my agreed plan when a vendor deploys a release?

It depends entirely on whether parity is enforced by tests. Ours is pinned by roughly 750 backend and 2,100 frontend tests, so a refactor that shifts an output by 0.3% fails the suite and stops the release.

Why should a tool refuse a missing input instead of substituting a default?

Because a substituted default looks identical to a computed value. The plan carries an assumption nobody chose, straight into a tender. Failing with the field name costs ninety seconds and prevents that.

Why read Nielsen's raw delivery files instead of the standard export?

The text export carries a 1–5 age band; the raw delivery carries exact ages 4–65. Breaks like 18–49 and 25–54 cannot be reconstructed from bands, so any tool built on the export inherits that ceiling.

Does this only matter in markets with less mature planning processes?

No. Mature markets run more plans through more hands, which means more places for a convention mismatch to survive unnoticed. A reproducibility test is cheap everywhere and worth most where volume is highest.

Bring your reference plan

Test 1 works best on a plan you have already reconciled. TV Budgeting will run the same inputs through its core while you watch, in both directions, and show you the difference cell by cell.

Request a demo →