Mixpeek Logo
    Advanced
    Advertising
    11 min read

    Dynamic Creative Optimization with Visual Intelligence

    For advertisers running 100+ creative variations. Optimize creative elements in real-time. 28% improvement in ROAS, 40% faster creative iteration.

    Who It's For

    Performance marketing teams, creative agencies, and brands running large-scale DCO campaigns who need to optimize creative elements automatically

    Problem Solved

    Manual A/B testing cannot keep pace with the combinatorial explosion of creative elements. Teams cannot test all variations, and winning combinations are discovered slowly

    Why Mixpeek

    28% improvement in ROAS, 40% faster creative iteration, and automatic discovery of winning element combinations

    Overview

    DCO promises personalization at scale but is limited by testing velocity. This use case shows how Mixpeek accelerates creative optimization through visual intelligence.

    Challenges This Solves

    Combinatorial Explosion

    5 headlines × 5 images × 3 CTAs = 75 combinations

    Impact: Cannot test all variations with traditional A/B testing

    Slow Learning

    Statistical significance requires weeks of data

    Impact: Campaign window closes before optimization completes

    Element Interaction

    Winning elements depend on combination, not isolation

    Impact: Best image + best headline may not be best together

    Creative Fatigue

    Winning creatives degrade over time

    Impact: Performance drops without fresh creative

    Implementation Steps

    Mixpeek analyzes creative elements (headlines, images, CTAs, colors) and their performance to automatically serve optimal combinations and suggest new high-potential variations

    1

    Ingest Creative Elements

    Analyze all creative components

    import { Mixpeek } from 'mixpeek';
    const client = new Mixpeek({ apiKey: process.env.MIXPEEK_API_KEY });
    // Analyze creative elements library
    await client.buckets.connect({
    collection_id: 'creative-elements',
    bucket_uri: 's3://creatives/elements/',
    extractors: [
    'image-embedding', // Visual similarity
    'color-analysis', // Color palettes
    'text-extraction', // Headlines, CTAs
    'composition-analysis', // Layout, focal points
    'object-detection', // People, products, props
    'sentiment-analysis' // Emotional tone
    ],
    settings: {
    element_types: ['headline', 'image', 'cta', 'background', 'logo_placement'],
    track_performance: true
    }
    });
    2

    Predict Element Combinations

    Score potential creative combinations

    // Predict performance of element combinations
    async function predictCombination(elements: {
    headline_id: string;
    image_id: string;
    cta_id: string;
    background_id?: string;
    }, context: {
    audience: string;
    platform: string;
    placement: string;
    }) {
    const prediction = await client.dco.predictCombination({
    elements: elements,
    context: context,
    model: 'performance-predictor'
    });
    return {
    predicted_ctr: prediction.ctr,
    predicted_cvr: prediction.cvr,
    confidence: prediction.confidence,
    element_compatibility: prediction.compatibility_score,
    potential_issues: prediction.warnings // e.g., "low contrast CTA"
    };
    }
    3

    Optimize Serving in Real-Time

    Serve optimal combinations based on context

    // Get optimal creative for impression
    async function getOptimalCreative(request: {
    campaign_id: string;
    user_signals: object;
    platform: string;
    placement: string;
    }) {
    const optimal = await client.dco.getOptimal({
    campaign_id: request.campaign_id,
    context: {
    user: request.user_signals,
    platform: request.platform,
    placement: request.placement
    },
    strategy: 'thompson_sampling', // Explore vs exploit
    constraints: {
    frequency_cap: true,
    brand_safety: true
    }
    });
    return {
    creative_id: optimal.combination_id,
    elements: {
    headline: optimal.headline,
    image_url: optimal.image,
    cta: optimal.cta
    },
    expected_ctr: optimal.expected_ctr,
    exploration_flag: optimal.is_exploration
    };
    }
    4

    Generate New Variations

    Suggest high-potential new elements

    // Get suggestions for new creative elements
    async function suggestNewElements(campaignId: string) {
    const analysis = await client.dco.analyzePerformance({
    campaign_id: campaignId,
    lookback_days: 14
    });
    const suggestions = await client.dco.suggestElements({
    campaign_id: campaignId,
    top_performers: analysis.winning_elements,
    gaps: analysis.underperforming_segments,
    suggestions_per_type: 3
    });
    return {
    headline_suggestions: suggestions.headlines.map(h => ({
    text: h.suggested_text,
    rationale: h.rationale,
    predicted_improvement: h.expected_lift
    })),
    image_suggestions: suggestions.images.map(i => ({
    brief: i.image_brief,
    visual_attributes: i.target_attributes,
    rationale: i.rationale
    })),
    cta_suggestions: suggestions.ctas
    };
    }

    Expected Outcomes

    28% improvement in return on ad spend

    ROAS

    40% faster identification of winning combinations

    Creative Iteration

    10x more combinations evaluated vs traditional A/B

    Testing Coverage

    50% reduction in creative fatigue impact

    Creative Freshness

    30% fewer creative assets needed for same results

    Production Efficiency

    Frequently Asked Questions

    Ready to Implement This Use Case?

    Our team can help you get started with Dynamic Creative Optimization with Visual Intelligence in your organization.