Ad Campaign Analyzer
Ad campaign analyzer

Analyze ad campaign performance data (Google, Meta, LinkedIn) to identify what's working, what's wasting budget, and specific cut/scale/test recommendations. Runs statistical analysis, funnel diagnostics, and multi-channel budget…
--- name: ad-campaign-analyzer description: > Analyze ad campaign performance data (Google, Meta, LinkedIn) to identify what's working, what's wasting budget, and specific cut/scale/test recommendations. Runs statistical analysis, funnel diagnostics, and multi-channel budget reallocation with specific dollar-amount shift recommendations and scenario modeling. tags: [ads] --- # Ad Campaign Analyzer Take raw campaign performance data and turn it into clear decisions. This skill doesn't just summarize metrics — it diagnoses problems, identifies winners, checks statistical significance, and tells you exactly what to cut, scale, and test next. Then it goes further: it compares channels on equal terms, finds where you're over-spending vs under-spending relative to results, and produces a concrete budget reallocation plan. **Core principle:** Most startup founders check their ad dashboard, see a ROAS number, and either panic or celebrate. This skill gives you the nuanced analysis a paid media specialist would: what's actually significant, what's noise, and where your next dollar should go. It also solves the allocation problem — most startups either spread budget too thin across channels (no channel gets enough to learn) or dump everything into one channel (missing cheaper opportunities elsewhere). ## When to Use
Overview
Take raw campaign performance data and turn it into clear decisions. This skill doesn't just summarize metrics — it diagnoses problems, identifies winners, checks statistical significance, and tells you exactly what to cut, scale, and test next. Then it goes further: it compares channels on equal terms, finds where you're over-spending vs under-spending relative to results, and produces a concrete budget reallocation plan.
Manual install (npx, ZIP)
npx skills add gooseworks-ai/goose-skills --skill ad-campaign-analyzer -g -a claude-codemkdir -p ~/.claude/skills && curl -sL https://codeload.github.com/gooseworks-ai/goose-skills/tar.gz/615c685f34f8 \
| tar -xz -C ~/.claude/skills --strip-components=4 goose-skills-615c685f34f8/skills/ads/composites/ad-campaign-analyzerNew-Item -ItemType Directory -Force "$HOME\.claude\skills" | Out-Null; Invoke-WebRequest "https://m.agentalley.io/zip/c2781319f8e3db1f8a38/ad-campaign-analyzer.zip" -OutFile "$env:TEMP\ad-campaign-analyzer.zip"; Expand-Archive "$env:TEMP\ad-campaign-analyzer.zip" -DestinationPath "$HOME\.claude\skills" -ForceConnects with Agent Alley MCP · agentalley.io/mcp
Files included
SKILL.md13.3 KBskill.meta.json495 B
Read the files here
gooseworks-ai/
Show the full text361 lines
Ad Campaign Analyzer
Take raw campaign performance data and turn it into clear decisions. This skill doesn't just summarize metrics — it diagnoses problems, identifies winners, checks statistical significance, and tells you exactly what to cut, scale, and test next. Then it goes further: it compares channels on equal terms, finds where you're over-spending vs under-spending relative to results, and produces a concrete budget reallocation plan.
Core principle: Most startup founders check their ad dashboard, see a ROAS number, and either panic or celebrate. This skill gives you the nuanced analysis a paid media specialist would: what's actually significant, what's noise, and where your next dollar should go. It also solves the allocation problem — most startups either spread budget too thin across channels (no channel gets enough to learn) or dump everything into one channel (missing cheaper opportunities elsewhere).
When to Use
- "Analyze my Google Ads performance"
- "Which ads should I kill?"
- "Is this campaign working?"
- "Where am I wasting ad spend?"
- "Optimize my Meta Ads"
- "How should I split my ad budget?"
- "Should I spend more on Google or Meta?"
- "Reallocate my ad spend across channels"
- "Where am I getting the best return?"
- "I have $X/month for ads — how should I distribute it?"
Phase 0: Intake
- Campaign data — One of:
- CSV export from Google Ads / Meta Ads Manager / LinkedIn Campaign Manager
- Pasted performance table
- Screenshots of dashboard (we'll extract the data)
- Platform(s) — Google / Meta / LinkedIn / All
- Time period — What date range does this cover?
- Monthly budget — Total ad spend in this period
- Primary goal — What conversion are you optimizing for? (Demos / Trials / Purchases / Leads)
- Target metrics — Do you have target CPA or ROAS? (If not, we'll benchmark)
- Any known changes? — Did you change creative, budget, or targeting during this period?
- Channels currently running — Google Ads, Meta Ads, LinkedIn Ads, Twitter/X Ads, TikTok Ads, other
- Funnel data (if available):
- Lead → MQL rate
- MQL → SQL rate
- SQL → Close rate
- Average deal size
- Channels you're considering but haven't tried — Want to test new channels?
- Constraints — Minimum spend on any channel? Platform you must stay on?
Phase 1: Data Ingestion & Normalization
Accepted Data Formats
| Source | Key Columns Expected |
|---|---|
| Google Ads | Campaign, Ad Group, Keyword, Impressions, Clicks, CTR, CPC, Conversions, Conv Rate, Cost, Conv Value |
| Meta Ads | Campaign, Ad Set, Ad, Impressions, Reach, Clicks, CTR, CPC, Conversions, Cost Per Result, Amount Spent, ROAS |
| LinkedIn Ads | Campaign, Impressions, Clicks, CTR, CPC, Conversions, Cost, Leads |
Normalize all data into a standard analysis format:
| Dimension | Impressions | Clicks | CTR | CPC | Conversions | Conv Rate | CPA | Spend | Revenue/Value |
|---|
Multi-Channel Normalization
When data spans multiple channels, also produce a channel-level rollup:
| Channel | Monthly Spend | Impressions | Clicks | CTR | CPC | Conversions | Conv Rate | CPA | ROAS | CAC* |
|---|---|---|---|---|---|---|---|---|---|---|
| Google Search | $[X] | [N] | [N] | [X%] | $[X] | [N] | [X%] | $[X] | [X] | $[X] |
| Google Display | ... | |||||||||
| Meta (FB/IG) | ... | |||||||||
| ... | ||||||||||
| [Other] | ... | |||||||||
| Total | $[X] | [N] | $[X] avg | [X] avg | $[X] avg |
*CAC = Full customer acquisition cost if funnel data provided (CPA × close-rate adjustment)
Funnel-Adjusted CAC (If Funnel Data Available)
Channel CAC = CPA ÷ (MQL rate × SQL rate × Close rate)
This reveals which channels produce leads that actually close, not just convert.
Phase 2: Performance Diagnostics
2A: Campaign-Level Health Check
For each campaign:
| Metric | Value | Benchmark | Status |
|---|---|---|---|
| CTR | [X%] | [Industry avg] | [Good/Okay/Poor] |
| CPC | $[X] | [Category avg] | [Good/Okay/Poor] |
| Conv Rate | [X%] | [Benchmark] | [Good/Okay/Poor] |
| CPA | $[X] | [Target or benchmark] | [Good/Okay/Poor] |
| ROAS | [X] | [Target or benchmark] | [Good/Okay/Poor] |
| Impression Share | [X%] | [>60% ideal] | [Good/Okay/Poor] |
2B: Budget Waste Detection
Identify spend that produced no or negative return:
| Waste Type | Signal | Action |
|---|---|---|
| Zero-conversion keywords/ads | Spend > $[X] with 0 conversions | Pause or add negatives |
| High CPA outliers | CPA > 3x target | Pause or restructure |
| Low CTR ads | CTR < 50% of campaign average | Replace creative |
| Broad match bleed | Search terms report showing irrelevant clicks | Add negative keywords |
| Audience overlap | Same users hit by multiple campaigns | Exclude audiences |
| Dayparting waste | Conversions cluster at certain hours; spend is 24/7 | Set ad schedule |
2C: Winner Identification
Find what's actually working:
| Winner Type | Signal | Action |
|---|---|---|
| Top-performing keywords | Lowest CPA, highest conv rate | Increase bid, add variants |
| Winning ads | Highest CTR + conv rate combo | Scale spend, clone for other groups |
| Best audiences | Lowest CPA segment | Increase budget allocation |
| Best times | Peak conversion hours/days | Concentrate budget |
2D: Statistical Significance Check
For any A/B test (ad variants, audiences, landing pages):
Test: [Variant A] vs [Variant B]
Metric: [Conv Rate / CTR / CPA]
Variant A: [X%] (n=[sample_size])
Variant B: [Y%] (n=[sample_size])
Confidence level: [X%]
Verdict: [Statistically significant / Not enough data / Too close to call]
Recommended action: [Pick winner / Continue test / Increase budget to reach significance]
Minimum sample: 100 clicks per variant for CTR tests, 30 conversions per variant for CPA tests.
Phase 3: Funnel Analysis
Click → Conversion Path
Impressions: [N] (100%)
↓ CTR: [X%]
Clicks: [N] ([X%] of impressions)
↓ Landing page → Conversion: [X%]
Conversions: [N] ([X%] of clicks)
↓ Conversion → Revenue: $[X] avg
Revenue: $[N]
Funnel Drop-Off Diagnosis
| Drop-Off Point | Rate | Benchmark | Likely Cause | Fix |
|---|---|---|---|---|
| Impression → Click | [CTR%] | [Benchmark] | [Ad relevance / targeting] | [Copy/targeting change] |
| Click → Conversion | [Conv%] | [Benchmark] | [Landing page / offer / audience mismatch] | [LP optimization] |
| Conversion → Revenue | [Close%] | [Benchmark] | [Lead quality / sales process] | [Qualification criteria] |
Phase 4: Budget Reallocation
When data spans multiple channels, perform cross-channel budget optimization.
4A: Channel Efficiency Ranking
| Rank | Channel | CPA | Funnel-Adj CAC | Share of Spend | Share of Conversions | Efficiency Index |
|---|---|---|---|---|---|---|
| 1 | [Channel] | $[X] | $[X] | [X%] | [X%] | [Conv share ÷ Spend share] |
Efficiency Index:
- > 1.0 = Under-invested (getting more than its share of conversions)
- = 1.0 = Proportional (fair share)
- < 1.0 = Over-invested (getting less than its share)
4B: Marginal Return Analysis
For each channel, estimate if additional spend would yield proportional returns:
| Channel | Current CPA | Impression Share / Saturation Signal | Marginal Return Estimate |
|---|---|---|---|
| Google Search | $[X] | [X%] impression share — room to grow | Likely positive |
| Meta | $[X] | Frequency [X] — audience may be saturated | Diminishing |
| $[X] | Low volume — limited targeting pool | Ceiling soon |
4C: Funnel Stage Coverage
| Funnel Stage | Channels Covering It | Current Spend | Gap? |
|---|---|---|---|
| Awareness (top) | [Meta Display, YouTube] | $[X] | [Yes/No] |
| Consideration (mid) | [Google Search, Meta retargeting] | $[X] | [Yes/No] |
| Decision (bottom) | [Google Brand, Google Search] | $[X] | [Yes/No] |
| Retargeting | [Meta, Google Display] | $[X] | [Yes/No] |
4D: Budget Shift Recommendations
| Channel | Current Spend | Recommended Spend | Change | Reasoning |
|---|---|---|---|---|
| Google Search | $[X] | $[Y] | +$[Z] | [Lowest CPA, room to scale] |
| Meta | $[X] | $[Y] | -$[Z] | [Audience saturation, frequency too high] |
| $[X] | $[Y] | $0 | [Maintain — niche but valuable] | |
| [New channel] | $0 | $[Y] | +$[Y] | [Test budget — competitors succeeding here] |
| Total | $[X] | $[X] | $0 | Budget-neutral reallocation |
4E: Scenario Modeling
Scenario 1: Conservative shift (+/- 20%)
- Expected conversions: [N] (currently [N]) = [X%] improvement
- Expected blended CPA: $[X] (currently $[X])
- Risk: Low
Scenario 2: Aggressive shift (+/- 40%)
- Expected conversions: [N] = [X%] improvement
- Expected blended CPA: $[X]
- Risk: Medium — less data on scaled channels
Scenario 3: Budget increase to $[Y]/mo
- Recommended allocation: [table]
- Expected conversions: [N]
- New channels to test: [list]
Phase 5: Output Format
# Ad Campaign Analysis — [Product/Client] — [DATE]
Period: [Date range]
Total spend: $[X]
Platform(s): [Google / Meta / LinkedIn]
Primary goal: [Conversions / Revenue / Leads]
---
## Executive Summary
[3-5 sentences: Overall performance verdict, biggest win, biggest problem, top recommendation including any reallocation moves]
---
## Performance Dashboard
| Campaign | Spend | Impressions | Clicks | CTR | CPC | Conversions | CPA | ROAS | Verdict |
|----------|-------|------------|--------|-----|-----|-------------|-----|------|---------|
| [Name] | $[X] | [N] | [N] | [X%] | $[X] | [N] | $[X] | [X] | [Scale/Optimize/Pause] |
---
## Budget Waste Report
**Total estimated waste: $[X] ([X%] of total spend)**
### Wasted on zero-conversion items: $[X]
[List of keywords/ads/audiences with spend but no conversions]
### Wasted on high-CPA items: $[X]
[List of items with CPA > 3x target]
### Recommended saves: $[X]/month
[Specific items to pause]
---
## Winners to Scale
### Top Keywords/Audiences
| Item | CPA | Conv Rate | Current Spend | Recommended Spend |
|------|-----|----------|--------------|-------------------|
### Top Ads
| Ad | CTR | Conv Rate | Why It Works |
|----|-----|----------|-------------|
---
## A/B Test Results
### [Test Name]
- Variant A: [Metric] (n=[N])
- Variant B: [Metric] (n=[N])
- Confidence: [X%]
- **Verdict:** [Winner / Continue / Inconclusive]
---
## Budget Reallocation
### Current vs Recommended Allocation
| Channel | Current | Recommended | Change | Why |
|---------|---------|------------|--------|-----|
| [Channel] | $[X] | $[Y] | [+/-$Z] | [1-line reason] |
**Projected impact:**
- Conversions: [N] → [N] (+[X%])
- Blended CPA: $[X] → $[Y] (-[X%])
### Funnel Stage Coverage
[Coverage map with gaps identified]
### New Channel Recommendations
#### [Channel Name]
- **Why test:** [Reasoning]
- **Recommended test budget:** $[X]/mo for [X weeks]
- **Success criteria:** CPA < $[X]
- **Competitors using it:** [Yes/No — who]
---
## Action Plan
### Immediate (This Week)
- [ ] **Pause:** [Specific items — keywords, ads, audiences]
- [ ] **Scale:** [Specific items — increase budget/bids]
- [ ] **Add negatives:** [Specific keywords from search terms]
- [ ] **Reallocate:** [Specific dollar shifts between channels]
### This Month
- [ ] **Test:** [New ad angles / audiences / landing pages]
- [ ] **Restructure:** [Ad groups that need splitting or merging]
- [ ] **Optimize:** [Bid strategy changes]
- [ ] **Monitor reallocation:** Track CPA shifts on scaled channels, watch for diminishing returns
### Next Month
- [ ] **Expand:** [New campaigns / channels to test]
- [ ] **Re-evaluate:** [Run this analysis again with new data, adjust allocations based on actual results]
Save to campaign-analysis-[YYYY-MM-DD].md in the current working directory (or user-specified path).
Cost
| Component | Cost |
|---|---|
| Data analysis | Free (LLM reasoning) |
| Statistical calculations | Free |
| Total | Free |
Tools Required
- No external tools needed — pure reasoning skill
- User provides campaign data as CSV, paste, or screenshot
Trigger Phrases
- "Analyze my ad campaign performance"
- "Which ads should I pause?"
- "Where am I wasting ad budget?"
- "Is my Google Ads campaign working?"
- "Optimize my Meta Ads spend"
- "How should I allocate my ad budget?"
- "Should I spend more on Google or Meta?"
- "Reallocate my ad spend"
- "Where am I getting the best ROAS?"
- "Optimize my multi-channel ad budget"
| 1 | |
| 2 | name ad-campaign-analyzer |
| 3 | description > |
| 4 | Analyze ad campaign performance data (Google, Meta, LinkedIn) to identify what's |
| 5 | working, what's wasting budget, and specific cut/scale/test recommendations. Runs |
| 6 | statistical analysis, funnel diagnostics, and multi-channel budget reallocation |
| 7 | with specific dollar-amount shift recommendations and scenario modeling. |
| 8 | tags [ads] |
| 9 | |
| 10 | |
| 11 | # Ad Campaign Analyzer |
| 12 | |
| 13 | Take raw campaign performance data and turn it into clear decisions. This skill doesn't just summarize metrics — it diagnoses problems, identifies winners, checks statistical significance, and tells you exactly what to cut, scale, and test next. Then it goes further: it compares channels on equal terms, finds where you're over-spending vs under-spending relative to results, and produces a concrete budget reallocation plan. |
| 14 | |
| 15 | **Core principle:** Most startup founders check their ad dashboard, see a ROAS number, and either panic or celebrate. This skill gives you the nuanced analysis a paid media specialist would: what's actually significant, what's noise, and where your next dollar should go. It also solves the allocation problem — most startups either spread budget too thin across channels (no channel gets enough to learn) or dump everything into one channel (missing cheaper opportunities elsewhere). |
| 16 | |
| 17 | ## When to Use |
| 18 | |
| 19 | "Analyze my Google Ads performance" |
| 20 | "Which ads should I kill?" |
| 21 | "Is this campaign working?" |
| 22 | "Where am I wasting ad spend?" |
| 23 | "Optimize my Meta Ads" |
| 24 | "How should I split my ad budget?" |
| 25 | "Should I spend more on Google or Meta?" |
| 26 | "Reallocate my ad spend across channels" |
| 27 | "Where am I getting the best return?" |
| 28 | "I have $X/month for ads — how should I distribute it?" |
| 29 | |
| 30 | ## Phase 0: Intake |
| 31 | |
| 32 | **Campaign data** — One of: |
| 33 | CSV export from Google Ads / Meta Ads Manager / LinkedIn Campaign Manager |
| 34 | Pasted performance table |
| 35 | Screenshots of dashboard (we'll extract the data) |
| 36 | **Platform(s)** — Google / Meta / LinkedIn / All |
| 37 | **Time period** — What date range does this cover? |
| 38 | **Monthly budget** — Total ad spend in this period |
| 39 | **Primary goal** — What conversion are you optimizing for? (Demos / Trials / Purchases / Leads) |
| 40 | **Target metrics** — Do you have target CPA or ROAS? (If not, we'll benchmark) |
| 41 | **Any known changes?** — Did you change creative, budget, or targeting during this period? |
| 42 | **Channels currently running** — Google Ads, Meta Ads, LinkedIn Ads, Twitter/X Ads, TikTok Ads, other |
| 43 | **Funnel data** (if available): |
| 44 | Lead → MQL rate |
| 45 | MQL → SQL rate |
| 46 | SQL → Close rate |
| 47 | Average deal size |
| 48 | **Channels you're considering but haven't tried** — Want to test new channels? |
| 49 | **Constraints** — Minimum spend on any channel? Platform you must stay on? |
| 50 | |
| 51 | ## Phase 1: Data Ingestion & Normalization |
| 52 | |
| 53 | ### Accepted Data Formats |
| 54 | |
| 55 | | Source | Key Columns Expected | |
| 56 | |--------|---------------------| |
| 57 | | **Google Ads** | Campaign, Ad Group, Keyword, Impressions, Clicks, CTR, CPC, Conversions, Conv Rate, Cost, Conv Value | |
| 58 | | **Meta Ads** | Campaign, Ad Set, Ad, Impressions, Reach, Clicks, CTR, CPC, Conversions, Cost Per Result, Amount Spent, ROAS | |
| 59 | | **LinkedIn Ads** | Campaign, Impressions, Clicks, CTR, CPC, Conversions, Cost, Leads | |
| 60 | |
| 61 | Normalize all data into a standard analysis format: |
| 62 | |
| 63 | | Dimension | Impressions | Clicks | CTR | CPC | Conversions | Conv Rate | CPA | Spend | Revenue/Value | |
| 64 | |-----------|------------|--------|-----|-----|-------------|----------|-----|-------|--------------| |
| 65 | |
| 66 | ### Multi-Channel Normalization |
| 67 | |
| 68 | When data spans multiple channels, also produce a channel-level rollup: |
| 69 | |
| 70 | | Channel | Monthly Spend | Impressions | Clicks | CTR | CPC | Conversions | Conv Rate | CPA | ROAS | CAC* | |
| 71 | |---------|-------------|------------|--------|-----|-----|-------------|----------|-----|------|------| |
| 72 | | Google Search | $[X] | [N] | [N] | [X%] | $[X] | [N] | [X%] | $[X] | [X] | $[X] | |
| 73 | | Google Display | ... | | | | | | | | | | |
| 74 | | Meta (FB/IG) | ... | | | | | | | | | | |
| 75 | | LinkedIn | ... | | | | | | | | | | |
| 76 | | [Other] | ... | | | | | | | | | | |
| 77 | | **Total** | $[X] | | | | | [N] | | $[X] avg | [X] avg | $[X] avg | |
| 78 | |
| 79 | *CAC = Full customer acquisition cost if funnel data provided (CPA × close-rate adjustment) |
| 80 | |
| 81 | ### Funnel-Adjusted CAC (If Funnel Data Available) |
| 82 | |
| 83 | |
| 84 | Channel CAC = CPA ÷ (MQL rate × SQL rate × Close rate) |
| 85 | |
| 86 | |
| 87 | This reveals which channels produce leads that actually close, not just convert. |
| 88 | |
| 89 | ## Phase 2: Performance Diagnostics |
| 90 | |
| 91 | ### 2A: Campaign-Level Health Check |
| 92 | |
| 93 | For each campaign: |
| 94 | |
| 95 | | Metric | Value | Benchmark | Status | |
| 96 | |--------|-------|-----------|--------| |
| 97 | | CTR | [X%] | [Industry avg] | [Good/Okay/Poor] | |
| 98 | | CPC | $[X] | [Category avg] | [Good/Okay/Poor] | |
| 99 | | Conv Rate | [X%] | [Benchmark] | [Good/Okay/Poor] | |
| 100 | | CPA | $[X] | [Target or benchmark] | [Good/Okay/Poor] | |
| 101 | | ROAS | [X] | [Target or benchmark] | [Good/Okay/Poor] | |
| 102 | | Impression Share | [X%] | [>60% ideal] | [Good/Okay/Poor] | |
| 103 | |
| 104 | ### 2B: Budget Waste Detection |
| 105 | |
| 106 | Identify spend that produced no or negative return: |
| 107 | |
| 108 | | Waste Type | Signal | Action | |
| 109 | |-----------|--------|--------| |
| 110 | | **Zero-conversion keywords/ads** | Spend > $[X] with 0 conversions | Pause or add negatives | |
| 111 | | **High CPA outliers** | CPA > 3x target | Pause or restructure | |
| 112 | | **Low CTR ads** | CTR < 50% of campaign average | Replace creative | |
| 113 | | **Broad match bleed** | Search terms report showing irrelevant clicks | Add negative keywords | |
| 114 | | **Audience overlap** | Same users hit by multiple campaigns | Exclude audiences | |
| 115 | | **Dayparting waste** | Conversions cluster at certain hours; spend is 24/7 | Set ad schedule | |
| 116 | |
| 117 | ### 2C: Winner Identification |
| 118 | |
| 119 | Find what's actually working: |
| 120 | |
| 121 | | Winner Type | Signal | Action | |
| 122 | |------------|--------|--------| |
| 123 | | **Top-performing keywords** | Lowest CPA, highest conv rate | Increase bid, add variants | |
| 124 | | **Winning ads** | Highest CTR + conv rate combo | Scale spend, clone for other groups | |
| 125 | | **Best audiences** | Lowest CPA segment | Increase budget allocation | |
| 126 | | **Best times** | Peak conversion hours/days | Concentrate budget | |
| 127 | |
| 128 | ### 2D: Statistical Significance Check |
| 129 | |
| 130 | For any A/B test (ad variants, audiences, landing pages): |
| 131 | |
| 132 | |
| 133 | Test: [Variant A] vs [Variant B] |
| 134 | Metric: [Conv Rate / CTR / CPA] |
| 135 | Variant A: [X%] (n=[sample_size]) |
| 136 | Variant B: [Y%] (n=[sample_size]) |
| 137 | Confidence level: [X%] |
| 138 | Verdict: [Statistically significant / Not enough data / Too close to call] |
| 139 | Recommended action: [Pick winner / Continue test / Increase budget to reach significance] |
| 140 | |
| 141 | |
| 142 | Minimum sample: 100 clicks per variant for CTR tests, 30 conversions per variant for CPA tests. |
| 143 | |
| 144 | ## Phase 3: Funnel Analysis |
| 145 | |
| 146 | ### Click → Conversion Path |
| 147 | |
| 148 | |
| 149 | Impressions: [N] (100%) |
| 150 | ↓ CTR: [X%] |
| 151 | Clicks: [N] ([X%] of impressions) |
| 152 | ↓ Landing page → Conversion: [X%] |
| 153 | Conversions: [N] ([X%] of clicks) |
| 154 | ↓ Conversion → Revenue: $[X] avg |
| 155 | Revenue: $[N] |
| 156 | |
| 157 | |
| 158 | ### Funnel Drop-Off Diagnosis |
| 159 | |
| 160 | | Drop-Off Point | Rate | Benchmark | Likely Cause | Fix | |
| 161 | |----------------|------|-----------|-------------|-----| |
| 162 | | Impression → Click | [CTR%] | [Benchmark] | [Ad relevance / targeting] | [Copy/targeting change] | |
| 163 | | Click → Conversion | [Conv%] | [Benchmark] | [Landing page / offer / audience mismatch] | [LP optimization] | |
| 164 | | Conversion → Revenue | [Close%] | [Benchmark] | [Lead quality / sales process] | [Qualification criteria] | |
| 165 | |
| 166 | ## Phase 4: Budget Reallocation |
| 167 | |
| 168 | When data spans multiple channels, perform cross-channel budget optimization. |
| 169 | |
| 170 | ### 4A: Channel Efficiency Ranking |
| 171 | |
| 172 | | Rank | Channel | CPA | Funnel-Adj CAC | Share of Spend | Share of Conversions | Efficiency Index | |
| 173 | |------|---------|-----|---------------|----------------|---------------------|-----------------| |
| 174 | | 1 | [Channel] | $[X] | $[X] | [X%] | [X%] | [Conv share ÷ Spend share] | |
| 175 | |
| 176 | **Efficiency Index:** |
| 177 | **> 1.0** = Under-invested (getting more than its share of conversions) |
| 178 | **= 1.0** = Proportional (fair share) |
| 179 | **< 1.0** = Over-invested (getting less than its share) |
| 180 | |
| 181 | ### 4B: Marginal Return Analysis |
| 182 | |
| 183 | For each channel, estimate if additional spend would yield proportional returns: |
| 184 | |
| 185 | | Channel | Current CPA | Impression Share / Saturation Signal | Marginal Return Estimate | |
| 186 | |---------|-------------|-------------------------------------|------------------------| |
| 187 | | Google Search | $[X] | [X%] impression share — room to grow | Likely positive | |
| 188 | | Meta | $[X] | Frequency [X] — audience may be saturated | Diminishing | |
| 189 | | LinkedIn | $[X] | Low volume — limited targeting pool | Ceiling soon | |
| 190 | |
| 191 | ### 4C: Funnel Stage Coverage |
| 192 | |
| 193 | | Funnel Stage | Channels Covering It | Current Spend | Gap? | |
| 194 | |-------------|---------------------|--------------|------| |
| 195 | | **Awareness** (top) | [Meta Display, YouTube] | $[X] | [Yes/No] | |
| 196 | | **Consideration** (mid) | [Google Search, Meta retargeting] | $[X] | [Yes/No] | |
| 197 | | **Decision** (bottom) | [Google Brand, Google Search] | $[X] | [Yes/No] | |
| 198 | | **Retargeting** | [Meta, Google Display] | $[X] | [Yes/No] | |
| 199 | |
| 200 | ### 4D: Budget Shift Recommendations |
| 201 | |
| 202 | | Channel | Current Spend | Recommended Spend | Change | Reasoning | |
| 203 | |---------|-------------|------------------|--------|-----------| |
| 204 | | Google Search | $[X] | $[Y] | +$[Z] | [Lowest CPA, room to scale] | |
| 205 | | Meta | $[X] | $[Y] | -$[Z] | [Audience saturation, frequency too high] | |
| 206 | | LinkedIn | $[X] | $[Y] | $0 | [Maintain — niche but valuable] | |
| 207 | | [New channel] | $0 | $[Y] | +$[Y] | [Test budget — competitors succeeding here] | |
| 208 | | **Total** | $[X] | $[X] | $0 | Budget-neutral reallocation | |
| 209 | |
| 210 | ### 4E: Scenario Modeling |
| 211 | |
| 212 | **Scenario 1: Conservative shift (+/- 20%)** |
| 213 | Expected conversions: [N] (currently [N]) = [X%] improvement |
| 214 | Expected blended CPA: $[X] (currently $[X]) |
| 215 | Risk: Low |
| 216 | |
| 217 | **Scenario 2: Aggressive shift (+/- 40%)** |
| 218 | Expected conversions: [N] = [X%] improvement |
| 219 | Expected blended CPA: $[X] |
| 220 | Risk: Medium — less data on scaled channels |
| 221 | |
| 222 | **Scenario 3: Budget increase to $[Y]/mo** |
| 223 | Recommended allocation: [table] |
| 224 | Expected conversions: [N] |
| 225 | New channels to test: [list] |
| 226 | |
| 227 | ## Phase 5: Output Format |
| 228 | |
| 229 | |
| 230 | # Ad Campaign Analysis — [Product/Client] — [DATE] |
| 231 | |
| 232 | Period: [Date range] |
| 233 | Total spend: $[X] |
| 234 | Platform(s): [Google / Meta / LinkedIn] |
| 235 | Primary goal: [Conversions / Revenue / Leads] |
| 236 | |
| 237 | |
| 238 | |
| 239 | ## Executive Summary |
| 240 | |
| 241 | [3-5 sentences: Overall performance verdict, biggest win, biggest problem, top recommendation including any reallocation moves] |
| 242 | |
| 243 | |
| 244 | |
| 245 | ## Performance Dashboard |
| 246 | |
| 247 | | Campaign | Spend | Impressions | Clicks | CTR | CPC | Conversions | CPA | ROAS | Verdict | |
| 248 | |----------|-------|------------|--------|-----|-----|-------------|-----|------|---------| |
| 249 | | [Name] | $[X] | [N] | [N] | [X%] | $[X] | [N] | $[X] | [X] | [Scale/Optimize/Pause] | |
| 250 | |
| 251 | |
| 252 | |
| 253 | ## Budget Waste Report |
| 254 | |
| 255 | **Total estimated waste: $[X] ([X%] of total spend)** |
| 256 | |
| 257 | ### Wasted on zero-conversion items: $[X] |
| 258 | [List of keywords/ads/audiences with spend but no conversions] |
| 259 | |
| 260 | ### Wasted on high-CPA items: $[X] |
| 261 | [List of items with CPA > 3x target] |
| 262 | |
| 263 | ### Recommended saves: $[X]/month |
| 264 | [Specific items to pause] |
| 265 | |
| 266 | |
| 267 | |
| 268 | ## Winners to Scale |
| 269 | |
| 270 | ### Top Keywords/Audiences |
| 271 | | Item | CPA | Conv Rate | Current Spend | Recommended Spend | |
| 272 | |------|-----|----------|--------------|-------------------| |
| 273 | |
| 274 | ### Top Ads |
| 275 | | Ad | CTR | Conv Rate | Why It Works | |
| 276 | |----|-----|----------|-------------| |
| 277 | |
| 278 | |
| 279 | |
| 280 | ## A/B Test Results |
| 281 | |
| 282 | ### [Test Name] |
| 283 | - Variant A: [Metric] (n=[N]) |
| 284 | - Variant B: [Metric] (n=[N]) |
| 285 | - Confidence: [X%] |
| 286 | - **Verdict:** [Winner / Continue / Inconclusive] |
| 287 | |
| 288 | |
| 289 | |
| 290 | ## Budget Reallocation |
| 291 | |
| 292 | ### Current vs Recommended Allocation |
| 293 | |
| 294 | | Channel | Current | Recommended | Change | Why | |
| 295 | |---------|---------|------------|--------|-----| |
| 296 | | [Channel] | $[X] | $[Y] | [+/-$Z] | [1-line reason] | |
| 297 | |
| 298 | **Projected impact:** |
| 299 | - Conversions: [N] → [N] (+[X%]) |
| 300 | - Blended CPA: $[X] → $[Y] (-[X%]) |
| 301 | |
| 302 | ### Funnel Stage Coverage |
| 303 | [Coverage map with gaps identified] |
| 304 | |
| 305 | ### New Channel Recommendations |
| 306 | |
| 307 | #### [Channel Name] |
| 308 | - **Why test:** [Reasoning] |
| 309 | - **Recommended test budget:** $[X]/mo for [X weeks] |
| 310 | - **Success criteria:** CPA < $[X] |
| 311 | - **Competitors using it:** [Yes/No — who] |
| 312 | |
| 313 | |
| 314 | |
| 315 | ## Action Plan |
| 316 | |
| 317 | ### Immediate (This Week) |
| 318 | - [ ] **Pause:** [Specific items — keywords, ads, audiences] |
| 319 | - [ ] **Scale:** [Specific items — increase budget/bids] |
| 320 | - [ ] **Add negatives:** [Specific keywords from search terms] |
| 321 | - [ ] **Reallocate:** [Specific dollar shifts between channels] |
| 322 | |
| 323 | ### This Month |
| 324 | - [ ] **Test:** [New ad angles / audiences / landing pages] |
| 325 | - [ ] **Restructure:** [Ad groups that need splitting or merging] |
| 326 | - [ ] **Optimize:** [Bid strategy changes] |
| 327 | - [ ] **Monitor reallocation:** Track CPA shifts on scaled channels, watch for diminishing returns |
| 328 | |
| 329 | ### Next Month |
| 330 | - [ ] **Expand:** [New campaigns / channels to test] |
| 331 | - [ ] **Re-evaluate:** [Run this analysis again with new data, adjust allocations based on actual results] |
| 332 | |
| 333 | |
| 334 | Save to `campaign-analysis-[YYYY-MM-DD].md` in the current working directory (or user-specified path). |
| 335 | |
| 336 | ## Cost |
| 337 | |
| 338 | | Component | Cost | |
| 339 | |-----------|------| |
| 340 | | Data analysis | Free (LLM reasoning) | |
| 341 | | Statistical calculations | Free | |
| 342 | | **Total** | **Free** | |
| 343 | |
| 344 | ## Tools Required |
| 345 | |
| 346 | No external tools needed — pure reasoning skill |
| 347 | User provides campaign data as CSV, paste, or screenshot |
| 348 | |
| 349 | ## Trigger Phrases |
| 350 | |
| 351 | "Analyze my ad campaign performance" |
| 352 | "Which ads should I pause?" |
| 353 | "Where am I wasting ad budget?" |
| 354 | "Is my Google Ads campaign working?" |
| 355 | "Optimize my Meta Ads spend" |
| 356 | "How should I allocate my ad budget?" |
| 357 | "Should I spend more on Google or Meta?" |
| 358 | "Reallocate my ad spend" |
| 359 | "Where am I getting the best ROAS?" |
| 360 | "Optimize my multi-channel ad budget" |
| 361 |
Details
- Updated
- Sep 21, 2026
- License
- MIT
- Stars on the repo
- ★ 1,220
- Checked
- Source
- gooseworks-ai/goose-skills ↗
- Creator
- gooseworks-ai · 205 listings
Similar skills
See all →
SkillFounder Unit Economics
SkillFinancial Model Builder
AgentComplex Initiative Manager
SkillCFO Plan Review
SkillFounder Question Router
SkillInvestment AnalyzerMore from gooseworks-ai
SkillAd Angle Miner
SkillLead Quality Analyzer
SkillMessage Match Auditor
SkillAI Search Visibility
SkillAmazon Product Search
SkillAndi Search