Skip to content

Conversation

@bokelley
Copy link
Contributor

Summary

Modernizes AdCP protocol targeting and budget models to be more privacy-first, AI-optimized, and implementation-friendly.

Changes Made

🌍 Remove Lat/Long Targeting (Privacy-First)

  • Removed: geo_lat_long_radius targeting option from schemas and documentation
  • Kept: Country, region, metro, and postal code targeting for sufficient granularity
  • Rationale: Aligns with modern privacy regulations and reduces implementation complexity
  • Coverage: Geographic hierarchy covers legitimate targeting needs while eliminating privacy risks

💰 Budget Model Modernization (Remaining Budget Allocation)

  • Removed: daily_cap field from budget schema
  • Updated: Pacing strategy descriptions to focus on "remaining budget over remaining time"
  • Rationale: More resilient to human-in-the-loop approval delays and AI-friendly
  • Default: "even" pacing allocates remaining budget evenly over remaining campaign duration

⏱️ Simplify Frequency Caps (Package-Level Only)

  • Removed: media_buy scope option for frequency caps
  • Simplified: Frequency caps now only apply at package level
  • Rationale: Covers 80% of real-world use cases while reducing configuration complexity
  • Impact: Eliminates scope selection confusion and simplifies implementation

Test Results

  • ✅ All schema validation tests pass
  • ✅ All example validation tests pass
  • ✅ TypeScript compilation successful
  • ✅ Documentation synchronized with schema changes

Protocol Design Analysis

Based on ad tech expert review:

  • ✅ Privacy-first: Aligns with GDPR/CCPA and modern platform trends
  • ✅ AI-optimized: Remaining budget allocation better for automated workflows
  • ✅ Implementation-friendly: Reduced complexity while maintaining advertiser effectiveness
  • ✅ Future-ready: Positions AdCP well for privacy-first, AI-driven advertising landscape

Breaking Changes

These are intentionally breaking changes to modernize the protocol:

  1. geo_lat_long_radius targeting no longer supported
  2. daily_cap budget field removed
  3. scope field removed from frequency caps (package-level implicit)

Migration Path

  • Geographic targeting: Use postal codes for local targeting, metro/region for broader areas
  • Budget management: Remove daily_cap usage, rely on pacing strategies for allocation
  • Frequency caps: Remove scope field from frequency cap configurations

🤖 Generated with Claude Code

…requency caps

Remove lat/long targeting in favor of privacy-first geographic targeting:
- Remove geo_lat_long_radius from targeting schema and documentation
- Keep country, region, metro, and postal code targeting for sufficient granularity
- Update targeting-dimensions.md to remove lat_long from AXE dimensions

Update budget model to use remaining budget allocation approach:
- Remove daily_cap field from budget schema
- Update pacing enum descriptions to focus on remaining budget over remaining time
- More resilient to human-in-the-loop approval delays
- Default "even" pacing allocates remaining budget evenly over remaining campaign duration

Simplify frequency caps to package-level only:
- Remove media_buy scope option from frequency-cap-scope enum
- Remove scope field from frequency-cap schema (now package-level by default)
- Update all documentation and examples to reflect package-only frequency caps
- Simplifies configuration while covering 80% of real-world use cases

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <[email protected]>
@bokelley bokelley merged commit d35f9df into main Sep 16, 2025
6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants