guia-matthieu/ad-spend-optimizer
Analyze paid advertising performance across channels and recommend budget reallocation to maximize ROAS and minimize CAC. Use when: planning quarterly ad budget allocation, diagnosing underperforming ad channels, deciding whether to scale spend on a channel, calculating marginal ROI across Google Ads, Meta, LinkedIn, or TikTok, rebalancing media mix after performance shifts, or setting up a test-and-scale framework for new channels.
npx skills add https://github.com/guia-matthieu/clawfu-skills --skill ad-spend-optimizer
> Analyze paid advertising performance across channels and recommend budget reallocation to maximize ROAS and minimize CAC.
| Aspect | Details |
|--------|---------|
| Source | Marginal ROI optimization + portfolio theory for marketing |
| Core Principle | Allocate each dollar where the marginal return is highest — shift spend from diminishing-returns channels to underspent ones |
| Framework | 70/20/10 — 70% proven channels, 20% optimization tests, 10% new channel experiments |
| Claude Does | You Decide |
|-------------|------------|
| Calculates ROAS, CAC, and CPL per channel and campaign | Total budget constraints |
| Identifies diminishing returns and reallocation opportunities | Risk tolerance for new channels |
| Models projected outcomes for different allocation scenarios | Business priorities and brand considerations |
| Creates monitoring dashboards and alert thresholds | Platform selection and creative direction |
Collect these metrics per channel and campaign:
| Metric | Formula | Healthy Range |
|--------|---------|---------------|
| ROAS | Revenue ÷ Ad Spend | >3:1 for most B2B/B2C |
| CAC | Ad Spend ÷ New Customers | <LTV ÷ 3 |
| CPL | Ad Spend ÷ Leads | Varies by industry |
| CTR | Clicks ÷ Impressions | >1% search, >0.5% social |
| Conv Rate | Conversions ÷ Clicks | >2% landing pages |
Validation checkpoint: If data is missing for any channel, flag it — incomplete data leads to wrong reallocations.
Choose the model that matches the business:
| Model | Best For | Trade-off |
|-------|----------|-----------|
| Last Click | Direct response, short cycles | Ignores awareness |
| First Click | Awareness campaigns | Ignores conversion assist |
| Linear | Balanced multi-touch view | Dilutes signal |
| Time Decay | Shorter sales cycles | Biases toward bottom-funnel |
| Position-Based | Balanced with emphasis | May miss mid-funnel |
| Data-Driven | Sophisticated, enough data | Requires volume |
For each channel, answer: Where does the next $1 produce the most return?
| Signal | Meaning | Action |
|--------|---------|--------|
| CAC well below target | Headroom to scale | Increase spend 50%, monitor weekly |
| CAC at target | Optimized | Maintain, test creative |
| CAC above target | Diminishing returns | Reduce spend, reallocate |
| Low volume, good CAC | Underinvested | Scale cautiously (2x) |
| High volume, rising CAC | Hitting ceiling | Cap spend, diversify |
Build 3 scenarios (conservative, moderate, aggressive) showing projected leads, CAC, and ROAS at each budget level. Include:
Weekly monitoring checklist:
Scaling rule: If CAC stays 15%+ below target for 2 consecutive weeks, increase spend by 25%. If CAC exceeds target for 2 weeks, reduce by 25%.
Input: $100K/month — Google ($50K), Meta ($30K), LinkedIn ($15K), Other ($5K). Target: $200 CAC, 500 leads/month. Current: 395 leads, $253 CAC.
Diagnosis:
Proposed reallocation:
| Channel | Current | Proposed | Expected CAC |
|---------|---------|----------|-------------|
| Google Ads | $50K | $35K | $206 |
| Meta | $30K | $50K | $196 |
| LinkedIn | $15K | $8K | $286 |
| Testing | $5K | $7K | Variable |
Projected result: 473 leads (+20%), $211 CAC (-17%).
google-ads-expert — Google-specific campaign optimizationaarrr-metrics — Full funnel view beyond paid acquisitiongrowth-loops — Sustainable growth beyond paid channelsTake guia-matthieu/ad-spend-optimizer from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.