Data & funnel analytics
Quick answer
- 01What is it?
- Analytics tracking, interpretation, funnel analysis, product metrics, and ROI measurement. What sets it apart is how it narrows marketing analytics into one specific workflow rather than a broad, generic prompt.
- 02Inputs
- Context for marketing analytics: your goals, audience, constraints, and any source material the skill asks for.
- 03Output
- A ready-to-use result for marketing analytics: the analysis, copy, or recommendations the agent produces.
Add this skill
Install as a package
Installs this one skill package for your coding agent, including any supporting files that skill ships with — not every skill in the repository. Read the tutorial.
$ npx skills add manojbajaj95/claude-gtm-plugin --skill data-and-funnel-analyticsSkill instructions
The instruction file for this skill. The skill also includes other files you need to install to use it.
Data & Funnel Analytics
Workspace Context
Read bootstrap context before asking questions: strategy/brand.md for brand, audience, offer, channels, tools, constraints, and metrics; about/me.md for personal voice; content/ideas.md and content/calendar.md for content planning. Use legacy product-marketing context files only as fallback. Save generated drafts to content/<platform>/drafts/YYYY-MM-DD_short-topic-slug.md, and route durable learnings back to strategy/brand.md, about/me.md, or content/ideas.md.
Operating Contract
This skill is self-contained for its frontmatter scope: use its local instructions, references, scripts, and assets as the playbook; ask only for missing task-specific inputs; hand off to adjacent skills instead of expanding scope; and return an actionable artifact, decision, plan, draft, or diagnostic.
End-to-end analytics: set up tracking, interpret data, analyze funnels, measure product engagement, validate conversion paths, and calculate ROI.
Principle: Track for decisions, not data — every event should inform an action.
Analytics Tracking
Event Naming Convention
Format: object_action in lowercase snake_case.
signup_completed | cta_hero_clicked | checkout_started | onboarding_step_completed
Rules: Specific over vague (cta_hero_clicked not button_clicked), past tense for completed actions, context in properties not event name.
Tracking Plan
| Category | Event | Key Properties |
|---|---|---|
| Marketing | page_view | page_title, page_location, referrer |
cta_clicked | button_text, location, page | |
form_submitted | form_type, page | |
signup_completed | method, plan | |
| Product | onboarding_step_completed | step_number, step_name |
feature_used | feature_name, context | |
trial_started | plan, source | |
purchase_completed | plan, value, currency | |
| E-commerce | product_viewed | product_id, category, price |
product_added_to_cart | product_id, price, quantity | |
checkout_started | cart_value, items_count |
Standard Properties
- User context: user_id, user_type (free/paid/admin), plan_type
- Attribution: source, medium, campaign, content, term (UTM params)
- Page: page_title, page_location, content_group
- PII hygiene: Never send email, name, or phone as event properties. Use hashed user IDs only.
GA4 Implementation
// gtag.js custom event
gtag('event', 'signup_completed', {
'method': 'email',
'plan': 'free',
'user_id': userId
});
// GTM dataLayer
dataLayer.push({
'event': 'signup_completed',
'method': 'email',
'plan': 'free'
});
Enhanced Measurement (enable in GA4): page_view, scroll, outbound_click, site_search, video_engagement, file_download.
Conversions: Admin → Events → Toggle "Mark as conversion." Counting: once per session (form submit) or every time (purchase).
UTM Parameters
Convention: utm_source={channel}&utm_medium={cpc|email|organic|social}&utm_campaign={id}&utm_content={variant}&utm_term={keyword}
- Apply to ALL paid and email links
- Never use on internal links (breaks session attribution)
- Lowercase, hyphens not spaces
- Document in a UTM tracking sheet
Privacy & Compliance
- GDPR/CCPA: Implement consent management, block GA4 until consent granted
- GA4 data retention: 14 months max (Admin → Data Settings)
- IP anonymization enabled
Analytics Interpretation
GA4 Benchmarks
| Metric | Good | Warning | Poor | Action When Poor |
|---|---|---|---|---|
| Avg Time on Page | >3 min | 1–3 min | <1 min | Improve content depth |
| Bounce Rate | <40% | 40–70% | >70% | Add internal links, improve intro |
| Engagement Rate | >60% | 30–60% | <30% | Review content quality |
| Scroll Depth | >75% | 50–75% | <50% | Add visual breaks |
| Pages/Session | >2.5 | 1.5–2.5 | <1.5 | Improve internal linking |
Google Search Console Benchmarks
| Metric | Good | Warning | Poor | Action When Poor |
|---|---|---|---|---|
| CTR | >5% | 2–5% | <2% | Improve title/meta description |
| Avg Position | 1–3 | 4–10 | >10 | Strengthen content, build links |
| Impressions | Growing | Stable | Declining | Refresh content |
Traffic Quality Matrix
High Engagement
│
┌──────────────┼──────────────┐
│ HIDDEN GEM │ STAR │
│ Low traffic │ High traffic│
│ → Promote │ → Maintain │
Low ───────┼──────────────┼──────────────┼─── High
Traffic │ UNDERPERFORM│ LEAKY │ Traffic
│ Low traffic │ High traffic│
│ → Rework │ → Optimize │
└──────────────┼──────────────┘
│
Low Engagement
Anomaly Detection
| Metric | Significant Change | Alert Level |
|---|---|---|
| Traffic | ±30% WoW | HIGH |
| CTR | ±1pp WoW | MEDIUM |
| Position | ±5 positions | HIGH |
| Bounce Rate | ±10pp WoW | MEDIUM |
Product Analytics
North Star Metric
The ONE metric that represents customer value:
| Company | North Star |
|---|---|
| Slack | Weekly Active Users |
| Airbnb | Nights Booked |
| Spotify | Time Listening |
| Shopify | GMV |
Criteria: Represents customer value, correlates with revenue, measurable frequently, rallies the team.
Key Metrics by Stage
| Stage | Metrics |
|---|---|
| Acquisition | Traffic sources, CPC, visitor → signup rate |
| Activation | Signup → first core action, time to value, onboarding completion |
| Retention | DAU/MAU (stickiness), D1/D7/D30 retention, churn rate |
| Revenue | MRR/ARR, ARPU, LTV, LTV:CAC ratio |
| Referral | Viral coefficient, referral signups, NPS |
Retention Benchmarks
| Timeframe | Good | Bad |
|---|---|---|
| D1 | 60–80% | <40% |
| D7 | 40–60% | <10% |
| D30 | 30–50% | <2% |
Good = flattening curve. Bad = steep drop-off.
Dashboard Design
- Executive: North Star Metric (big number), revenue (MRR/ARR), key trends
- Product: Active users, feature usage, retention cohorts, funnels
- Marketing: Traffic sources, conversion rates, CPA, ROI by channel
Funnel Analysis
Core Workflow
- Load and merge user journey data
- Define funnel steps and calculate step-by-step conversion rates
- Segment by user attributes (device, cohort, plan)
- Visualize bottlenecks
- Generate optimization recommendations
Common Funnel Types
| Funnel | Steps |
|---|---|
| E-commerce | Promotion → Search → Product View → Add to Cart → Purchase |
| SaaS Signup | Landing Page → Sign Up → Email Verify → Onboarding Complete |
| Content | Article View → Comment → Share → Subscribe |
Analysis Patterns
- Bottleneck identification — Steps with highest drop-off rates
- Segment comparison — Conversion across user groups
- Temporal analysis — Conversion over time
- A/B testing — Compare funnel variations
See examples/ for Python implementations with Plotly visualizations.
Funnel Validation (DotCom Secrets)
Score existing funnels against Russell Brunson's framework: Hook → Story → Offer.
Scoring Dimensions
| Dimension | Weight | What It Measures |
|---|---|---|
| Hook Strength | 2x | Stops the scroll, grabs attention |
| Story Connection | 1.5x | Creates emotional connection and belief |
| Offer Clarity | 2x | Clear, compelling, irresistible |
| Value Ladder Fit | 1x | Fits the ascension path |
| Traffic Match | 1.5x | Matched to traffic temperature |
| Conversion Path | 1x | Next step obvious and frictionless |
Rating Scale
| Score | Verdict |
|---|---|
| 85–100 | Conversion Machine — Ready to scale |
| 70–84 | Strong Funnel — Fix weak points, then scale |
| 55–69 | Leaky Funnel — Fix before scaling traffic |
| 40–54 | Broken Funnel — Rebuild key components |
| 0–39 | Non-Functional — Start over |
Traffic Temperature
| Temperature | They Know | Appropriate Funnel |
|---|---|---|
| Cold | Nothing about you | Lead funnel, value-first content |
| Warm | Problem + your solution | Tripwire, webinar, challenge |
| Hot | Ready to buy | Sales page, order form, call booking |
For complete scoring criteria and examples, see references/full-guide.md.
ROI Analysis
Core Metrics
ROI: (Net Profit / Total Investment) × 100%
- ✅ INVEST: ROI > 100% (realistic case)
- ⚠️ REVIEW: ROI 50–100%
- ❌ REJECT: ROI < 50%
Break-Even: Investment / Monthly Net Profit
- ✅ INVEST: Break-even < 50% of realistic target
- ❌ REJECT: Break-even > 70%
Payback Period: Investment / Monthly Net Profit
- ✅ INVEST: < 12 months
- ⚠️ REVIEW: 12–24 months
- ❌ REJECT: > 24 months
3-Scenario Analysis
Always model Best / Realistic / Worst:
| Case | Assumptions | Revenue | Profit | ROI | Assessment |
|---|---|---|---|---|---|
| Worst | Pessimistic | Risk level | |||
| Realistic | Expected | Target | |||
| Best | Optimistic | Upside |
Decision rule: If worst-case ROI ≥ 0%, investment is low-risk.
Executive Summary Template
[Investment] achieves [ROI%] ROI at [conversion/growth rate].
Break-even occurs at [threshold], with payback in [months].
Investment is [recommended/not recommended] because [reason].
For detailed formulas (NPV, LTV, CAC, sensitivity analysis), see references/roi-reference.md.
Validation & QA
Before Launch
- Events fire in GA4 DebugView
- Properties have expected values
- No duplicate events
- Conversions marked correctly
- UTM parameters captured on landing
Ongoing
- Weekly: Check for sudden drops in key events (>20% change = investigate)
- Monthly: Audit for new pages/features without tracking
- Quarterly: Full tracking plan review — remove stale events, add missing ones
Tools
| Category | Tools |
|---|---|
| Event Tracking | Mixpanel, Amplitude, PostHog (open-source) |
| Session Recording | FullStory, LogRocket, Hotjar |
| A/B Testing | Optimizely, VWO |
| Web Analytics | GA4, Google Search Console |
| Tag Management | Google Tag Manager |
Related Skills
- ab-test-setup — A/B test measurement and setup
- seo-and-aeo-strategy — Measuring SEO/AEO performance
- conversion-rate-optimization — Optimizing conversion after funnel analysis
- executive-dashboard-generator — Building dashboards from analytics data
Supporting file: references/full-guide.md
Funnel Validator - Full Guide
Execution Workflow
Step 1: Gather the Funnel
Ask the user:
Show me your funnel. I need to see:
- What's the funnel URL or can you describe each step?
- What's the entry point? (Ad, email, content, etc.)
- What are you selling? (Free offer, low-ticket, high-ticket?)
- What's the desired action? (Opt-in, purchase, call booking?)
- Where is traffic coming from? (Paid ads, organic, email list?)
- What's your current conversion rate? (If known)
Funnel Types (Reference):
- Lead Funnel: Free offer → Opt-in → Thank you + Upsell
- Tripwire Funnel: Low-ticket offer ($7-47) → Order form → OTO
- Webinar Funnel: Registration → Webinar → Application/Sale
- Application Funnel: Free content → Application → Call → Sale
- Challenge Funnel: Free challenge → Daily content → Pitch
Step 2: Score Hook Strength (0-10, Weight: 2x)
Evaluate the first 3 seconds of the funnel experience:
- Does the headline stop the scroll?
- Is there a pattern interrupt (unexpected element)?
- Is the hook specific to the target audience?
- Does it create curiosity or urgency?
- Is the promise immediately clear?
Scoring Criteria:
| Score | Description |
|---|---|
| 9-10 | Scroll-stopping hook, specific to audience, creates immediate curiosity |
| 7-8 | Strong hook, grabs attention, clear promise |
| 5-6 | Decent hook, somewhat generic, could be stronger |
| 3-4 | Weak hook, generic, doesn't stand out |
| 0-2 | No hook, boring headline, immediate bounce |
Red Flags:
- Generic headlines ("Welcome to our page")
- No headline above the fold
- Hook doesn't match the traffic source
- No curiosity or urgency element
- Wall of text before the hook
Hook Formula:
[End Result] + [Time Period] + [Address Objection]
"How to [Result] in [Time] Without [Objection]"
Step 3: Score Story Connection (0-10, Weight: 1.5x)
Evaluate the emotional journey:
- Is there an origin story or epiphany bridge?
- Does the story create relatability ("I was like you")?
- Is there conflict and transformation?
- Does it build belief that the solution works?
- Is the story relevant to the audience's pain?
Scoring Criteria:
| Score | Description |
|---|---|
| 9-10 | Powerful epiphany bridge, emotionally resonant, builds complete belief |
| 7-8 | Good story, relatable, some emotional connection |
| 5-6 | Story present but weak, or too long, or disconnected |
| 3-4 | Minimal story, facts without emotion |
| 0-2 | No story, just features and claims |
Red Flags:
- No story at all
- Story about the company, not the customer
- Story too long (loses attention)
- Story doesn't connect to the offer
- No transformation shown
Epiphany Bridge Framework:
1. Backstory (where you were)
2. Wall (the problem you hit)
3. Epiphany (the breakthrough discovery)
4. Plan (what you did about it)
5. Success (the result you achieved)
6. Transformation (who you became)
Step 4: Score Offer Clarity (0-10, Weight: 2x)
Evaluate the offer presentation:
- Is the offer immediately clear?
- Is the value proposition compelling?
- Are the deliverables specific?
- Is there a stack (multiple components)?
- Is the price positioned correctly?
Scoring Criteria:
| Score | Description |
|---|---|
| 9-10 | Crystal clear offer, overwhelming value stack, irresistible positioning |
| 7-8 | Clear offer, good value stack, compelling presentation |
| 5-6 | Offer understood but not compelling, weak stack or positioning |
| 3-4 | Confusing offer, unclear what they get |
| 0-2 | No clear offer, or buried below the fold |
Red Flags:
- Offer buried below the fold
- Confusing pricing or options
- No value stack
- Features without benefits
- Multiple CTAs competing
Offer Clarity Test: Can someone explain what they get in one sentence?
Step 5: Score Value Ladder Fit (0-10, Weight: 1x)
Evaluate funnel positioning in the ascension path:
- Does this funnel match the traffic temperature?
- Is there a logical next step after conversion?
- Does the offer ascend to higher-ticket?
- Is there a tripwire to create buyers?
- Is the pricing appropriate for this funnel stage?
Scoring Criteria:
| Score | Description |
|---|---|
| 9-10 | Perfect ladder fit, clear ascension, obvious next step |
| 7-8 | Good ladder fit, ascension path exists |
| 5-6 | Decent fit, but gaps in the ladder |
| 3-4 | Funnel doesn't fit the ladder, pricing mismatch |
| 0-2 | No value ladder, dead-end funnel |
Red Flags:
- High-ticket offer to cold traffic
- No upsell or next step after purchase
- Pricing jump too large between steps
- Lead magnet unrelated to paid offer
Step 6: Score Traffic Match (0-10, Weight: 1.5x)
Evaluate traffic-to-funnel alignment:
- Does the funnel match the traffic temperature?
- Is the message-to-market match strong?
- Does the landing page continue the conversation from the ad?
- Is the ask appropriate for the traffic type?
- Is there congruence from click to page?
Scoring Criteria:
| Score | Description |
|---|---|
| 9-10 | Perfect match, message continues seamlessly, appropriate ask |
| 7-8 | Good match, minor disconnects, mostly congruent |
| 5-6 | Decent match, some friction, message shift |
| 3-4 | Poor match, confusing transition, wrong ask |
| 0-2 | Complete mismatch, traffic bouncing immediately |
Red Flags:
- Selling high-ticket to cold traffic
- Long-form sales page for hot traffic
- No scent trail from ad to page
- Headline doesn't match ad copy
- Asking for too much too soon
Step 7: Score Conversion Path (0-10, Weight: 1x)
Evaluate the path to conversion:
- Is the CTA clear and prominent?
- Is there one primary action (not multiple)?
- Is the form simple (minimal fields)?
- Is there friction in the process?
- Is the next step obvious after conversion?
Scoring Criteria:
| Score | Description |
|---|---|
| 9-10 | One clear CTA, minimal friction, obvious next step |
| 7-8 | Clear CTA, some minor friction, good path |
| 5-6 | CTA present but not prominent, some friction |
| 3-4 | Multiple CTAs competing, confusing path |
| 0-2 | No clear CTA, or buried, major friction |
Red Flags:
- Multiple CTAs on the page
- Long forms with unnecessary fields
- No CTA above the fold
- Unclear what happens after clicking
- Exit popups before they've read anything
CTA Best Practices:
- One primary CTA per page
- Button text = outcome ("Get Instant Access")
- CTA above the fold AND at the end
- Minimize form fields (name + email max for opt-in)
Step 8: Calculate Final Score
Formula:
Hook Strength × 2 = ___
Story Connection × 1.5 = ___
Offer Clarity × 2 = ___
Value Ladder Fit × 1 = ___
Traffic Match × 1.5 = ___
Conversion Path × 1 = ___
─────────────────────────
TOTAL = ___ / 100
Step 9: Generate Recommendations
For each dimension scoring below 7, provide:
- What's wrong (specific diagnosis)
- How to fix it (actionable steps)
- Example (show them what good looks like)
Output Format
# Funnel Validation: [Funnel Name/URL]
## Quick Rating
| Rating | Score | Verdict |
|--------|-------|---------|
| [Conversion Machine / Strong / Leaky / Broken / Non-Functional] | XX/100 | [One-line summary] |
## Score Breakdown
| Dimension | Raw Score | Weight | Weighted Score | Status |
|-----------|-----------|--------|----------------|--------|
| Hook Strength | X/10 | ×2 | XX/20 | [Fix/Optimize/Strong] |
| Story Connection | X/10 | ×1.5 | XX/15 | [Fix/Optimize/Strong] |
| Offer Clarity | X/10 | ×2 | XX/20 | [Fix/Optimize/Strong] |
| Value Ladder Fit | X/10 | ×1 | XX/10 | [Fix/Optimize/Strong] |
| Traffic Match | X/10 | ×1.5 | XX/15 | [Fix/Optimize/Strong] |
| Conversion Path | X/10 | ×1 | XX/10 | [Fix/Optimize/Strong] |
| **TOTAL** | | | **XX/100** | |
## Detailed Assessment
### Hook Strength: X/10
**What's Working:** [Positive aspects]
**Conversion Killer:** [What's causing drop-off]
**Fix:** [Specific action to improve]
**Better Hook:** "[Example rewrite]"
### Story Connection: X/10
**What's Working:** [Positive aspects]
**Conversion Killer:** [What's causing drop-off]
**Fix:** [Specific action to improve]
### Offer Clarity: X/10
**What's Working:** [Positive aspects]
**Conversion Killer:** [What's causing drop-off]
**Fix:** [Specific action to improve]
### Value Ladder Fit: X/10
**What's Working:** [Positive aspects]
**Conversion Killer:** [What's causing drop-off]
**Fix:** [Specific action to improve]
### Traffic Match: X/10
**What's Working:** [Positive aspects]
**Conversion Killer:** [What's causing drop-off]
**Fix:** [Specific action to improve]
### Conversion Path: X/10
**What's Working:** [Positive aspects]
**Conversion Killer:** [What's causing drop-off]
**Fix:** [Specific action to improve]
## Conversion Killers (Fix These First)
1. **[Dimension]:** [Specific issue + expected lift from fixing]
2. **[Dimension]:** [Specific issue + expected lift from fixing]
3. **[Dimension]:** [Specific issue + expected lift from fixing]
## Next Steps
### If Score 85+:
- [ ] Scale traffic
- [ ] A/B test minor optimizations
- [ ] Add upsells/cross-sells
### If Score 70-84:
- [ ] Fix priority conversion killers above
- [ ] Re-validate after changes
- [ ] Use `copy-validator` to check copy quality
### If Score 55-69:
- [ ] Major rework needed before scaling
- [ ] Use `funnel-architect` to redesign weak areas
- [ ] Fix hook and offer first
### If Score Below 55:
- [ ] Do not send traffic to this funnel
- [ ] Use `funnel-architect` to rebuild
- [ ] Consider using `offer-validator` to validate the core offer
Example Validations
Example: Leaky Funnel
User's Funnel: Lead magnet opt-in page
Issues Found:
- Generic headline: "Download Our Free Guide"
- No story, just bullet points
- Form asks for phone number (unnecessary friction)
- No scent trail from Facebook ad
Validation:
| Dimension | Score | Issue |
|---|---|---|
| Hook Strength | 4/10 | Generic, doesn't stop scroll |
| Story Connection | 2/10 | No story at all |
| Offer Clarity | 6/10 | Clear but not compelling |
| Value Ladder Fit | 7/10 | Good fit for lead gen |
| Traffic Match | 4/10 | Ad message doesn't continue |
| Conversion Path | 5/10 | Phone number field adding friction |
Total: 46/100 - Broken Funnel
Priority Fixes:
- Hook: Rewrite to "How I Got 50 Clients in 30 Days Without Paid Ads"
- Story: Add 2-3 sentence epiphany bridge about discovery
- Traffic Match: Match headline to exact ad copy
- Conversion Path: Remove phone number, keep name + email only
Example: Strong Funnel
User's Funnel: Webinar registration
Strengths:
- Scroll-stopping hook with specific result
- Strong origin story video
- Clear value stack for attending
- Perfect traffic match from YouTube ads
- Single CTA, minimal form
Validation:
| Dimension | Score | Notes |
|---|---|---|
| Hook Strength | 9/10 | Specific, scroll-stopping, curiosity-driven |
| Story Connection | 8/10 | Good video story, could be tighter |
| Offer Clarity | 8/10 | Clear what they'll learn |
| Value Ladder Fit | 9/10 | Perfect for warm traffic |
| Traffic Match | 9/10 | YouTube ad → Webinar seamless |
| Conversion Path | 8/10 | Clean, but could add countdown |
Total: 85/100 - Conversion Machine
Minor Optimizations:
- Add countdown timer to increase urgency
- Tighten video story to under 2 minutes
Common Validation Mistakes
- Ignoring Traffic Temperature: The funnel might be great for the wrong traffic
- Missing the Hook: First 3 seconds determine everything
- Forgetting Mobile: Most traffic is mobile—test on phone
- Too Many CTAs: One page, one goal
- No A/B Testing Reference: Ask what they've already tested
- Ignoring the Ad: The funnel starts with the traffic source
Supporting file: references/prpm.json
{
"name": "roi-analyzer",
"version": "1.0.0",
"description": "Comprehensive ROI and business value analysis framework with financial modeling and investment evaluation",
"author": "Tempuss",
"license": "MIT",
"repository": "https://github.com/Tempuss/agent-hub",
"format": "claude",
"subtype": "skill",
"tags": [
"roi-analysis",
"financial-modeling",
"investment-evaluation",
"business-value",
"cost-benefit-analysis"
],
"files": [
"SKILL.md",
"README.md",
"REFERENCE.md"
]
}
Supporting file: references/roi-reference.md
ROI Analyzer Reference Guide
Core Formulas
1. ROI (Return on Investment)
ROI = (Net Profit / Total Investment) × 100%
Where:
Net Profit = Revenue - Total Costs
Total Costs = Investment + Operating Costs
Example:
- Investment: 100M KRW
- Revenue: 200M KRW
- Operating Costs: 50M KRW
- Net Profit: 200M - 50M - 100M = 50M KRW
- ROI: (50M / 100M) × 100% = 50%
2. Break-Even Point (BEP)
For Project Investment:
Break-Even Point = Total Investment / (Revenue per Unit - Variable Cost per Unit)
Or for subscription:
Break-Even Months = Total Investment / Monthly Net Profit
Example:
- Investment: 120M KRW
- Monthly Revenue: 20M KRW
- Monthly Costs: 10M KRW
- Monthly Net Profit: 10M KRW
- BEP: 120M / 10M = 12 months
For Conversion-Based Projects:
Break-Even Conversion Rate = Investment / Potential Revenue
Example (Phase 0 → Phase 1):
- Investment: 50M KRW
- Phase 1 Contract: 200M KRW
- BEP: 50M / 200M = 25% conversion needed
3. Payback Period
Payback Period = Investment / Annual Net Cash Flow
Or monthly:
Payback Months = Investment / Monthly Net Profit
Example:
- Investment: 240M KRW
- Monthly Profit: 20M KRW
- Payback: 240M / 20M = 12 months
4. Net Present Value (NPV)
For multi-year projects:
NPV = Σ (Cash Flow_t / (1 + r)^t) - Investment
Where:
- t = year (1, 2, 3...)
- r = discount rate (typically 10-15%)
Example (3 years, 10% discount):
- Y0: -200M (investment)
- Y1: +50M / 1.1 = 45.5M
- Y2: +100M / 1.21 = 82.6M
- Y3: +150M / 1.33 = 112.8M
- NPV: 45.5 + 82.6 + 112.8 - 200 = 40.9M KRW ✅
Scenario Analysis Framework
3-Scenario Template
| Scenario | Probability | Key Assumptions | ROI | Assessment |
|---|---|---|---|---|
| Worst | 10-20% | [List pessimistic] | Risk level | |
| Realistic | 60-70% | [List expected] | Target | |
| Best | 10-20% | [List optimistic] | Upside |
Variable Selection (Top 5)
For each scenario, vary these 5 variables:
-
Revenue Growth Rate
- Worst: 50% of target
- Realistic: Target
- Best: 150% of target
-
Customer Acquisition Cost (CAC)
- Worst: 2x budget
- Realistic: Budget
- Best: 0.5x budget
-
Churn Rate
- Worst: 10%/month
- Realistic: 5%/month
- Best: 2%/month
-
Pricing / ARPU
- Worst: -20% (discounts needed)
- Realistic: Target price
- Best: +20% (premium positioning)
-
Time to Market / Launch Delay
- Worst: +3 months
- Realistic: On time
- Best: -1 month
Example: B2B SaaS 3-Year Scenarios
Assumptions:
- Investment: 200M KRW
- Target MRR: Y1: 10M, Y2: 30M, Y3: 60M
- Monthly Costs: 15M KRW
Worst Case (50% revenue, 2x CAC, 10% churn):
| Year | MRR | ARR | Churn Impact | Net ARR | Costs | Profit |
|------|-----|-----|--------------|---------|-------|--------|
| Y1 | 5M | 60M | -20M (churn) | 40M | 180M | -140M |
| Y2 | 15M | 180M | -60M | 120M | 180M | -60M |
| Y3 | 30M | 360M | -120M | 240M | 180M | +60M |
3-Year Total: -140M (ROI: -70%) ❌
Payback: 36+ months
Realistic Case (target):
| Year | MRR | ARR | Churn (5%) | Net ARR | Costs | Profit |
|------|-----|-----|-----------|---------|-------|--------|
| Y1 | 10M | 120M | -6M | 114M | 180M | -66M |
| Y2 | 30M | 360M | -18M | 342M | 180M | +162M |
| Y3 | 60M | 720M | -36M | 684M | 180M | +504M |
3-Year Total: +600M (ROI: +300%) ✅
Payback: 18 months
Best Case (150% revenue, 0.5x CAC, 2% churn):
| Year | MRR | ARR | Churn (2%) | Net ARR | Costs | Profit |
|------|-----|-----|-----------|---------|-------|--------|
| Y1 | 15M | 180M | -4M | 176M | 180M | -4M |
| Y2 | 45M | 540M | -11M | 529M | 180M | +349M |
| Y3 | 90M | 1080M | -22M | 1058M | 180M | +878M |
3-Year Total: +1223M (ROI: +612%) ✅
Payback: 13 months
Sensitivity Analysis
Single-Variable Sensitivity
Test each variable independently (hold others constant):
Example: Revenue Growth Rate Sensitivity
| Growth Rate | Y3 ARR | 3-Year Profit | ROI | Payback |
|---|---|---|---|---|
| -50% | 360M | -140M | -70% | Never |
| -25% | 540M | +240M | +120% | 30 months |
| Target | 720M | +600M | +300% | 18 months |
| +25% | 900M | +960M | +480% | 12 months |
| +50% | 1080M | +1320M | +660% | 10 months |
Key Insight: Revenue growth is THE critical variable (high sensitivity)
Multi-Variable Sensitivity Matrix
Test combinations of top 2 variables:
| CAC -50% | CAC Target | CAC +100% | |
|---|---|---|---|
| Revenue +50% | ROI 800% | ROI 660% | ROI 480% |
| Revenue Target | ROI 400% | ROI 300% | ROI 180% |
| Revenue -50% | ROI 0% | ROI -70% | ROI -150% |
Key Insight: If CAC doubles AND revenue misses by 50%, project fails
Industry Benchmarks
SaaS Metrics (B2B)
| Metric | Seed | Series A | Series B+ |
|---|---|---|---|
| ARR Growth | 3x YoY | 2.5x YoY | 2x YoY |
| CAC | < 6mo LTV | < 12mo LTV | < 18mo LTV |
| Churn (Annual) | <30% | <20% | <10% |
| Gross Margin | 50%+ | 70%+ | 80%+ |
| Payback Period | <12mo | <18mo | <24mo |
| ROI (3 years) | 200%+ | 300%+ | 400%+ |
E-commerce
| Metric | Target |
|---|---|
| Gross Margin | 30-50% |
| CAC Payback | 3-6 months |
| Repeat Rate | 30%+ |
| LTV:CAC Ratio | 3:1 minimum |
| ROI (1 year) | 100%+ |
Hardware / Physical Products
| Metric | Target |
|---|---|
| Gross Margin | 40-60% |
| Inventory Turns | 6-12x/year |
| Payback Period | 6-12 months |
| ROI (2 years) | 150%+ |
Advanced Analysis
Customer Lifetime Value (LTV)
LTV = ARPU × Gross Margin % × (1 / Monthly Churn Rate)
Example (B2B SaaS):
- ARPU: 50,000 KRW/month
- Gross Margin: 80%
- Monthly Churn: 5%
- LTV: 50,000 × 0.8 × (1/0.05) = 800,000 KRW
Target: LTV:CAC ≥ 3:1
Customer Acquisition Cost (CAC)
CAC = (Marketing Spend + Sales Spend) / New Customers
Example:
- Marketing: 10M KRW/month
- Sales: 5M KRW/month
- New Customers: 50/month
- CAC: 15M / 50 = 300,000 KRW
Target: CAC Payback < 12 months
Cohort Analysis
Track each monthly cohort separately:
| Signup Month | M0 | M1 | M2 | M3 | M6 | M12 |
|---|---|---|---|---|---|---|
| Jan 2024 | 100% | 80% | 70% | 65% | 55% | 45% |
| Feb 2024 | 100% | 85% | 75% | 70% | 60% | ? |
| Mar 2024 | 100% | 90% | 80% | 75% | ? | ? |
Insight: Retention improving (Feb/Mar > Jan at same stages)
Risk Assessment Framework
Risk Scoring
| Risk Factor | Weight | Score (1-5) | Weighted Score |
|---|---|---|---|
| Market Size | 20% | ||
| Competition | 15% | ||
| Technical Feasibility | 15% | ||
| Team Experience | 15% | ||
| Funding Runway | 15% | ||
| Regulatory | 10% | ||
| Economic Conditions | 10% | ||
| Total | 100% | ?/5 |
Interpretation:
- 4.0+: Low risk ✅
- 3.0-4.0: Moderate risk ⚠️
- <3.0: High risk ❌
Contingency Planning
For each major risk (score ≤2), define:
Risk: [Description]
Likelihood: [%]
Impact: [Financial impact if occurs]
Mitigation: [Preventive actions]
Contingency: [Plan B if it happens]
Owner: [Responsible person]
Decision Trees
Investment Decision Tree
Start
├─ ROI (realistic) ≥ 100%?
│ ├─ Yes → Continue
│ └─ No → ❌ REJECT
│
├─ Payback ≤ 18 months?
│ ├─ Yes → Continue
│ └─ No → ⚠️ REVIEW (require strong strategic value)
│
├─ Break-even achievable at <50% of target?
│ ├─ Yes → Continue
│ └─ No → ⚠️ REVIEW (high execution risk)
│
├─ Worst-case ROI ≥ 0%?
│ ├─ Yes → ✅ INVEST
│ └─ No → ⚠️ REVIEW (potential loss)
Phase Progression Decision (0→1→2)
Phase 0 Complete
├─ Conversion ≥ 70%?
│ ├─ Yes → ✅ Proceed to Phase 1
│ └─ No → Check conversion
│ ├─ 50-70%? → ⚠️ Improve & retry
│ └─ <50%? → ❌ Cancel or pivot
│
Phase 1 Complete
├─ ROI ≥ 150%?
│ ├─ Yes → ✅ Proceed to Phase 2
│ └─ No → Check metrics
│ ├─ 100-150%? → ⚠️ Optimize first
│ └─ <100%? → ❌ Pause expansion
See Skill.md for: Quick examples, templates, common use cases
Common questions
How do I install Data & funnel analytics in Cursor, Claude Code, or Codex?
Run npx skills add manojbajaj95/claude-gtm-plugin --skill data-and-funnel-analytics in the project where you want it, then ask your agent for the skill by name. The --skill flag installs only Data & funnel analytics, not every skill in the repository.
Where does Data & funnel analytics come from and what license is it under?
Data & funnel analytics comes from the manojbajaj95/claude-gtm-plugin repository on GitHub. That repository has 67 GitHub stars. The skill is published under the MIT license.
Prefer plain text? Read the Data & funnel analytics guide as markdown.
Related skills
More from manojbajaj95
More CRO skills