Buyer briefs and get_products request shape
This supplement prepares buyer-side implementers to turn a human campaign request into a preciseget_products call.
The goal is not to make the brief verbose. The goal is to put intent in the brief and hard constraints in typed fields so the seller can curate inventory without guessing which parts are negotiable.
This module teaches the AdCP 3.2 targeting-aware discovery contract. Use it
against sellers and SDKs that declare 3.2 support. The public training-agent lab
will enable these calls after the 3.2 beta SDK release; implementation is
tracked in issue #6199.
Mental model
What goes in the brief
Use the brief for context that a seller or curator needs to make judgment calls:- campaign objective: awareness, consideration, qualified traffic, store visits, conversion, renewal
- audience description in human terms
- product, offer, seasonal context, or creative direction
- must-understand sensitivities such as family suitability or competitive adjacency
- success language that is not a metric filter, such as “favor trusted editorial environments”
What goes in filters
Use filters when a product that fails the condition should not come back. That exclusion rule is identical inbrief, wholesale, and refine; the
mode changes how the seller curates and versions the result, not whether a
valid filter applies.
Good filter candidates:
- required channels or formats
- required measurement or reporting capabilities
- pricing currency constraints
- budget ranges
- fixed-price requirements
- product categories for wholesale/catalog use
filters.channels.
What goes in targeting
Usetargeting_overlay for exact delivery constraints the buyer knows now:
required_overlay_support when the dimension is mandatory but its values
will be chosen later:
targeting_resolution.brief_targeting; inspect it before purchase. Also inspect sparse
targeting_resolution.modifications; selecting that configured product_id
accepts the disclosed differences.
Brief vs. refine
Usebuying_mode: "refine" when the buyer is reacting to a previous discovery response. A refine request should point at what changed: remove a product, adjust budget, request more premium placements, narrow geography, or ask for alternatives.
Do not send a totally new campaign in refine; start a new brief request instead.
Implementation checklist
- Read
get_adcp_capabilities.adcp.supported_versions, pin a compatible 3.2 release inadcp_version, and validate the echoed served release before using targeting-aware discovery. - If release precision is absent, major-only, or 3.1-or-earlier, omit the 3.2 fields and fall back to retained legacy targeting filters or explicit brief prose; unknown fields may otherwise be silently ignored.
- Normalize the human request into intent, hard constraints, and follow-up changes before calling the seller.
- Preserve the buyer’s business language in
brief; do not collapse it into only keywords. - Put product characteristics in
filtersand exact delivery constraints intargeting_overlay. - Use
required_overlay_supportonly for dimensions whose values will be supplied later. - Inspect every returned
targeting_resolution; silence confirms an unchanged structured overlay, not prose interpretation. - Keep
briefout ofwholesalemode. - Persist the request tuple with the response so later
refinecalls andwholesale_feed_versioncomparisons are scoped correctly.
Practice prompt
A buyer says:We need a six-week US launch for Acme Meals’ new family dinner kits. We want CTV or online video, only USD pricing, something suitable for parents with kids, ages 25–44, and we need completion-rate reporting. We will choose DMAs after planning.Expected decomposition:
- Brief: family dinner kit launch, parent audience, suitable contexts, six-week launch.
- Filters: video-capable channel/format constraints, USD pricing, completion-rate reporting.
- Targeting overlay: US and ages 25–44.
- Required overlay support: Nielsen DMA selection later.
- Brand: Acme Meals domain or BrandRef.