Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Use when the user needs a paid media plan: work backwards from revenue to max CPA and required budget, split spend across channels, funnel stages, and campaign types, build a ramp-up timeline, set KPI targets per channel, and prepare a contingency plan. Trigger on 'media plan', 'ads plan', 'paid media budget', 'budget allocation', 'how much should I spend on ads', 'channel mix', or 'plan a campaign budget'.
.claude/skills/minhnv0807-54-media-plan-global/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-02 | ✗→✓ | ▲ Improved | 37% | 0% |
| case-07 | ✗→✓ | ▲ Improved | 83% | 0% |
| case-08 | ✗→✓ | ▲ Improved | 166% | 0% |
| case-14 | ✗→✓ | ▲ Improved | 79% | 0% |
| case-16 | ✗→✓ | ▲ Improved | 130% | 0% |
A plan without hard numbers cannot tell you whether you are winning. Every figure in the plan must trace back to a revenue target. Run 10-reverse-kpi-global for max CPA and required budget before allocating anything.
Read .agents/product-marketing-context-global.md plus any output from 51-audience-research-global and 10-reverse-kpi-global. If information is missing, ask up to 4 questions:
references/benchmarks-global.md, Tier 1 (US, Canada, Australia, Western EU) costs 6-7x Tier 2 (SEA, LATAM). A campaign profitable at 3x ROAS in a Tier 2 market may need 5-7x in the US for the same unit economics. Plan and report per market.10-reverse-kpi-global)Target revenue / AOV = Orders needed
Orders / close rate = Leads needed
Max CPA = (Revenue x gross margin %) / Leads needed
Break-even ROAS = 1 / gross margin %
Target ROAS = Break-even ROAS x 1.5
Required ad budget = Leads needed x target CPAThese must exist before step 2: leads needed, max CPA, target CPA, required budget, target ROAS. Build three scenarios (pessimistic / base / optimistic) and plan against base.
Sanity-check the result against references/benchmarks-global.md: global Meta medians are CPA $18-38 and ROAS 1.93-2.79. Healthy ROAS rule of thumb is 3x at roughly 30% gross margin, 5x+ for commodity margins, and 1.5x can work for high-margin digital products. If your required CPA sits far below the bottom quartile for your industry and market tier, the plan is not achievable as written.
Set the expected cost floor per market before allocating budget:
| Market tier | Examples | Meta CPM | Meta CPC | |-------------|----------|---------:|---------:| | Tier 1 premium | United States | $15-25 | $1.40-1.85 | | Tier 1 | Canada, Australia, UK | $10-22 | $1.10-1.80 | | Tier 1 Western EU | Germany and Western EU, Japan | $5-15 | $0.90-1.50 | | Tier 2 SEA lead | Singapore | $6-12 | $0.70-1.20 | | Tier 2 | Thailand, Malaysia, Indonesia, Philippines | $2-7 | $0.20-0.80 | | Tier 2 LATAM | Brazil and Latin America | $2-6 | $0.30-0.70 |
Full table in references/benchmarks-global.md. Never blend Tier 1 and Tier 2 into one reported CPA — the average describes no real campaign.
| Period | Median CPM | vs average | |--------|-----------:|-----------:| | January | $15.74 | -21% | | Q1 average | $18.29 | baseline | | Q2-Q3 | $18-21 | rising | | October | $22 | +10% | | November (peak) | $25.22 | +27% | | December | $22.04 | +11% | | Q4 average | $22.98 | +26% above Q1 |
Planning implications: front-load acquisition into Q1 if cash flow allows; reserve at least 30% more budget for the same volume in Q4, or shift brand spend into Q3. In US election years, political spend displaces commercial inventory and adds roughly 20-40% to CPM in the last 30 days before the vote.
| Channel | % Budget | Amount | Objective | Primary KPI | |---------|---------|--------|-----------|-------------| | Meta | %] | amount] | Lead/Conversion] | CPA, CTR, ROAS | | Google Search | %] | amount] | High intent capture | CPA, conversion rate | | TikTok | %] | amount] | Video-first prospecting | CPA, view rate | | YouTube | %] | amount] | Awareness, consideration | CPM, view rate | | Pinterest | %] | amount] | Discovery for home/fashion/DIY | CPA, saves | | LinkedIn | %] | amount] | B2B targeting | CPL, MQL rate | | Total | 100% | | | |
Starting archetypes, to be adjusted by real data:
Rule: a channel with proven performance takes 60-70%; a new channel gets a 15-20% test allocation. Do not spread evenly across channels you have never run.
LinkedIn changes the math for B2B. At $30-100+ CPM versus Meta's $13-20, LinkedIn costs roughly 2-5x more per impression. It is often still correct for B2B because the targeting precision and deal size justify it — but B2B/SaaS CPL benchmarks are $80-300, so validate against LTV in 10-reverse-kpi-global before committing more than a test budget.
| Stage | % Budget | Audience | Creative | Primary KPI | |-------|---------|----------|----------|-------------| | TOFU — awareness/traffic | 30-40% | Cold: broad, interest, lookalike | Strong hook, educate, entertain | CPM, CTR (Meta median 1.57-2.19%) | | MOFU — lead gen | 35-45% | Warm engagers 7-30 days plus filtered cold | Educate plus offer, solution proof | CPA, lead quality | | BOFU — conversion/retargeting | 15-25% | Hot: page visits, carts, open conversations 1-7 days | Urgency, proof, testimonial | CPA, ROAS |
| Campaign type | % Budget | Purpose | |---------------|---------|---------| | Testing (cold, find winners) | 30% | New creative and audience | | Scaling (proven winner) | 50% | Main volume | | Retargeting | 15% | Convert warm and hot | | Lookalike | 5% | Open new pools from quality seeds |
The funnel view and the campaign-type view must reconcile to the same total. Use this table as the source for cutting campaigns in 52-account-structure-global.
Express ramp in percentage of the period budget and in multiples of the learning-phase floor, not in fixed amounts — the same plan must work in a $15 CPM market and a $3 CPM market.
| Week | Stage | % of period budget | Focus | Checkpoint | |------|-------|-------------------:|-------|------------| | 1-2 | Testing | ~30% | 3-5 ad sets, 2-3 creatives each | Pause any ad set above 2x target CPA after 3 days | | 3-4 | Scaling | ~50% | Scale winners +20-30% per step, never double | CPA stable, volume rising | | 5+ | Maintaining | ~70% steady state | Refresh creative, continuous small tests | Frequency below 2.5, ROAS at or above target |
Every ad set must clear the learning floor derived in 52-account-structure-global: (50 events x target CPA) / 7. Ramp only when the previous step held CPA.
| Channel | CPM expectation | CTR target | CPA target | ROAS target | |---------|-----------------|-----------|-----------|-------------| | Meta | $13-20 global median; adjust to market tier | >= 1.6% (median band 1.57-2.19%); below 0.9% is bottom quartile | from step 1] | from step 1]; global median 1.93-2.79 | | TikTok | $5-15 | Use account history — no global median in the repo benchmark file | from step 1] | from step 1] | | Google Search | CPC $1-2 broad, $5-50+ on commercial intent | Use account history | from step 1] | from step 1] | | YouTube | $9-30 | Use view rate instead | from step 1] | from step 1] | | Pinterest | $5-15 | Use account history | from step 1] | from step 1] | | LinkedIn | $30-100+ | Use account history | CPL $80-300 typical for B2B/SaaS | Measure on pipeline, not on ROAS |
Weekly decision rules, expressed relative to the target CPA so they hold in any currency:
| Actual CPA | Frequency | Action | |-----------|-----------|--------| | Below target | < 2.0 | WIN — scale +20-30% | | 100-125% of target | < 2.0 | Acceptable — monitor | | 125-150% of target | 2.0-2.5 | Optimize — change creative | | Above 150% of target | > 2.5 | PAUSE — replace or stop |
| Situation | Signal | Action | |-----------|--------|--------| | CPA above 2x target | After 3 days | Pause the ad set, launch new creative | | CTR far below the median band | Day 1-2 | Change creative or hook immediately | | Frequency above 3 | Week 2+ | Refresh creative, widen the audience | | Underspending | Pace below 80% of plan | Widen audience, raise bid cap, check for rejected ads | | CPM spikes | Seasonal peak or auction pressure | Reduce budget temporarily, shift to a cheaper market or channel | | Q4 or election-period cost jump | CPM up 25%+ vs Q1 | Trigger the pessimistic scenario budget from step 1 |
File name: media-plan-[product]-[YYYYMMDD].md
markdown# Media Plan — [Product/Campaign] Timeline: [dates] · Total budget: [amount] · Markets: [list] · Objective: [Lead/Conversion] ## 1. Campaign overview [offer, timeline, budget, headline KPIs] ## 2. Reverse-calculated KPIs [three scenarios from 10-reverse-kpi-global] ## 3. Market cost baseline [tier, CPM/CPC expectation per market] ## 4. Seasonality adjustment [period, expected CPM shift, budget effect] ## 5. Channel allocation [% + amount + objective + KPI] ## 6. Funnel allocation [TOFU/MOFU/BOFU] ## 7. Campaign-type split [Testing 30 / Scale 50 / Retarget 15 / Lookalike 5] ## 8. Ramp-up timeline [week, % of budget, focus, checkpoint] ## 9. KPI targets and decision rules ## 10. Contingency plan
10-reverse-kpi-global: mandatory first step — max CPA, budget, target ROAS.61-budget-planning-global: places this media budget inside the wider marketing budget.51-audience-research-global: audiences for each funnel stage.53-tracking-setup-global: verify tracking green before any spend.52-account-structure-global: turn this plan into campaign structure.57-next-ads-plan-global: next period's plan is built from this period's results.references/benchmarks-global.md; repo file wins on any conflict| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-05 | fail→fail | 26,153 | 27,850 | +6% | 1 | 1 | 0% | 4,404 | 8,222 | +87% | 0 | 0 | — |
case-01 | fail→fail | 43,991 | 43,589 | -1% | 1 | 1 | 0% | 8,393 | 11,164 | +33% | 0 | 0 | — |
case-02 | fail→pass | 49,079 | 46,039 | -6% | 1 | 1 | 0% | 8,390 | 11,455 | +37% | 0 | 0 | — |
case-03 | fail→fail | 42,827 | 27,541 | -36% | 1 | 1 | 0% | 8,421 | 9,164 | +9% | 0 | 0 | — |
case-04 | fail→fail | 22,634 | 17,744 | -22% | 1 | 1 | 0% | 4,241 | 6,867 | +62% | 0 | 0 | — |
case-06 | fail→fail | 19,619 | 21,630 | +10% | 1 | 1 | 0% | 3,738 | 7,265 | +94% | 0 | 0 | — |
case-07 | fail→pass | 15,748 | 11,675 | -26% | 1 | 1 | 0% | 3,109 | 5,681 | +83% | 0 | 0 | — |
case-08 | fail→pass | 14,206 | 17,956 | +26% | 1 | 1 | 0% | 2,367 | 6,307 | +166% | 0 | 0 | — |
case-09 | fail→fail | 15,046 | 16,730 | +11% | 1 | 1 | 0% | 2,481 | 6,228 | +151% | 0 | 0 | — |
case-10 | pass→pass | 16,918 | 9,654 | -43% | 1 | 1 | 0% | 2,618 | 5,219 | +99% | 0 | 0 | — |
case-11 | fail→fail | 15,209 | 15,125 | -1% | 1 | 1 | 0% | 2,455 | 5,970 | +143% | 0 | 0 | — |
case-12 | fail→fail | 13,122 | 11,350 | -14% | 1 | 1 | 0% | 2,220 | 5,365 | +142% | 0 | 0 | — |
case-13 | fail→fail | 13,776 | 16,173 | +17% | 1 | 1 | 0% | 2,310 | 6,378 | +176% | 0 | 0 | — |
case-14 | fail→pass | 13,226 | 4,506 | -66% | 1 | 1 | 0% | 2,396 | 4,287 | +79% | 0 | 0 | — |
case-15 | fail→fail | 17,849 | 15,354 | -14% | 1 | 1 | 0% | 3,452 | 6,316 | +83% | 0 | 0 | — |
case-16 | fail→pass | 13,760 | 12,283 | -11% | 1 | 1 | 0% | 2,538 | 5,845 | +130% | 0 | 0 | — |
case-17 | fail→pass | 13,532 | 15,138 | +12% | 1 | 1 | 0% | 2,232 | 5,787 | +159% | 0 | 0 | — |
case-18 | pass→pass | 13,433 | 8,941 | -33% | 1 | 1 | 0% | 2,073 | 4,902 | +136% | 0 | 0 | — |
case-19 | pass→pass | 14,564 | 10,451 | -28% | 1 | 1 | 0% | 2,600 | 5,364 | +106% | 0 | 0 | — |
case-20 | pass→pass | 11,270 | 4,411 | -61% | 1 | 1 | 0% | 1,741 | 4,194 | +141% | 0 | 0 | — |
case-21 | pass→pass | 15,679 | 13,332 | -15% | 1 | 1 | 0% | 2,467 | 5,574 | +126% | 0 | 0 | — |
case-22 | fail→fail | 18,325 | 13,462 | -27% | 1 | 1 | 0% | 2,518 | 5,747 | +128% | 0 | 0 | — |
case-23 | fail→fail | 16,440 | 11,581 | -30% | 1 | 1 | 0% | 2,568 | 5,364 | +109% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 23 cases were attempted. The headline lift of +26 percentage points is the difference between those two pass rates over the 23 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.