Multi-Agent Architecture for Intelligent Advertising Media Planning

spotify · Media & Entertainment · 2026 · source Agentic: yes · promotional bias: med · source-backed · extracted with prompt 0.5.6 (schema v2)

Generated from extraction.json — do not edit by hand. Every claim cites verbatim source evidence; stated means the quote directly asserts the claim, implied means it supports it indirectly.

Problem

Domain: Advertising media planning

Spotify needed a unified decision layer for campaign planning because each buying channel had fragmented workflow logic despite shared backend infrastructure.

Constraints:

Architecture

Ads AI uses Google ADK 0.2.0 and Vertex AI Gemini 2.5 Pro to turn natural-language campaign requirements into media plans. A RouterAgent determines which information is present, specialized resolver agents fill goal, audience, budget, and schedule fields, and a MediaPlannerAgent uses historical campaign-performance data from PostgreSQL and cache-backed tools to produce structured recommendations.

Diagram confidence: reconstructed (reconstructed from prose).

flowchart LR
  routeragent["RouterAgent"] --> goalresolveragent["GoalResolverAgent"]
  routeragent --> audienceresolveragent["AudienceResolverAgent"]
  routeragent --> budgetagent["BudgetAgent"]
  routeragent --> scheduleagent["ScheduleAgent"]
  goalresolveragent --> mediaplanneragent["MediaPlannerAgent"]
  audienceresolveragent --> mediaplanneragent
  budgetagent --> mediaplanneragent
  scheduleagent --> mediaplanneragent
  mediaplanneragent --> historical-performance-store["Historical Performance Store"]
  mediaplanneragent --> structured-output-contract["Structured Output Contract"]
Drag to pan · scroll or use +/− to zoom · reconstructed from the source's described component topology

Components

Component Role Interacts with
RouterAgent Determines which campaign fields are already present and which agents need to run. GoalResolverAgent, AudienceResolverAgent, BudgetAgent, ScheduleAgent
GoalResolverAgent Maps advertiser intent to campaign objectives and ad categories. MediaPlannerAgent
AudienceResolverAgent Extracts targeting criteria from predefined taxonomies. MediaPlannerAgent
BudgetAgent Parses budget formats and converts values for internal processing. MediaPlannerAgent
ScheduleAgent Parses campaign dates and relative schedule expressions. MediaPlannerAgent
MediaPlannerAgent Scores historical campaigns and produces optimized ad-set recommendations. Historical Performance Store, Structured Output Contract
Historical Performance Store PostgreSQL plus in-memory cache containing previous campaign-performance data. MediaPlannerAgent
Structured Output Contract Constrains recommendations into parseable downstream output. —

Data flow

A request enters the RouterAgent, which conditionally invokes only the resolver agents needed for missing fields. Goal, audience, budget, and schedule agents resolve campaign constraints through tool calls and taxonomies. The MediaPlannerAgent then applies weighted rules over historical performance data and emits structured ad-set recommendations.

“The RouterAgent serves as a traffic controller, analyzing incoming user messages to determine what information is already present versus what needs to be resolved.”summary, stated
“The MediaPlannerAgent represents the optimization core of the system. It takes all resolved information from other agents and generates optimized ad set recommendations”summary, stated

Why this architecture

Spotify selected a multi-agent decision layer because media planning is too context-dependent for duplicated channel workflows or a giant rule engine. Conditional routing reduces unnecessary LLM calls, and the planner's tool-backed access to historical data keeps outputs grounded.

“Traditional approaches—building more deterministic workflows per channel or creating a giant rules engine—were rejected as unsuitable”summary, stated
“This fast routing step prevents unnecessary LLM calls and enables conditional agent execution, optimizing overall system performance.”summary, stated

Models used: Gemini 2.5 Pro

Scale

Alternatives considered (roads not taken)

Build deterministic workflows per advertising channel

Rejected because: Hard-coded workflows could not handle probabilistic, constantly changing advertising logic across channels.

“Traditional approaches—building more deterministic workflows per channel or creating a giant rules engine—were rejected as unsuitable for the probabilistic, constantly changing nature of advertising logic.”summary, stated

Create a giant rules engine

Rejected because: Spotify needed shared signals, reasoning, and orchestration over existing APIs rather than another static decision tree.

“they needed a "unified, programmable decision layer" that could understand advertiser goals, reason over shared signals, and orchestrate existing Ads APIs”summary, stated

Run every agent for every request

Rejected because: RouterAgent conditional execution avoided unnecessary LLM calls.

“This fast routing step prevents unnecessary LLM calls and enables conditional agent execution, optimizing overall system performance.”summary, stated

Patterns

multi-agent-orchestration (architecture)

Ads AI separates routing, field resolution, and media-planning optimization into specialized agents.

“specialized AI agents handle distinct aspects of media planning, offering several architectural advantages”summary, stated

tool-use-orchestration (architecture)

Agents use Google ADK FunctionTool integrations to access Spotify advertising data and services.

“Spotify leverages Google ADK's FunctionTool mechanism to give agents access to real data sources”summary, stated

structured-output-contract (reliability)

The planner emits structured media-plan outputs rather than free-form recommendations.

“The LLM backend is powered by Vertex AI using Gemini 2.5 Pro for natural language understanding and generation.”summary, implied

Tradeoffs

Adopt agentic planning

Chose A multi-agent programmable decision layer over More per-channel deterministic workflows.

Rationale: The advertising logic was probabilistic, changing, and shared across surfaces.

“Traditional approaches—building more deterministic workflows per channel or creating a giant rules engine—were rejected as unsuitable”summary, stated

Trade architecture complexity for maintainability and latency

Chose Specialized agents with parallel execution over A monolithic prompt.

Rationale: The source explicitly frames this as a complexity tradeoff for latency, maintainability, and avoiding monolithic prompts.

“This design choice explicitly trades some architectural complexity for improved latency, maintainability, and the ability to avoid monolithic prompts.”summary, stated

Gotchas (what bit them)

Backend consolidation did not prevent fragmented decision logic.

Root cause: Each advertising channel implemented planning and optimization decisions separately.

Resolution: Spotify moved the decision logic into a shared programmable agent layer.

“while the technical infrastructure was unified, the decision-making logic for campaign planning, budget allocation, inventory selection, and optimization had become fragmented”summary, stated

Media planning became a proving ground because complexity concentrated there.

Root cause: Sales, advertisers, inventory, pacing, and ad products all affect early decisions.

Resolution: Spotify started Ads AI with media planning before downstream booking and optimization.

“Media Planning was selected as the initial proving ground because it's where all the complexity converges: sales, advertisers, inventory, pacing, and ad products all collide”summary, stated

Evaluation

The public case reports latency and describes individual-agent testability, but does not provide a full quantitative evaluation harness.

Metrics: 15-30 minutes reduced to 5-10 seconds · thousands of historical campaigns used for recommendations

“The solution reduced media plan creation time from 15-30 minutes to 5-10 seconds”summary, stated

Outcomes

The source names thousands of historical campaigns and a 5-10 second planning target.

“The solution reduced media plan creation time from 15-30 minutes to 5-10 seconds, leveraging historical performance data from thousands of campaigns”summary, stated