Buyer's checklist
TV media buying software: the checklist that separates two tools
Discount ladders, the budget-tier loop, prime splits, affinity direction, post-buy statuses — and the one demand that makes all of them verifiable.

TV media buying software turns a rating target and a negotiated discount structure into a budget a buyer can defend, then checks what aired against what was planned. Give two tools the same brief — same target group, channels, budget, flight — and you get two different plans back. The interface is almost never why. The difference lives in a handful of calculation decisions that vendors rarely put in writing.
Seven of them. How discounts compound. How the budget-to-discount loop converges, and which way it rounds. Whether the prime split is money or airtime. Which way the affinity division goes. Whether flight shapes are named or typed by hand. What "delivered" means in post-buy. And whether any of it survives a file you already trust. Twenty minutes on these beats three demos.
Each item below gives you the question, the arithmetic behind it, and the answer that should worry you.
1. Do the discount ladders multiply or add?
Ask: "I have a 20% sales house discount and a 10% agency discount. What is the combined rate?"
28%, not 30%. Sales house discounts apply sequentially — each one works on what the previous one left behind — so the combined rate is one minus the product of the remainders.
Two percentage points on one deal reads like rounding. Stack four or five lines — volume, commitment, seasonal, agency, off-prime — and additive math drifts far enough to change which plan wins a tender. A tool that adds discounts errs systematically, always in the direction that makes the plan look cheaper than it will be.
While the vendor has the calculator open, ask for the full chain:
Every one of those four factors is a place a vendor can quietly differ from you. Get each of them in writing.
2. Does the budget-to-discount loop converge, and which way?
Ask: "The discount tier depends on the budget I declare, and the declared budget depends on the discount. How do you resolve that?"
It is a real circular dependency, not a trick question. You declare a budget to the seller, that budget lands on a discount tier, the discount changes the cost of the same rating points, and the budget moves. Iteration is the only honest way out.
The interesting case is oscillation — one pass lands just above a threshold, the next just below. Someone has to make a policy call. We take the larger budget, because an under-quoted plan is the expensive kind of wrong: it wins internal approval and then fails at execution. Ask your vendor what their tie-break is. "It converges" is no answer. "It converges, and when it doesn't, here is which side we round to" is.
Confused just as often: the declared budget — the Shop List figure that sets your discount tier — and the executed budget are two separate money layers. A tool that keeps one number cannot reconcile the deal you negotiated with the deal you ran.
3. Is the prime split money or airtime?
Ask: "When I set off-prime at 40%, is that 40% of money or 40% of ratings?"
It should be money. Buyers negotiate in money, sellers quote in money, and off-prime inventory carries its own discount. The share of ratings that falls out of a 40% off-prime money split is derived — through affinity and the off-prime discount — and it is almost never 40%.
The second half of the question catches most people: the prime-time uplift field applies to the whole deal, not only the prime portion. If a tool exposes a "prime-time uplift" input and multiplies the entire CPP chain by it, typing 15% surcharges everything, off-prime included. Your prime seconds are not singled out. Legitimate modelling, as long as it is documented; a serious problem when the label implies otherwise and nobody checks. Ask which one you are getting, then ask to see it in an exported calculation.
4. Which way does the affinity division go?
Ask: "Show me the formula that converts target rating points to total rating points."
At affinity 200 — the target watches twice as densely as the general population — 100 target points correspond to 50 total points. The direction of the division is the whole game; backwards, it inflates or deflates deliverability by a factor of four at the extremes.
The common real-world error is subtler than the formula: numerator computed on the target, denominator on the total universe. The output looks plausible, survives eyeballing, and is wrong. Test it with a hand-built case where you already know the answer.
While you are there, check spot length weighting. A 30-second spot is the reference at coefficient 1.0; shorter spots weigh proportionally less. Treat a 15-second spot as a full rating point and every mixed-duration plan comes out inflated.
5. Flight shapes: templates, or 52 cells of manual typing?
Ask: "How do I express a front-loaded burst with a mid-campaign peak without typing weekly weights by hand?"
Hand-typed weekly weights are unauditable. Six months later nobody can tell whether week 7 was a decision or a typo. Named shapes are reviewable. We ship 17 flight templates (Flat, Front-Loaded, Mid-Peak, Crescendo and others) and 5 intensity levels from 0.5 to 1.7, so the shape of a campaign is a stated choice, not a spreadsheet artifact.
Ask what the shapes are grounded in. The literature is not exotic: Broadbent's adstock work puts FMCG decay around 2.5 weeks, Jones' STAS argues for the short-term effect of recency, and Binet and Field frame the long/short balance. A vendor who can name the reasoning behind their default shapes has done the work. Decorative shapes tell you nobody did.
One more check: are active months derived from actual delivered TRP, or from whatever the planner typed into a month selector? Those diverge, and the derived version is the honest one.
6. Post-buy: what does "it aired" actually mean?
Ask: "A spot aired. How does the system classify it against the plan?"
"Delivered" is a useless field. A spot can air on the right channel in the wrong week, in the right week in the wrong daypart, at the wrong length, or on a channel nobody planned. Each of those is a different conversation with the seller. Collapse them into one number and you end the conversation before it starts.
We assign every aired spot exactly one of 7 mutually exclusive compliance statuses:
- matched — the spot ran as planned
- out_of_flight — outside the campaign period
- unplanned_channel — a channel that was never in the plan
- out_of_week — right channel, wrong week
- out_of_daypart — right week, wrong daypart
- wrong_length — right slot, wrong duration
- no_lines — no plan line to match against
Mutual exclusivity is the part that matters. If a spot can be counted twice, your compliance rate is fiction.
Two plumbing questions belong here. Raw delivery files or text export? Text exports from measurement systems typically carry only an age band, 1 through 5. Industry breaks like 18–49 and 25–54 cannot be assembled from bands — a limit of the text export, not of the measurement itself. The raw delivery files (EVS/RDS/RSP) carry exact ages 4–65, so any break you need is available. Ask which your vendor reads.
And what happens when a corrected day arrives? Ingest should be idempotent by file hash: a repeated delivery is skipped, a corrected one deletes and replaces the prior rows. Anything else double-counts silently, and you find out during a tender.
7. Will they reproduce your file?
This is the item that makes the first six verifiable. Refuse the demo dataset. Hand the vendor an audience table you already trust and ask for it back, cell by cell.
Our own numbers, as calibration for what a real answer looks like:
Data side. An official audience table reproduced cell by cell: of 60,858 cells, all 21,548 non-zero ones matched within 0.5 persons — rounding to whole people is the measurement convention — across 17 of 17 demographic breaks.
Method. Multi-day aggregation weighted by universe, not an average of daily percentages; reach and frequency computed at individual level on a universe of 2,295,613 people.
We reproduce Nielsen's numbers. That is a claim about arithmetic you can check line by line, not an accreditation. The distinction is not modesty — it is what the evidence supports.
What belongs on the checklist as a limitation
A checklist that lists only strengths is marketing. Three things we tell buyers before they ask:
- CPP in our system is a proxy. There are no real negotiated prices in the underlying data, so nothing we produce should be read as actual cost, ROI, or money saved. It is a consistent unit for comparing plans, not a quote.
- Forecasting and autonomous planning are on the roadmap. Today the system computes, checks and reconciles; it does not predict next quarter for you.
- Audience data currently covers one market. The calculation layer is market-agnostic; the delivered data is not yet.
Where our products sit
TV Budgeting is the calculation side: two-directional TRP-to-budget and budget-to-TRP on one frozen core, with the discount, prime-split, affinity and duration mechanics above exposed instead of buried. TV Planner is the data side: raw measurement files, individual-level reach and frequency, spot-level post-buy with the 7 statuses, and frozen report snapshots shared with clients over a revocable link.
One design rule connects them: the system never substitutes defaults. A missing input fails with the name of the field. What you see is what was computed.
FAQ
Do sales house discounts really multiply rather than add?
Yes. Each discount applies to what remains after the previous one, so combined = 1 − Π(1 − r). A 20% and a 10% discount give 28%. Additive math overstates the discount every time, and the error grows with the number of discount lines.
If I set off-prime as a share of money, what share of ratings do I get?
Not the same number. The money share is converted into a rating share using the affinity of the off-prime inventory and the off-prime discount. Any tool that reports the two as identical is not modelling the split at all.
Can I get 18–49 or 25–54 breaks from a standard text export?
No. Text exports generally carry a coarse age band (1–5), and industry breaks cannot be rebuilt from bands. You need the raw delivery files with exact ages. This is a constraint of the export format, not of the measurement.
What is the fastest way to test a vendor's accuracy claim?
Give them a reference file you already trust and ask for a cell-by-cell comparison, including the zero cells. Ask for the tolerance in absolute terms — we quote 0.5 persons, matching the rounding convention — rather than a percentage that hides the tails.
Does a checklist like this apply to mature markets with established tooling?
Yes. None of these items are about market maturity. Discount compounding, the budget-discount loop, money-versus-ratings splits, affinity direction and post-buy status granularity are properties of the trading mechanics, and they behave identically wherever the mechanics are the same. What differs by market is how much is already automated, not whether it needs to be right.
Put these seven questions to your own reference file. That session beats a slide deck — TV Budgeting computes both directions on one frozen core, with every coefficient visible.
Request a demo →