Systems Lab

Agent skill

performance-analysis

Analyze outbound campaign performance across every meaningful metric.

dormantSelf-containedInstructions only1,903 words

Filed under Outbound email.

From kenny589/gtm-flywheel · 15 skills · 63 · pushed 2026-02-17

What it does when it runs

Analyze outbound campaign performance across every meaningful metric. Diagnose what's working, what's broken, and exactly where to optimize for higher conversion.

Read from the skill and the 0 files bundled beside it. A skill’s own description is written to be selected by an agent, so it describes the job and not the dependencies.

Keys and connectors you must supply
None found.
Hosts it reaches
No third-party host appears in the skill or its bundled files.
Tool permissions it declares
No allowed-tools in the frontmatter. It only issues instructions, so there is nothing to bound.
Actions present in the files
None. Instructions only.

Ask about performance-analysis

Opens your assistant with this page's verified links already in the prompt.

Is this safe to install?ClaudeChatGPT
Adapt it to my stackClaudeChatGPT
What else do I need for it to workClaudeChatGPT
Rather ask a human? Talk to Cheetah
git clone --depth 1 --filter=blob:none --sparse https://github.com/kenny589/gtm-flywheel.git /tmp/gtm-flywheel
git -C /tmp/gtm-flywheel sparse-checkout set "campaign-analytics/performance-analysis"
mkdir -p ~/.claude/skills/performance-analysis
cp -R "/tmp/gtm-flywheel/campaign-analytics/performance-analysis/." ~/.claude/skills/performance-analysis/

Picked up without a restart. A project skill of the same name is shadowed by your personal one. For one repository only, swap ~/.claude/skills for .claude/skills. Claude Code docs ↗

The folder is the same in every client that implements the format — 46 of them — so if yours is not above, only the destination changes.

Reproduced in full from kenny589/gtm-flywheel/blob/ba67446418663737a00274819dc2bf68c0da2c31/campaign-analytics/performance-analysis/SKILL.md, which is licensed MIT (repository). 1,903 words, 29 headings.

Campaign Performance Analysis

When to Use

  • Reviewing campaign results after a send cycle completes
  • Diagnosing why a campaign is underperforming
  • Comparing campaign variants to identify winners
  • Building performance reports for clients or leadership
  • Making data-driven decisions about what to scale, pause, or kill

Framework

The Campaign Metrics Stack

Measure campaigns in layers. Each layer tells you something different about what's working and what isn't.

Layer 1: Deliverability     → Did the email reach the inbox?
Layer 2: Engagement         → Did they open and read it?
Layer 3: Response           → Did they reply?
Layer 4: Quality            → Was the reply positive?
Layer 5: Conversion         → Did the reply turn into a meeting?
Layer 6: Revenue            → Did the meeting turn into revenue?

Critical insight: Most teams obsess over Layer 2-3 (opens and replies) while ignoring Layer 1 (deliverability) and Layer 4-6 (quality and revenue). The full stack matters.


Layer 1: Deliverability Metrics

MetricTargetRed FlagWhat It Tells You
Bounce rate< 3%> 5%List quality. High bounces = bad data or unverified emails.
Spam complaint rate0%> 0.1%Content or targeting issue. Immediate pause needed.
Inbox placement rate> 95%< 85%Domain/IP reputation. May need warmup or domain rotation.
Unsubscribe rate< 0.5%> 1%Targeting accuracy. Wrong people or too many touches.

If deliverability metrics are off, STOP. Do not optimize copy, subject lines, or targeting until deliverability is fixed. You're optimizing something that never reaches the prospect.

Deliverability Diagnostic

Bounce rate > 5%?
├── YES → Verify email list. Switch to verified-only sends.
└── NO ↓

Inbox placement < 85%?
├── YES → Check domain reputation (Google Postmaster, MXToolbox)
│         → Reduce daily send volume
│         → Rotate sending domains
│         → Review email content for spam triggers
└── NO ↓

Spam complaints > 0?
├── YES → Review targeting. Are you emailing the right people?
│         → Check for spam trigger words in subject/body
│         → Ensure unsubscribe link is visible
└── NO → Deliverability is healthy. Move to Layer 2.

Layer 2: Engagement Metrics

MetricTargetRed FlagWhat It Tells You
Open rate60-80%< 40%Subject line + deliverability + send timing
Open rate by stepDeclining 5-10% per stepDrops > 20% per stepSequence fatigue or deliverability degradation
Unique opensTrack vs. total opensLow unique/high totalSame people reopening, not new engagement

Note on open tracking: Open tracking uses invisible pixels that can hurt deliverability. If you're tracking opens, use it for diagnostic purposes but consider turning it off for production campaigns. Low open rate with high reply rate = your emails are landing but the pixel isn't loading (common with Outlook).

Subject Line Analysis

Subject LineOpen RateSample SizeVerdict
Variant A__%__ sendsWinner / Loser / Inconclusive
Variant B__%__ sendsWinner / Loser / Inconclusive
Variant C__%__ sendsWinner / Loser / Inconclusive

Minimum sample size: 200 sends per variant before drawing conclusions. Below 200, the variance is too high to trust.


Layer 3: Response Metrics

MetricTargetRed FlagWhat It Tells You
Total reply rate8-15%< 5%Copy relevance + offer strength + list quality
Reply rate by stepStep 1: highest, decliningStep 1 < 3%Opening email isn't earning replies
Reply timingMost replies within 24hDelayed replies (3+ days)Email is interesting but not urgent
Auto-reply rateTrack separately> 10%Many OOO or bounced-to-assistant

Reply Rate Diagnostic

Reply rate < 5% overall?
├── Open rate > 60%?
│   ├── YES → Copy problem. Emails are being read but not compelling.
│   │         → Test new body copy variants
│   │         → Test new CTAs
│   │         → Review personalization quality
│   └── NO  → Subject line or deliverability problem.
│             → Fix opens first, then reassess replies.
│
Reply rate > 5% but meetings are low?
├── Most replies are negative ("not interested", "remove me")?
│   ├── YES → Targeting problem. You're reaching the wrong people.
│   │         → Review ICP and list quality
│   └── NO  → Qualification problem. Interested leads aren't converting.
│             → Review your meeting booking process
│             → Improve reply handling speed

Layer 4: Quality Metrics (Most Important)

MetricTargetRed FlagWhat It Tells You
Positive reply rate2-8%< 1%True message-market fit
Negative reply rate< 3%> 5%Targeting accuracy
Referral repliesTrack separatelyValuable — contact the referral
"Not now" repliesTrack separatelyFuture pipeline. Add to nurture.

Reply Classification Framework

Every reply should be classified:

CategoryDefinitionActionExample
Positive: MeetingAgreed to a call/meetingBook immediately (< 1 hour)"Sure, let's chat next week"
Positive: InterestInterested but no commitment yetReply with value, ask for meeting"Tell me more about this"
Positive: ReferralDirected you to someone elseContact the referral, thank the original"Talk to Sarah, she handles this"
Neutral: Not NowTiming issue, not a rejectionAdd to nurture, follow up in 30-60 days"Not a priority right now"
Neutral: OOOOut of office auto-replyRe-send after they return"I'm out until March 1"
Negative: Not InterestedPolite rejectionRespect it. Remove from sequence."Thanks, but we're all set"
Negative: AngryHostile responseRemove immediately. Review targeting."Stop emailing me"
Negative: UnsubscribeRequests removalRemove immediately. Legal requirement."Please remove me from your list"

The ratio that matters most:

Positive Reply Rate = (Positive replies ÷ Total emails sent) × 100

This single metric is the truest measure of campaign effectiveness. It strips out noise (opens, negative replies) and measures real demand generation.


Layer 5: Conversion Metrics

MetricTargetRed FlagWhat It Tells You
Reply-to-meeting rate40-60%< 25%Reply handling quality + qualification
Meeting show rate80-90%< 70%Confirmation process + prospect quality
Meeting-to-opportunity rate30-50%< 20%Discovery call quality + true fit
Cost per meetingVaries by ACVRising over timeCampaign efficiency trending

Layer 6: Revenue Metrics

MetricTargetWhat It Tells You
Pipeline generatedTrack per campaignTotal $ value of opportunities created
Revenue closedTrack per campaignActual revenue attributable to outbound
Cost per opportunityVaries by ACVEfficiency of the outbound motion
CAC (Customer Acquisition Cost)< 1/3 of first-year ACVSustainability of the channel
Time to closeTrack by campaign/segmentWhich campaigns produce faster deals

The Performance Analysis Report

Campaign Summary Card

CAMPAIGN: {{campaign_name}}
Period: {{start_date}} — {{end_date}}
Total sends: {{total_sends}}

DELIVERABILITY
  Bounce rate: __% (target: <3%)
  Spam complaints: __ (target: 0)

ENGAGEMENT
  Open rate: __% (target: 60-80%)

RESPONSE
  Total reply rate: __% (target: 8-15%)
  Positive reply rate: __% (target: 2-8%)
  Negative reply rate: __%

CONVERSION
  Meetings booked: __
  Reply-to-meeting rate: __%
  Cost per meeting: $__

REVENUE
  Pipeline generated: $__
  Revenue closed: $__
  ROI: __x

Variant Comparison Table

| Metric | Variant A | Variant B | Variant C | Winner |
|--------|-----------|-----------|-----------|--------|
| Sends | __ | __ | __ | — |
| Open rate | __% | __% | __% | __ |
| Reply rate | __% | __% | __% | __ |
| Positive reply rate | __% | __% | __% | __ |
| Meetings | __ | __ | __ | __ |

Step Performance Breakdown

| Step | Sends | Opens | Open Rate | Replies | Reply Rate | Positive | Positive Rate |
|------|-------|-------|-----------|---------|------------|----------|---------------|
| 1 | __ | __ | __% | __ | __% | __ | __% |
| 2 | __ | __ | __% | __ | __% | __ | __% |
| 3 | __ | __ | __% | __ | __% | __ | __% |
| 4 | __ | __ | __% | __ | __% | __ | __% |

Decision Framework: Scale, Optimize, or Kill

ScenarioDiagnosisAction
Positive reply rate > 5%Campaign is workingScale: increase volume, clone for new segments
Positive reply rate 2-5%Campaign has potentialOptimize: test new variants, improve personalization
Positive reply rate 1-2%Campaign is marginalDiagnose: is it copy, targeting, or timing? Fix one variable
Positive reply rate < 1%Campaign isn't workingKill: stop sending. Redesign from scratch or abandon the angle

Templates

Weekly Campaign Report Template

# Weekly Campaign Report
# Period: {{week}}

## Summary
- Active campaigns: __
- Total sends this week: __
- Avg positive reply rate: __%
- Meetings booked: __

## Top Performing Campaign
{{campaign_name}} — {{positive_reply_rate}}% positive reply rate

## Underperforming (Action Needed)
{{campaign_name}} — {{issue}} → {{recommended_action}}

## Key Decisions
- Scale: {{campaign_to_scale}}
- Optimize: {{campaign_to_optimize}}
- Kill: {{campaign_to_kill}}

## Next Week Plan
- {{action_1}}
- {{action_2}}

Tips

  • Positive reply rate is the only metric that matters for campaign-level decisions. Everything else (opens, total replies) is diagnostic — useful for understanding WHY, but not for deciding WHAT to do.
  • Always compare apples to apples. A campaign targeting VPs at enterprise companies will have different benchmarks than one targeting founders at SMBs. Segment your analysis.
  • The most common analysis mistake: drawing conclusions from too-small samples. 50 sends with a 10% reply rate is not a winning campaign — it's noise. Wait for 200+ sends per variant.
  • Track metrics over time, not just snapshots. A campaign with a 5% reply rate in week 1 and 2% in week 4 is degrading — the list might be exhausted or deliverability is dropping.
  • Don't average across campaigns. One campaign with a 15% positive reply rate and one with 0.5% averages to 7.75% — but that hides the fact that one is amazing and one is terrible.

Progressive disclosure: load platform-specific analytics integrations and automated reporting configs only when analyzing data from a specific sending platform.

Other skills for the same job

Different authors, same problem. Matched on the words in the skill name, across every library in the catalogue except this one.

Need help setting it up?

This page tells you what performance-analysis does and what it needs. Cheetah builds the agent setup it runs inside: data, CRM, sequencing and the guardrails.

Book a call →

The directory stays free. There is nothing gated behind this.