agentleFS
narayan-metaflownarayan-metaflow/metaflow-marketing-skills/skills/ad-spend-allocator/SKILL.md

ad-spend-allocator

Skill14 starsChanged 7 months agoMITView on GitHub

Optimize budget allocation across paid media channels using Marketing Efficiency Ratio (MER), marginal ROAS analysis, diminishing returns modeling, and incrementality-informed decisions.

1 other project uses a version of this.

Adopted by

Most recently taken up by

The file

We split this skill into the rules it gives an agent

11 rules. About 0 are common, 11 are distinctive, and 0 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈11

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 0

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Rule of thumb: If platform ROAS sums to more than your actual MER, you have attribution overlap.

    line 34
  2. Distinctive:

    Not every channel needs to be an efficiency champion.

    line 87
  3. Distinctive:

    Before major budget shifts ($10K+ reallocations)

    line 118
  4. Distinctive:

    When considering pausing a channel

    line 119
  5. Distinctive:

    When two channels overlap heavily (brand search + Meta retargeting)

    line 120
  6. Distinctive:

    If platform-reported ROAS is 5.0x but incrementality test shows 60% lift, actual incremental ROAS is 3.0x.

    line 127
  7. Distinctive:

    Always build three scenarios:

    line 160
  8. Distinctive:

    Implication for allocation: If channel ROAS declined 10% YoY but CPMs rose 9%, the underlying efficiency is roughly flat.

    line 178
  9. Distinctive:

    If expected new revenue > current revenue, the shift is value-creating.

    line 210
  10. Distinctive:

    Instead: Shift the same $9.6K from underperformers to overperformers.

    line 294
  11. Distinctive:

    Before any major move, run:

    line 304

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Process

  1. Collect channel data — Spend, revenue/conversions, and time period per channel
  2. Calculate core metrics — MER, channel ROAS, blended CAC
  3. Assess marginal efficiency — Where is each channel on its diminishing returns curve?
  4. Assign channel roles — Primary driver, scaling channel, support channel, fill channel
  5. Model reallocation scenarios — What happens if you shift $X from channel A to B?
  6. Factor incrementality — Adjust for platform-reported vs actual incremental lift
  7. Build forecast — Quarterly plan with seasonality and CPM trend context
  8. Recommend moves — ICE-prioritized action plan with expected outcomes

Core Metrics Framework

MER vs Platform ROAS

Marketing Efficiency Ratio (MER) = Total Revenue ÷ Total Ad Spend (across ALL channels)

MER is the north star metric. Platform-reported ROAS overcounts because of attribution overlap — Google and Meta both claim credit for the same sale.

MetricWhat It MeasuresUse For
MERBlended efficiency across all channelsStrategic planning, board reporting
Platform ROASPlatform-attributed revenue ÷ platform spendWithin-platform optimization
Incremental ROASTrue lift over holdout baselineChannel investment decisions
Marginal ROASROAS on the last dollar of spendAllocation decisions
Blended CACTotal spend ÷ new customersEfficiency per new customer
LTV:CACCustomer lifetime value ÷ CACLong-term channel viability

Rule of thumb: If platform ROAS sums to more than your actual MER, you have attribution overlap. The gap = overclaimed conversions.

Target MER Benchmarks (Starting Points)

Business TypeHealthy MERNotes
DTC ecommerce (physical products)3.0-5.0xLower for high-margin, higher for low-margin
Subscription/SaaS (LTV-driven)1.5-3.0x on first purchaseNeeds 6-12 month LTV analysis
Lead gen (service businesses)CPL-based, not MERUse CAC targets instead
Luxury/high-AOV5.0-10.0xCan tolerate higher thresholds

Confidence note: MER benchmarks vary significantly by industry, margin structure, and LTV. These are starting points — calibrate to your actual unit economics.

Marginal ROAS & Diminishing Returns

The key insight: ROAS is not linear with spend. Every channel has a curve.

The Diminishing Returns Curve

ZoneCharacteristicMarginal ROAS BehaviorAction
Under-investedBudget capped, high impression share gapsMarginal ROAS > average ROASScale up aggressively
Efficient frontierSweet spot — spend matches demandMarginal ROAS ≈ average ROASMaintain, test small increments
SaturatingDiminishing returns setting inMarginal ROAS < average ROAS but above targetScale carefully, watch for decay
Over-investedWasting spend on low-intent audiencesMarginal ROAS < targetCut budget, reallocate

Identifying Your Position on the Curve

Signals of under-investment:

  • Google Search impression share <30% (Lost IS Budget)
  • Meta ad set frequency <1.5 (not reaching enough of audience)
  • CPA/ROAS stable as spend increased (no efficiency loss)
  • Low reach % of eligible audience

Signals of saturation:

  • Google Search impression share >80-95%
  • Meta frequency >4 with rising CPA
  • ROAS declining as spend increased
  • Diminishing absolute conversion growth per budget dollar

Practical calculation of marginal ROAS:

Marginal ROAS = (Revenue at spend level B − Revenue at spend level A) ÷ (Spend B − Spend A)

Example: Channel grew from $10K/mo ($40K rev, 4.0x ROAS) to $15K/mo ($55K rev, 3.67x ROAS).

  • Marginal revenue = $55K − $40K = $15K
  • Marginal spend = $5K
  • Marginal ROAS = $15K ÷ $5K = 3.0x (vs 3.67x average)
  • Interpretation: The last $5K came at 3.0x. If target is 3.5x, this channel is saturating.

Channel Role Assignment (Power Pack Thinking)

Not every channel needs to be an efficiency champion. Assign roles:

RolePurposeROAS ExpectationExample Channels
Primary driverBulk of revenue, proven efficientAt or above MER targetGoogle Search non-brand, Meta Advantage+ Shopping
Scaling channelUnlocking new audiences/growthSlightly below primary, high incrementalMeta prospecting, Google PMax
Support/mid-funnelConsideration and warmingLower direct ROAS, assist-heavyYouTube, Meta video, Demand Gen
Fill/hygieneBrand defense, retargetingVery high ROAS but low volumeGoogle brand, retargeting
ExperimentalTesting new channelsUnknown, budget-cappedTikTok, Pinterest, LinkedIn new launch

Google Power Pack (2025): Demand Gen → AI Max → PMax working together. Demand Gen creates interest at the top, AI Max captures it in search, PMax scales at the bottom. Evaluate as a system, not as siloed channels.

Agency mistake to avoid: Killing a "low ROAS" channel that's actually feeding your "high ROAS" channel. Run incrementality tests before defunding a suspected assist channel.

Incrementality-Informed Allocation

Platform attribution lies. Incrementality testing tells the truth.

Incrementality Hierarchy (highest to lowest evidence quality)

MethodEvidence QualityEffort
Geo-based holdout testsHighestHigh — requires geo split
Conversion lift tests (Google, Meta native)HighMedium — use platform tools
Marketing Mix Modeling (Google Meridian)High for strategicHigh — needs data science
Ghost ads / PSA testsMedium-HighMedium
Pre-post analysis on pause eventsMediumLow (opportunistic)
Platform-reported ROAS aloneLowZero — but unreliable

When Incrementality Testing Is Worth It

  • Before major budget shifts ($10K+ reallocations)
  • When considering pausing a channel
  • When two channels overlap heavily (brand search + Meta retargeting)
  • Annually for MMM refresh

Google Meridian (2025): Google's open-source Marketing Mix Modeling framework. Incorporates granular video and Search signals. Calibrate with conversion lift tests. Best for organizations with data science capability or larger spenders ($1M+/year).

Applying Incrementality to Allocation

If platform-reported ROAS is 5.0x but incrementality test shows 60% lift, actual incremental ROAS is 3.0x. Use the incremental number for allocation decisions.

ChannelReported ROASIncrementalityTrue Incremental ROASAction
Google brand15x20% lift3.0xDefensive only — don't scale beyond natural demand
Google non-brand4x85% lift3.4xPrimary driver — scale aggressively
Meta prospecting3x75% lift2.25xScaling channel — monitor marginal
Meta retargeting8x30% lift2.4xSupport — don't pay to reach already-converting users

Budget Forecasting

Quarterly Budget Modeling

Build a forecast that accounts for:

  1. Historical seasonality — Previous year's monthly index
  2. CPM trend — Meta's avg ad price climbed 9% in 2025 (Meta Q1 2025 earnings); similar pressure on Google
  3. Planned initiatives — New product launches, geo expansions, creative refreshes
  4. Diminishing returns — Don't forecast linearly past saturation zones

Simple Forecast Template

Q[X] Forecast:
  Base spend = [previous quarter adjusted for seasonality]
  CPM inflation factor = +9% (2025 Meta), +[X]% (Google)
  Expected MER = [trend analysis + planned improvements]
  Forecast revenue = Forecast spend × Expected MER
  
  Confidence range: ±15% (narrower if stable, wider if volatile)

Scenario Planning

Always build three scenarios:

ScenarioSpend ChangeExpected OutcomeRisk
ConservativeFlat or -10%Maintain current efficiencyMissing growth opportunity
Base case+15-20%Scale within efficient frontierTypical execution risk
Aggressive+40-50%Capture growth, risk efficiency decayHigher CPA, learning resets

CPM Trend Context (2025-2026)

Platform2025 CPM MovementImplication
Meta+9% avg ad price (Q1 2025 earnings)Rising costs compress MER — not always a performance issue
Google SearchCompetitive pressure on non-brandGrowing Smart Bidding adoption pushes auctions
YouTubeRelatively stableStill cost-efficient for reach
TikTokHigh volatilityCheck quarterly
LinkedInPremium pricingViable for B2B only

Implication for allocation: If channel ROAS declined 10% YoY but CPMs rose 9%, the underlying efficiency is roughly flat. Don't cut a channel that's fighting macro pressure successfully.

Reallocation Decision Framework

Step 1: Calculate Current State

ChannelSpendRevenueROASMarginal ROASIncrementalityRole
[channel]$[X]$[X][X]x[X]x[X]% lift[role]

Step 2: Identify Imbalances

  • Channels with marginal ROAS > target → candidates for scaling
  • Channels with marginal ROAS < target → candidates for cutting or restructuring
  • Channels at saturation → hold, don't scale
  • Channels with weak incrementality → evaluate true value

Step 3: Size the Move

Conservative reallocation: Shift 10-15% of budget at a time. Observe for 14-21 days before next move.

Why not 50%? Big reallocations destabilize learning on both sides. The receiving channel enters learning phase, the losing channel loses momentum. Gradual > dramatic.

Step 4: Expected Impact Calculation

Expected new revenue = 
  (Remaining spend on channel A × ROAS_A) +
  (New spend on channel B × Marginal_ROAS_B) +
  (Original spend on channel B × ROAS_B)

If expected new revenue > current revenue, the shift is value-creating.

Output Format

## Ad Spend Allocation Analysis

### Current State
| Channel | Spend | Revenue | ROAS | Marginal ROAS | Role |
|---------|-------|---------|------|--------------|------|

**Blended MER:** [X]x (target: [X]x)
**Total Spend:** $[X]/month
**Total Revenue:** $[X]/month

### Key Findings
- [Channel X] is [under-invested / saturating / over-invested]
- Marginal ROAS gap: [specific]
- Incrementality concern: [if applicable]
- CPM trend context: [Meta +9%, etc.]

### Reallocation Recommendations
| Move | From | To | Amount | Expected Impact |
|------|------|-----|--------|----------------|
| 1 | [channel] | [channel] | $[X] (X% of budget) | [specific outcome] |

### Quarterly Forecast
| Scenario | Total Spend | Expected MER | Expected Revenue |
|----------|------------|-------------|-----------------|
| Conservative | $[X] | [X]x | $[X] |
| Base | $[X] | [X]x | $[X] |
| Aggressive | $[X] | [X]x | $[X] |

### Testing & Validation Plan
- [Incrementality tests to run]
- [Monitoring cadence]
- [Rollback criteria]

Example

Input: "DTC skincare brand. Monthly spend: Google $18K (Search + PMax), Meta $22K (ASC + prospecting), TikTok $5K, YouTube $3K. Revenue last month: $165K. I'm told by the CMO to either cut 20% or justify why not. Where should I push and where should I cut?"

Output:

Ad Spend Allocation Analysis

Current State

ChannelSpendRevenue (platform-reported)ROASEst. Marginal ROASRole
Google Search (non-brand)$8K$32K4.0x3.5xPrimary driver
Google Search (brand)$2K$28K14.0x5.0x (incremental)Fill/defense
Google PMax$8K$26K3.25x2.5xScaling
Meta ASC$15K$48K3.2x2.4xPrimary driver
Meta prospecting$7K$14K2.0x1.8xScaling
TikTok$5K$8K1.6xUnknownExperimental
YouTube$3K$5K1.67xUnknownSupport/MOFU

Blended platform ROAS (sum): 4.0x ($161K/$48K) Actual MER: $165K ÷ $48K = 3.44x Attribution overlap: ~14% (platform sum overcounts by this much)

Key Findings

  1. TikTok and Meta prospecting are below target — marginal ROAS underwater. These are the obvious cut candidates IF incrementality doesn't justify them
  2. Google brand search is defensive — high reported ROAS (14x) but likely 80% would happen organically. True incremental ROAS ~3.0x. Don't scale, don't cut
  3. Google Search non-brand is primary — healthy marginal ROAS at 3.5x, room to scale
  4. Meta ASC is the workhorse — 3.2x with 15K spend. Still room before saturation
  5. YouTube is underfunded for meaningful signal — $3K/mo can't support a real test. Either commit to $10K+ or kill it
  6. CPM context: Meta +9% in 2025 means Meta ASC efficiency is holding up against pressure — don't punish it for macro costs

Reallocation Recommendations (don't cut 20% — shift 20%)

PriorityMoveFromToAmountExpected Impact
1Kill TikTok test OR commit $10K+TikTokGoogle Search non-brand$5K+$17-18K revenue at 3.5x marginal
2Reduce Meta prospectingMeta prospectingMeta ASC$3KASC has better marginal; prospecting feeds ASC but at 1.8x marginal, it's too expensive
3Kill YouTube at this scaleYouTubeGoogle Search non-brand$3K$3K is below YouTube's signal threshold — reallocate
4Net result:No cut; reallocationExpected MER lift to 3.7x

Counter-Argument to Cutting 20%

Cutting 20% ($9.6K) proportionally would:

  • Cut $1.6K from Google non-brand (the best performer) — value destructive
  • Cut $3K from Meta ASC — value destructive
  • Cut $1.6K from Google brand — unnecessary, brand defense is cheap

Instead: Shift the same $9.6K from underperformers to overperformers. Keep total spend at $48K, raise expected revenue to ~$177K, MER moves from 3.44x → ~3.69x.

Quarterly Forecast (next 3 months)

ScenarioMonthly SpendExpected MERExpected RevenueNotes
Conservative (CMO's cut)$38.4K3.5x$134K/moValue destructive
Base (reallocation)$48K3.7x$178K/moRecommended
Aggressive (scale winners)$58K3.5x$203K/moRequires creative refresh pipeline

Incrementality Testing Plan

Before any major move, run:

  1. Google brand holdout test (1 month) — confirm true incremental value
  2. Meta prospecting geo-split test — verify it's feeding ASC vs wasted
  3. YouTube investment test — if keeping, commit $10K for 60 days to get real signal

Monitoring Plan

  • Weekly MER tracking vs 3.7x target
  • Marginal ROAS calculation monthly per channel
  • CPM trend overlay — separate cost pressure from performance decay
  • Rollback: if reallocation drops MER below 3.3x after 30 days, revert

Guidelines

  • Don't sum platform ROAS and call it blended ROAS. Platforms overclaim. Use MER (total revenue ÷ total spend) as the north star.
  • Don't make allocation decisions on platform-reported ROAS alone. Platform ROAS overcounts by 10-30% typically. Incrementality testing is the gold standard.
  • Don't shift more than 20% of a channel's budget at once. Destabilizes learning on both sides. Gradual reallocation (10-15% moves) preserves performance.
  • Don't kill a "low ROAS" channel without testing incrementality. It may be feeding your "high ROAS" channel. Run a holdout test first.
  • Don't ignore diminishing returns. Scaling past the efficient frontier wastes money. Monitor marginal ROAS, not just average.
  • Don't forecast linearly. Diminishing returns are nonlinear. 2x budget ≠ 2x revenue in most channels.
  • Don't conflate CPM inflation with performance decay. Meta +9% CPM in 2025 means some "decline" is macro, not campaign failure.
  • Don't run $3K monthly tests and expect signal. Each channel has a minimum signal threshold. Under-funded experiments produce noise.
  • Don't assume MMM output without incrementality calibration. Google Meridian and other MMMs need incrementality experiments to calibrate. Uncalibrated MMM is directionally useful but not decisive.
  • Cross-references: For within-platform optimization, use the google-ads-optimizer and meta-ads-optimizer skills. For channel-specific analysis, use the campaign-analyzer skill. For reporting the allocation story to stakeholders, use the paid-media-reporter skill.
  • Confidence: Target MER benchmarks vary by industry, margin, and LTV. CPM trend data from Meta Q1 2025 earnings may shift quarter to quarter. Incrementality ranges are illustrative — your account will differ.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.