10 min
h1

Adobe Advertising’s Creative Management — Dynamic Creative Optimization (DCO) combines rule-based targeting with machine learning to render personalize ads from 10,000+ product catalogs in under 25ms, delivering 20–40% performance improvements through a two-tier architecture.

Introduction

Imagine browsing online and seeing an ad for exactly the product you’re interested in — not random, but perfectly tailored to you. Behind this seemingly simple ad lies a sophisticated two-tier system that combines rule-based targeting with machine learning to serve personalized ads in under 25 milliseconds.

Adobe Advertising Creative Management enables advertisers to create, manage, and optimize ads across channels. It supports standard static creatives, dynamic feed/catalog ads with targeting, rotation methods, and performance optimization.

Dynamic Creative Optimization (DCO) is a core capability within Creative Management that powers real-time personalization for dynamic ads. While Creative Management handles creative setup, catalog uploads, and experience configuration, behind the curtains when it comes to rendering ad, DCO executes the real-time decision engine that selects the optimal product tailored as per user preferences. This two-tier system — combining deterministic targeting rules with machine learning optimization — ensures that advertisers can leverage massive product catalogs while maintaining the speed and scale required for programmatic advertising. DCO transforms static creative templates into personalized, context-aware ads that adapt to user’s location, and preferences in real time.

This is Dynamic Creative Optimization (DCO) — a production-ready architecture that handles millions of decisions per day while continuously learning what works best.

Fig 1 : From bid win to targeting, product selection, ML optimization, and final ad rendering.

Fig 1 : From bid win to targeting,product selection, ML optimization, and final ad rendering.

Fig 2 :End-to-end Creative Optimization workflow

Fig 2 :End-to-end Creative Optimization workflow

The challenge

Serving personalized ads at scale requires solving four constraints simultaneously:

Traditional approaches fall short. Random selection provides poor relevance. Scanning thousands of products sequentially is too slow. Static scoring rules can’t learn what converts. And pure machine learning without business logic can serve irrelevant ads or violate campaign constraints.

Types of creatives: standard and dynamic

Before diving into the targeting system, it’s important to understand the two main types of creatives

Standard creatives

Standard creatives are  static ads  with predefined, fixed content. The creative assets (images, copy, call-to-action) are uploaded once and remain unchanged regardless of who sees the ad.

Fig 3: Examples of static creative variants

Fig 3: Examples of static creative variants

Dynamic creatives

Dynamic creatives are  template-based ads  that pull real-time product information from a catalog feed. The template defines the layout, while product data (image, title, price, description) is injected at serve time based on user context.

Creative Group & AdThemes

In Adobe Advertising Creative, campaigns are organized into experiences. A targeted experience can use a decision tree: each branch applies audience rules (geo, device, segment, etc.), and the  final leaf node  in that tree is what this article calls an  AdTheme  — a specific audience path with creatives attached.

Creative Group  is the collection of creatives (standard or dynamic) associated with one AdTheme. Once Tier 1 selects an AdTheme for the current request, the system still needs to decide  which creative  from that Creative Group to show. This choice is controlled by the rotation method configured in the UI:

Algorithm-based (Algo)

Uses machine learning — specifically Thompson Sampling — to automatically select the best-performing creative. The system tracks success metrics (clicks, conversions) for each creative and increasingly favors winners while still exploring alternatives. This is the recommended method for maximizing campaign performance.

Weighted

Distributes impressions across creatives according to advertiser-defined percentages. For example, an advertiser might configure 70% of impressions to Creative A (their primary message) and 30% to Creative B (a test variant). Useful for controlled A/B testing or when specific traffic allocation is required.

Sequential

Rotates through creatives in a defined order, cycling through each creative before repeating. Ensures even distribution over time and is useful for campaigns where all creatives need equal exposure.

Random

Randomly selects from available creatives with equal probability on each request. Simple but doesn’t learn or optimize — useful for baseline testing or when true randomization is desired.Tier 1: Targeting & AdTheme Selection

Purpose: Find the right creative group (AdTheme). This happens for  all  ad types: standard, dynamic, and video.

Tier 1: targeting & AdTheme selection

Purpose: Find the right Creative Group (AdTheme). This happens for  all  ad types: standard, dynamic, and video.

Two targeting approaches

1. Decision tree targeting

Advertisers can set up multiple layers of targeting in the form of Decision Tree Experience and assign creatives to each branch of the tree. An experience has a ad tag which advertisers could use in any Demand-Side Platform (DSP)

How it works

Evaluates multiple criteria simultaneously and performs set intersection. The system maintains separate indexes for each targeting dimension:

2. Tag-based targeting

User can set up experience which is non decision tree and works on different tags setup on ad sizes.

When request includes tag=’4', system directly retrieves the AdTheme associated with tag 4. Faster but less flexible than decision tree.

Scoring: additive model

After intersection identifies matching AdThemes, scoring uses an additive model:

Example:

Fig 4: Tier 1 targeting flow — decision-tree or tag-based targeting feeds into additive scoring to select the winning AdTheme for the request

Fig 4: Tier 1 targeting flow — decision-tree or tag-based targeting feeds into additive scoring to select the winning AdTheme for the request

For dynamic ads: product selection layer

Important: Product selection ONLY happens for dynamic ads. Standard ads skip this layer.

Fig. 5: The four pillars of DCO — targeting, scoring, product selection, and machine-learning optimization working together in real tim

Fig. 5: The four pillars of DCO — targeting, scoring, product selection, and machine-learning optimization working together in real time

Product catalog files (MUP files)

Advertisers upload product feeds (UTF-8, tab-delimited). Each row represents a product and includes: product ID, title, description, price, image URLs, category, brand, provider, geographic availability, and custom targeting fields.

From feed to indexes: offline pipeline

  1. Feed parsing: parse rows into lightweight product handles (initial score = 1.0).

  2. Index configuration: which columns become indexes is configuration-driven (properties file).

  3. Inverted index creation: for each configured column build an inverted index, often using compressed bitmaps.

  4. Serialization & hot-loading: serialize binary indexes and hot-swap into serving pods with atomic updates.

Product selection process

Step 1 — Index-based filtering: fetch product sets per criterion (country, category, segment).

Step 2 — Multiplicative scoring (different from Tier 1):

Example table:

Fig 6 : Variant 1 — the highest-ranked product after index-based filtering and multiplicative scoring. This is the selected product.

Fig 6 : Variant 1 — the highest-ranked product after index-based filtering and multiplicative scoring. This is the selected product.

Fig 7 : Variant 2 — an eligible dynamic ad product that passes targeting but receives a lower final score

Fig 7 : Variant 2 — an eligible dynamic ad product that passes targeting but receives a lower final score

Fig 8: Variant 3 — another qualifying product retained for comparison but not selected

Fig 8: Variant 3 — another qualifying product retained for comparison but not selected

Cumulative note: These(fig 6–8) figures represent three variants of the same dynamic ad, derived from different rows of the product feed. All variants satisfy targeting and scoring constraints, but only the highest-scoring variant is selected and mapped to the creative template.

Step 3 — Top-N selection: return top N products (e.g., top 200). Ties at cutoff are included for fairness.

Step 4 — Final product post creative optimization algorigthm, final product is returned which gets mapped to the template.

Performance engineering: achieving <25 milliseconds

Several engineering practices enable the <25ms target:

1. Data locality

2. Compact data structures

3. Result caching

4. Bounded candidate sets

5. Atomic index swaps

Fig. 9: In-memory indexes, compact data structures, and caching strategies that enable sub-25ms decision latency

Fig. 9: In-memory indexes, compact data structures, and caching strategies that enable sub-25ms decision latency

Tier 2: ML optimization

Purpose: Intelligent selection from the top candidates. ML runs for all ad types but operates on different “arms”:

When does ML run?

ML runs when there are multiple competitive options or when exploration is required.

Scenario A — Clear winner (no ML):

Scenario B — Ties / competitive options (ML decides):

Thompson Sampling: the ML engine

  1. Retrieve historical success/failure counts for each variant

  2. Sample from Beta distributions (one per variant)

  3. Select the variant with the highest sampled probability

Why Thompson Sampling? Works with daily batch updates, naturally balances exploration vs exploitation, runs quickly, and shows 20–40% improvement versus naive selection.

Fig 10: Thompson Sampling in DCO — eligible arms and per-arm performance stats feed the bandit engine, which selects the best creative or product × creative for the current request

Fig 10: Thompson Sampling in DCO — eligible arms and per-arm performance stats feed the bandit engine, which selects the best creative or product × creative for the current request

Understanding "arms" in a multi-armed bandit

The term “arm” comes from slot machines (one-armed bandits). In DCO:

Why contextual arms matter: The set of arms can change based on request context (location, availability). ML samples only from the currently eligible arms, enabling dynamic adaptation without precomputing all combos.

Complete flow: request to response

For standard ads, the flow is direct: Tier 1 picks an AdTheme based on targeting rules, then Tier 2 ML picks the best creative from that group using Thompson Sampling. For dynamic ads, an extra layer filters and scores products before ML decides the final product × creative combination. In both cases, the entire decision pipeline completes in under 25 millisecond

Fig. 11: Standard ad request flow — targeting and ML select the best static creative.

Fig. 11: Standard ad request flow — targeting and ML select the best static creative

Fig. 12: Dynamic ad request flow — includes product selection before ML optimization and rendering.

Fig. 12: Dynamic ad request flow — includes product selection before ML optimization and rendering.

Beyond advertising: universal applications

The two-tier pattern (Targeting + ML) applies beyond ads:

  1. Content recommendations — filter by rating/availability; ML optimizes engagement.

  2. E-commerce search ranking — filter by inventory/price; ML optimizes conversion.

  3. Email campaign optimization — enforce preferences; ML selects subject/time.

  4. Clinical trial matching — enforce eligibility; ML optimizes enrollment success.

The pattern: Target → Score → Optimize.

Why this architecture works

Targeting + Rules alone: fast & deterministic, but may tie-break randomly.

ML alone: can learn but might violate business logic and converge slowly without pruning.

Targeting + Rules + ML: best of both — business logic enforced, relevance scoring, and ML for continuous improvement. Typical gains: <25ms latency and 20–40% performance improvement versus naive baselines.

Key takeaways

  1. Two-Tier System: Targeting/scoring first (fast, deterministic), then ML optimization (adaptive learning).

  2. Different Scoring: Additive for AdTheme selection; multiplicative for product selection.

  3. Dynamic = Extra Layer: Dynamic ads add product selection between AdTheme selection and ML.

  4. ML for All Types: Thompson Sampling works for standard, dynamic, and video — only the arms differ.

  5. Real-Time Scale: Millions of decisions per day at <25ms per request.

Conclusion

Dynamic Creative Optimization is a powerful architecture pattern combining:

The key insight: it’s not rules  or  machine learning — it’s  both  in sequence. Targeting ensures relevance, scoring ensures differentiation, and ML ensures continuous optimization.

Want to learn more about how DCO can boost your ad performance? Explore Adobe Advertising Creative to get started.