Buyer's checklist

Media buying software for small agencies: what matters, and what does not

Small teams need the same mathematical accuracy as large ones. What they can skip is the infrastructure built to coordinate dozens of markets, entities, and approval layers.

August 4, 2026 · 7 min read

Media Buying Software for Small Agencies: What Matters

The short answer is four capabilities: a reversible calculation core, full-resolution measurement data, plan-versus-air reconciliation, and a frozen report a client can open. Enterprise suites add multi-market entitlements, finance integrations across many legal entities, approval hierarchies, role matrices, and procurement audit trails. Those solve scale. They do not make arithmetic more correct.

You can test the arithmetic in an afternoon. That matters because an error of roughly 3% does not stay inside the software; it lands in a pitch, a booking, or a post-buy.

1. Start with a calculation you can prove

Seller discounts multiply. A 20% volume discount followed by a 10% commitment discount is:

Combined discount = 1 − Π(1 − rᵢ)
1 − (0.80 × 0.90) = 28%, not 30%
At a budget of 100,000 and proxy base CPP30 of 100:
Added discounts: CPP 100 × 0.70 = 70 → 1,428.6 TRP.
Multiplied discounts: CPP 100 × 0.72 = 72 → 1,388.9 TRP.
The gap is 39.7 TRP, about 2.8% of delivered volume.

That is not a rounding issue. The second discount applies to the balance left by the first, so adding both grants a discount twice on the same portion.

Effective CPP = base_cpp30 × (1 + seasonality) × (1 − combined discount) × (1 + uplift)

Ask to see the four multipliers with values in them. A single “net CPP” field prevents an audit. CPP is a planning proxy, not real transaction price data; it cannot substantiate actual spending, savings, or ROI.

Proof should also have a reference and a tolerance. Our core has under 0.01% parity against an agency reference model. Roughly 750 backend and 2,100 frontend tests—close to 2,850 checks—stop formula drift between releases. “Industry-standard math” without a reproducible comparison is not evidence.

2. One core must work in both directions

A buyer hears both questions: “We have 90,000; what will it deliver?” and “We need 1,200 TRP; what budget does that imply?” Those are inverse runs through the same core, not separate models.

The budget-to-discount relationship is circular. A larger declared budget unlocks a tier; that tier lowers the CPP; the lower CPP changes the budget. The engine must iterate until budget and tier agree. If the result oscillates between adjacent tiers, taking the larger budget is the conservative buyer-side rule: it avoids reserving less than the committed tier may require.

3. Inspect the fields that rescale the deal

Prime-time uplift typically applies to the entire deal, not only prime inventory. Entering 15% while assuming it touches one-third of the spots reprices more than expected. The agreement decides; the interface must expose the application point.

Off-prime starts as a money share. A 40% input describes budget, not spots or ratings. It becomes a rating share only after the engine applies the separate off-prime discount and daypart affinity.

Affinity bridges target and total ratings: wGRP = wTRP ÷ (affinity / 100). At affinity 200, 400 wTRP becomes 200 wGRP. Duration also changes weight: 30 seconds is 1.0; shorter spots carry lower seller-supplied coefficients.

4. Flighting should reduce labor, not judgment

A year contains 52 weekly cells, but the strategic choice is a shape and an intensity. A library of 17 templates—including Flat, Front-Loaded, Mid-Peak, and Crescendo—crossed with 5 intensity levels from 0.5 to 1.7 expresses the plan in two decisions while keeping it defensible.

The shapes are not decoration. Broadbent's adstock work places FMCG decay around 2.5 weeks, so a four-week gap is not simply half as effective as a two-week gap. Jones's STAS gives disproportionate weight to the exposure closest to purchase. Binet & Field explain why long-term budget is not idle money. The software should structure those choices without pretending to make them autonomously.

5. Raw audience data and text exports are not equivalent

Raw panel delivery files carry exact respondent ages from 4 to 65. A text export carries age bands numbered 1 to 5. You cannot reconstruct standard 18–49 or 25–54 audiences from those bands. That is a limitation of the export, not the measurement provider.

Our accuracy check reproduces an official audience table at cell level: of 60,858 cells, all 21,548 non-zero cells match within 0.5 of a person, the tolerance created by publication to whole people, across 17 of 17 demographic cuts. The careful wording is “we reproduce the measurement provider's numbers,” not a claim of certification.

6. “It aired” is not a post-buy finding

Even a five-person team needs spot-level reconciliation. Each aired spot should receive exactly one mutually exclusive status. We use seven: matched, out_of_flight, unplanned_channel, out_of_week, out_of_daypart, wrong_length, no_lines.

Exclusivity makes the result actionable. “87% matched, 6% wrong_length, 4% out_of_daypart” describes a discussion with the seller. “Mostly delivered” does not.

What a small agency can skip

You may not need multi-market entitlement models, SSO with 40-role permission matrices, ERP and billing integrations, currency operations across a dozen entities, or a six-month onboarding program. Those are legitimate scale features, not accuracy features.

Be equally cautious with autonomous AI planning. Forecasting and autonomous optimization are roadmap work for us, not shipping capabilities. Any vendor presenting them as live should be able to run them on your data now.

Also reject silent defaults. If a required input is missing, the calculation should stop and name it. Active months should come from actual delivered TRP, not from a manually selected month box. TV Budgeting follows that rule while keeping the two-way CPP chain visible. Current raw-panel coverage is one market, Moldova.

A five-point live-demo test

  1. Enter 20% and 10% discounts. If the result is 30%, stop.
  2. Ask whether prime-time uplift touches prime only or the whole deal.
  3. Build 25–54. If the answer relies on age bands, the source is a text export.
  4. Delete a required input. The tool should fail loudly and name the missing field.
  5. Request the post-buy taxonomy. Count its statuses and confirm they cannot overlap.

The five checks take under an hour in a live demo. A complete parallel run—your last campaign planned and post-buy analyzed in the current process and the candidate tool—takes a day and reveals more than an RFP.

FAQ

Is a spreadsheet enough for a small agency?

It can calculate the same math. The real test is whether that math is centralized, version-controlled, auditable, and reproducible by more than one person.

Do we need raw measurement files?

Not for every channel total, but yes for exact demographic breaks such as 18–49 and 25–54, individual-level reach and frequency, and defensible post-buy work.

Does a cheaper tool imply weaker math?

No. Price often reflects scale infrastructure and services. Multiplicative discounts, inverse calculation, and individual-level audience analysis are engineering choices, not luxury tiers.

How long should an evaluation take?

The five live checks take under an hour. A parallel run on a completed campaign takes about a day.

What about forecasting and automated optimization?

Treat each claim as a request for a live run on your data. In our case those capabilities remain roadmap items.

Try it on your plan

This is exactly the maths TV Budgeting runs for you — both directions, TRP → budget and budget → TRP, with discount tiers resolved by iteration.

Request a demo →