Skip to main content

Buyer briefs and discovery request shape

This supplement prepares buyer-side implementers to turn a human campaign request into precise list_products and request_proposals calls. Existing 3.x callers can apply the same decomposition through the get_products compatibility facade. 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. The public training seller supports the exact 3.2-beta.6 wire bundle with @adcp/sdk@14.0.0-beta.8. Verify those advertised capabilities before the lab; unknown-field acceptance by an older seller is not evidence of support.

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”
Example:

What goes in offer filters

Use filters when a product that fails the condition should not come back. That exclusion rule is identical across list_products, request_proposals, and refine_proposals; the operation changes whether the seller lists, curates, or revises offers, not whether a valid filter applies. The brief, wholesale/catalog listing, and refine flows therefore use the same hard-filter semantics. 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
Example:
If the buyer says “ideally CTV, but display is okay,” keep that preference in the brief. If they say “CTV only,” use criteria.offer_filters.channels.

What goes in targeting

Use targeting_overlay for exact delivery constraints the buyer knows now:
Use required_overlay_support when the dimension is mandatory but its values will be chosen later:
This does not ask for products broken out by DMA or placement. It asks for products on which packages can select those values later. Hard prose targeting remains binding. If an exact constraint appears only in prose, the seller must infer its wire meaning. Prefer the structured field. When that structured interpretation materially affects eligibility, pricing, or forecasting, the seller must return response-level 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

Use refine_proposals when the buyer is reacting to a previous proposal. A refinement should point at what changed: adjust budget, include or omit a product, request more premium placements, narrow geography, or ask for alternatives. Existing callers can express the equivalent flow through get_products with buying_mode: "refine". Do not send a totally new campaign through refine_proposals; start a new request_proposals call instead.

Implementation checklist

  • Read get_adcp_capabilities.adcp.supported_versions and media_buy.lifecycle_tools, pin adcp_version: "3.2-beta.6" for this lab, 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 criteria.offer_filters and exact delivery constraints in criteria.targeting_overlay on compact tasks. Map those to the compatibility facade’s top-level filters and targeting_overlay only for an existing get_products caller.
  • Use criteria.required_overlay_support only for dimensions whose values will be supplied later.
  • Inspect every returned targeting_resolution; silence confirms an unchanged structured overlay, not prose interpretation.
  • Keep brief on request_proposals; list_products is structured discovery and has no brief.
  • Persist the request tuple with the response so later refinements and feed-version comparisons 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.
  • Offer 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.