feat: unified vendor pricing for creative, governance, and property lists#1937
Open
feat: unified vendor pricing for creative, governance, and property lists#1937
Conversation
23572a7 to
bdca1f5
Compare
…y list agents Add pricing_options[] to creative agents, property lists, and creative governance responses. Unify all vendor pricing under a shared vendor-pricing-option.json schema (cpm, percent_of_media, flat_fee). Schema changes: - New vendor-pricing-option.json and creative-consumption.json schemas - Deprecate signal-pricing-option.json as alias to vendor-pricing-option - Add account + include_pricing to list_creatives request - Add pricing_options[] to list_creatives response creative objects - Add account to build_creative request - Add pricing_option_id, vendor_cost, currency, consumption to build_creative response - Add pricing fields to get_creative_features response - Add pricing_options[] to property-list.json - Fix content-standards.json pricing ref (was product pricing, now vendor pricing) - Add creative_id and property_list_id to report_usage request Training agent: - list_creatives returns pricing_options when include_pricing + account provided - build_creative returns pricing fields when account provided - New report_usage handler with validation (required fields, non-negative values, creative_id/signal_agent_segment_id existence, pricing_option_id matching) - Sandbox rate card with premium/standard tiers and format-aware CPM - Session usage record limits (MAX_USAGE_RECORDS_PER_SESSION) Documentation: - Creative specification: new Pricing section with flow and models - Implementation guide: pricing and statefulness section - Task references: list_creatives and build_creative pricing fields - report_usage: creative and property list usage examples and fields - S2 Creative: pricing lab exercise, new assessment dimension (15%) - S3 Signals: vendor pricing consistency callout - Buyer track C3: creative pricing key concept Storyboard: - creative_ad_server.yaml extended with pricing discovery, build cost, and report_usage billing phase Tests: 17 new tests covering list_creatives pricing, build_creative pricing, report_usage handler (validation, partial success, signal validation) Breaking: content-standards.json pricing_options changed from product pricing (9 models) to vendor pricing (3 models: cpm, percent_of_media, flat_fee). This is a bug fix — governance vendors should not use publisher auction pricing models. Closes #1200 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…tion Add per_unit to the vendor pricing discriminated union: fixed price per unit of work (format, image, token, variant, render, evaluation). Covers transformation agents (per format adapted), AI generation (per image, per token), and multi-variant rendering (per variant). Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Creative vendors offer multiple pricing options per creative: volume tiers, context-specific rates (premium vs standard), different models per product line (CPM for rich media, per-unit for social variants). Updated all docs, schemas, and training to reflect this rather than hedging with "typically a single option." Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
ea28c03 to
230061c
Compare
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Update index.json signal-pricing description to include per_unit model - Fix spec pricing-by-interaction-model table (add per_unit for transformation/generation) - Add consumption assertion to build_creative pricing test - Add tests for negative vendor_cost and negative impressions rejection Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Address implementer doc gaps identified by expert review: - implementing-creative-agents.mdx: Full pricing walkthrough with JSON examples for each step (list_creatives → build_creative → report_usage). Both per_unit (transformation) and CPM (ad server) examples. Consumption field guidance table per agent type. Clarify vendor selects pricing option server-side (buyer does not pass pricing_option_id on request). - build_creative.mdx: New "Paid build with pricing" section showing per_unit response with vendor_cost and consumption, plus CPM response with vendor_cost=0. Explicitly connects pricing_option_id to list_creatives discovery and report_usage reconciliation. - index.mdx: New Step 9 in Maya walkthrough covering pricing and billing. Mentions rate cards, pricing_options, vendor_cost, report_usage, and that different agents price differently (CPM, per-format, per-image). Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- list_creatives.mdx: change "selected" to "applied" for pricing_option_id since the vendor selects, not the buyer - implementing-creative-agents.mdx: add bridging sentence before Step 3 report_usage example explaining it shows CPM reporting (different from the per_unit build in Step 2) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- implementing-creative-agents.mdx: add note that transformation agents must implement list_creatives for pricing discovery - buyer.mdx: add Creative agent pricing card to C3 reading list - governance/creative/index.mdx: add Pricing section for governance agents that charge for evaluations (IAS, DoubleVerify use case) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
… agents Transformation and generation agents (Celtra, AI platforms) don't have a creative library — they take assets in and produce output. Requiring them to implement list_creatives just for pricing discovery was wrong. Now list_creative_formats supports pricing_options[] on each format, with include_pricing and account on the request. This is the natural pricing surface for stateless agents: the format is the product. - format.json: add pricing_options field - list-creative-formats-request.json: add include_pricing + account - specification.mdx: document both pricing discovery surfaces - implementing-creative-agents.mdx: rewrite pricing guidance with discovery surface table by agent type, fix walkthrough to use list_creative_formats for transformation example - creative-agent-pricing.md: remove "pricing lives on creatives not formats" language, document both surfaces Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Distinguish from format-level pricing on list_creative_formats which is for transformation agents. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- S2 creative module: add exercise 5 (transformation agent pricing via list_creative_formats), update assessment dimension to cover both surfaces, fix exercise numbering - Creative overview Step 9: mention both discovery surfaces (list_creatives for ad servers, list_creative_formats for transformation agents) - Implementation guide: add Celtra to the "Both" row in pricing table - Spec: fix stale pricing-by-interaction-model table (transformation and generation now correctly show list_creative_formats) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
pricing_options[]to creative agents (list_creatives,build_creative), property lists, and creative governance — consistent with how signals and content standards already handle pricingvendor-pricing-option.jsonschema (cpm, percent_of_media, flat_fee) used by all vendor types. Deprecatesignal-pricing-option.jsonas aliascreative_idandproperty_list_idtoreport_usagefor billing reconciliationreport_usagehandler, pricing onlist_creatives/build_creative, sandbox rate cards, validationBreaking:
content-standards.jsonpricing_optionschanged frompricing-option.json(product-level, 9 models) tovendor-pricing-option.json(vendor-level, 3 models). This is a bug fix — governance vendors should not use publisher auction pricing.Closes #1200
Test plan
🤖 Generated with Claude Code