CTV & streaming TV
The one channel where a job title survives the translation almost intact.
3 bands, 85 down to 60
Three discrete values rather than a sliding scale. Which one your plan carries depends on what the brief gives the compiler to work with, and the rationale printed on the plan is the one printed here.
Person/household-level via consent-chained marketplace segments (Bombora/D&B).
At least one marketplace segment matches the persona strongly.
Marketplace segments matched at low confidence only; graded household-level pending review.
Segments matched, but weakly. The plan is flagged for human review rather than promoted.
No marketplace segment matched; falling back to geo-city household targeting.
Nothing in the catalogue matched the persona's terms.
Naming a city the UK geography table cannot map costs 15 points here as it does everywhere else, and the rationale on the plan names the city rather than dropping it quietly. That penalty applies on top of the bands above.
What your audience actually becomes here
Each row is a table the compiler matches your persona against, with the provider behind it and the basis the lawful-basis manifest records. The language model extracts the semantics from your brief; these deterministic tables emit the identifiers, which is why a hallucinated segment cannot reach a buy.
Examples are drawn from the sandbox-scale slices of each taxonomy the platform ships with. The full exports load into the same shapes, so catalogue size does not change the compiler behaviour or the fidelity grade. Nothing here has yet run against a full production catalogue, because nothing has run live.
From one sentence to a CTV targeting spec
The persona's semantic core is matched against the marketplace catalogue by keyword, and the top four detailed matches become segment ids on the targeting spec. Match confidence is consumed by the fidelity grade rather than ignored: a person-level grade requires at least one strong match and never a lone low-confidence hit. Geography resolves to city and, where the persona names cities the UK geo table does not map, the score is penalised and the rationale says which ones. Age and gender bounds are carried only where the persona actually states them, because defaulting an absent bound to the full range turns "unspecified" into a positive claim you never made.
The model never emits a vendor segment id. It extracts semantics from your brief — what kind of person, what interests, what geography, what intent — and deterministic registry code matches those against catalogue keywords to produce known identifiers. That is what makes a compiled plan auditable line by line, and what stops a hallucinated segment reaching a buy.
The fastest way to see this is a real brief compiled live in the session rather than a worked example.
Talk it throughThe rails that reach this channel
5 of the 25 connectors the platform registers touch CTV. Each one is graded on our own evidence ledger, which is deliberately blunt: a mocked HTTP test proves a client was written, not that a vendor accepted the request, spent money, or returned real delivery.
StackAdaptBuying API
Client builtProgrammatic CTV, audio and DOOH through one GraphQL seat. The broadest single rail here.
- What has to happen next
- A contracted seat, then a controlled paid activation reconciled to a StackAdapt invoice.
- Getting access
- Live inventory browse is not available: the client deliberately reports that StackAdapt has no public inventory-browse API, so catalogues shown in the sandbox are sandbox catalogues.
Amazon AdsBuying API
Client builtAmazon DSP sub-seat for CTV and audio, with refresh-token rotation held under a single-writer lock.
- What has to happen next
- A live test buy and a reconciled report.
- Getting access
- Requires a DSP sub-seat obtained through an authorised reseller. Not an open developer signup.
RokuBuying API
Client builtRoku CTV. Reporting only.
- What has to happen next
- Roku documents campaign and ad-group writes and creative operations as future functionality, so activation, pause, creative submission, forecast and audience sync all fail closed before any request. Only report pulls are implemented.
- Getting access
- Self-service Ads Manager accounts, not credential-free multi-tenant supply.
VibeBuying API
Contract testedPerformance CTV in the United States. The only rail with any live vendor evidence at all.
- What has to happen next
- Contract-tested covers the header and the inventory read only — OAuth, advertiser discovery and a 549-unit catalogue read, on 13 August 2026. Activation, pause, creative and reporting are all still client-built, forecast is sandbox, and the report download payload is undocumented. Its own gate reads: execute one controlled test buy and verify the asynchronous report payload end to end.
- Getting access
- US inventory in USD only. The adapter refuses a non-USD budget outright, and this rail is deferred from the UK queue until that changes. The 549 units are US units and are not UK reach.
European Unified IDAudience data
StubA consent-chained identifier for addressing first-party lists without a cookie.
- What has to happen next
- An operator agreement. The adapter makes no vendor call, and the CTV compiler emits an empty EUID audience list — no compiled plan carries an EUID today.
Named on this channel's compiled plans: StackAdapt · Amazon Ads (DSP sub-seat) · Roku · Vibe (US). Across all 25 connectors, spend-tested stands at 0 and report-verified at 0, and a continuous-integration check keeps those two counts honest.
The whole supply matrix →What CTV will take
Formats and the limits the product enforces on this channel. Where a limit is a schema constraint, over-long copy fails at the edge rather than being silently truncated on the way to a provider.
VAST video
16:9 ProRes 422 HQ mezzanine, 1920×1080, 25fps for the UK, ≥20Mbps. Platforms transcode down.
Storyboard
Generated with VAST metadata attached, so the creative and its trafficking record are one object.
Supers and loudness
Supers inside 90% title-safe; audio to EBU R128.
Asset production is charged separately and never blended into the media fee. The creative studio, in full
What CTV can prove, and what it cannot
Delivery is provider-reported. Response is observed through your own analytics against the campaign's immutable UTM key. Causation needs a powered geo-lift test, and CTV can carry one where the buy is city-level rather than national. The exposure ledger — the thing that would let CTV deduplicate against DOOH and show a sequential journey — is designed, schema-backed and unit-tested, and is currently written to only by the sandbox: a live report proves aggregate delivery, not household exposure, so nothing mints household identities from live data.
Provider delivery, observed response, modelled estimates and powered causal evidence stay visibly separate on the report rather than being averaged into one number, and the geo-lift engine returns an underpowered verdict instead of a lift figure when the spend cannot carry the test. The four verbs, in full
Your own site's analytics, read through your token, so brand response is measured on data you already own and can audit.
GA4 as an alternative brand-response source where that is what the advertiser already runs.
Podcast attribution: pixel and promo-code response against audio delivery.
Brand-lift survey panels, intended for the fourth measurement verb.
What this will not pretend past.
Every one of the seven channel pages carries one of these, in the same type. The best this channel scores is 85, graded person-level, and the paragraph beside this is what that score does not cover.
Person-level here means the segment provider asserts a consent chain, not that AdBuyMCP has verified every link in it. The segments carry a data CPM uplift — roughly £2.50 per thousand on Bombora, £3.00 on D&B — which is real money and appears in the plan rather than being absorbed. And an 85 is still not a match on a named individual: it is the best available projection of one.
If that limit is disqualifying for your budget, we would rather you heard it in the session than after the invoice.
Talk it throughThe same audience, compiled everywhere else
One audience definition, seven translations, seven published scores. A plan that funds two or three of these with enough weight to prove something beats one that puts a token line on all seven.
Paid search
One search plan. Two execution rails. Neither of them writes your keywords for you.
3 bandsPodcast & digital audio
You are not buying a person here. You are buying what they listen to.
fixed bandPaid social
Vendor-neutral until the moment of execution, then exactly as native as it needs to be.
3 bandsAddressable & linear TV
The fastest-growing channel on this list, and the one that needs the most paperwork.
fixed bandDigital out-of-home
A billboard cannot know who you are. It can know who walks past it.
fixed bandCinema
The lowest fidelity score on the site.
fixed bandSee what your audience compiles to on CTV.
Forty-five minutes. Bring a real audience and we compile it live on CTV and the other six, with the score and the lawful-basis manifest on screen.
Book a working sessionDesign-partner phase · the sandbox needs no card and no credentials · nothing here sells self-serve media
CTV questions
Can I target specific job titles on CTV?
Not directly, and nobody can. What you can do is buy consent-chained B2B segments that are built from job-title and intent data — Bombora Company Surge, D&B IT decision makers — and have them delivered against streaming households. AdBuyMCP grades that person-level and scores it 85 out of 100 when the match is strong, which is the honest description of a very good proxy rather than of an exact match.
What happens if my audience matches nothing?
The plan still compiles, at 60 out of 100, on geo-city household targeting, and the fidelity rationale says exactly that: no marketplace segment matched. We do not silently substitute a broader segment and present it as your audience. If 60 is not good enough for the money involved, that is a decision you get to make before you spend it.