Install
$ agentstack add skill-bellabe-strategy-os-stg-calculating-economics ✓ scanned · ✓ verified — works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
About
Economics Calculation
Calculate unit economics with range-based estimates, integrated cost structure, and scenario analysis. Every input carries tier label; output inherits highest (weakest) tier. Merged from old str-calculating-economics and str-structuring-costs.
Procedure
Step 1: Gather Inputs with Tier Labels [S]
Read: pricing inputs (from stg-designing-pricing), market sizing (from stg-sizing-markets), competitive data (from stg-analyzing-competition), solution design (growth architecture).
Assemble input table:
| Input | Source | Tier | Value | |-------|--------|------|-------| | ARPU | Pricing tiers | T2 (hypothesis) | {range} | | Gross margin | Category benchmark, adjusted for COGS | T2 | {range} | | Churn rate | Benchmark for category + ACV range | T2 (no customer data) | {range} | | S&M spend | Channel strategy (stg-designing-channels) or cost structure estimate | T2 | {range} | | Growth model | Solution design | T1 (a choice, not a prediction) | {model} |
Produce: input table with tier labels and source citations.
If channel strategy outputs are available (from stg-designing-channels), use per-channel CAC estimates and investment splits as the primary source for S&M spend and blended CAC inputs. This provides more rigorous CAC decomposition than freestanding S&M estimation.
Gate: inputs_gathered: bool -- all 5 inputs have values, tier labels, and sources.
- Pass: Step 2.
- Fail: For missing inputs, use category benchmarks with T2 label. If no benchmarks available, use SaaS median with T3 label and wide range.
Step 2: Calculate Core Metrics as Ranges [S]
Calculate for optimistic, base, and pessimistic input sets:
LTV = ARPU x Gross Margin x (1 / Monthly Churn Rate)
CAC = (S&M Spend + Allocated Overhead) / New Customers Acquired
LTV:CAC = LTV / CAC
Payback = CAC / (ARPU x Gross Margin)
Output tier = max(input tiers). If any input is T3, output is T3. If all inputs are T2, output is T2.
Produce: metric ranges across three scenarios.
Gate: metrics_calculated: bool -- LTV, CAC, LTV:CAC, and payback calculated for all three scenarios with tier labels.
- Pass: Step 3.
- Fail: If a formula input is missing, use the widest reasonable range and note which input is driving uncertainty.
Step 3: Calculate Cost Structure [S]
Read: solution design (features to build), growth architecture, constraints.
Fixed costs:
- Team: salaries, contractors (from role count x market rate)
- Infrastructure: servers, CI/CD, monitoring
- Software: SaaS tools, licenses
- Operations: legal, accounting, insurance
Variable costs (COGS):
- Hosting/compute per user (if AI inference, model per-interaction cost explicitly)
- Payment processing (2.9% + $0.30 typical)
- Support per ticket
- Onboarding per customer
Derived metrics:
- Gross margin = (revenue - COGS) / revenue
- Burn rate = fixed costs + variable costs at current scale
- Runway = available capital / monthly burn rate
Produce: cost structure with categories and monthly totals [T2].
Gate: cost_structure_calculated: bool -- fixed and variable costs categorized, gross margin calculated, burn rate and runway estimated.
- Pass: Step 4.
- Fail: If cost inputs are unknown, use industry benchmarks. AI inference costs are commonly missed -- always check if product has AI components.
Step 4: Validate Against Benchmarks [R]
Compare metrics against benchmark thresholds:
| Metric | Healthy | Warning | Critical | |--------|---------|---------|----------| | LTV:CAC | >3:1 | 2-3:1 | 18 months | | Gross margin | >70% | 50-70% | 10% |
Flag any metric in warning or critical range with specific values.
Produce: benchmark validation with flags.
Gate: benchmarks_validated: bool -- all four metrics compared against thresholds.
- Pass: Step 5.
- Fail: Critical-range metrics are findings, not blockers. Report them.
Step 5: Add Growth-Model-Specific Metrics [R]
Based on growth architecture from solution design:
| Growth Model | Key Metrics | Tier | |-------------|------------|------| | PLG | Signup->activation rate, free->paid conversion, PQL rate, expansion revenue % | T2-T3 | | Network | Viral coefficient, invite rate, network density threshold | T2-T3 | | Traditional | Sales cycle length, demo->close rate, AE productivity | T2-T3 |
All estimates are T2 (from benchmarks) or T3 (predictions). Label each.
Produce: growth-specific metrics with tier labels.
Gate: growth_metrics_added: bool -- at least 3 growth-model-specific metrics estimated with tier labels.
- Pass: Step 6.
- Fail: If no benchmarks for the specific growth model, use general SaaS benchmarks and note the reduced confidence.
Step 6: Build Scenario Analysis [S]
Four scenarios:
- Optimistic: Favorable assumptions resolve (CAC at low end, LTV at high end, churn at low end).
- Base: Estimates as calculated.
- Pessimistic: CAC 3x estimate, segment 40% smaller, churn 2x benchmark.
- Kill: At what point do economics not work at all? State specific threshold values (e.g., "If CAC exceeds $X or churn exceeds Y%, LTV:CAC falls below 1:1").
Produce: four scenarios in register format.
Gate: scenarios_built: bool -- all four scenarios with specific numbers, pessimistic stress-tests assumptions.
- Pass: Step 7.
- Fail: If pessimistic is barely different from base, it is not a real stress test. Apply: 3x CAC, 40% smaller segment, 2x churn. If strategy only works in optimistic scenario, that is a finding.
Step 7: Mode-Specific Validation [R]
| Mode | Check | Required | |------|-------|----------| | VENTURE | LTV:CAC in base scenario | > 3x | | VENTURE | Payback in base scenario | 5x | | BOOTSTRAP | Payback in base scenario | < 6 months | | BOOTSTRAP | Path to profitability | Within runway |
If base scenario fails mode thresholds, flag as critical finding.
Produce: mode validation result.
Gate: mode_validated: bool -- all mode-relevant thresholds checked with pass/fail.
- Pass: Step 8.
- Fail: Threshold failure is a finding, not a blocker. Report which threshold failed, by how much, and what would need to change.
Step 8: Write Hypothesis [S]
Write complete unit economics hypothesis in register format:
- Claim: One paragraph stating revenue model, LTV:CAC range, payback range, gross margin trajectory.
- Evidence: All calculations with sources and tier labels.
- Mode Thresholds: Table with required vs estimated for each metric.
- Scenario Analysis: Optimistic, base, pessimistic, kill -- with specific numbers.
- Assumptions: Every input that is T2 or T3 is an assumption (with tier, load-bearing flag, blast radius).
- Kill Condition: At what LTV:CAC ratio or payback period does this stop working? State specific numbers.
- Possibility Space: What alternative revenue models were considered and why eliminated.
Produce: complete unit economics hypothesis in register format.
Gate: hypothesis_written: bool -- all fields populated, no point estimates (all ranges), kill condition has specific thresholds.
- Pass: Done.
- Fail: Fix missing fields or convert point estimates to ranges.
Quality Criteria
- All calculations shown, not just results
- Every input cites source and carries tier label
- Three scenarios presented (optimistic, base, pessimistic) plus kill scenario
- Gross margin accounts for AI inference costs if applicable
- Mode-specific thresholds explicitly checked (pass/fail with numbers)
- No point estimates -- ranges throughout
- Cost structure broken into fixed and variable with category detail
Failure Modes
| Mode | Signal | Recovery | |------|--------|----------| | Premature precision | Specific CAC ($47.32) or LTV ($2,847) stated as if measured | These are pre-launch estimates. Present as ranges: CAC $30-$80. Cite the benchmark or assumption behind each bound | | Optimistic-only scenario | Only base case presented, or pessimistic case is barely different from base | Pessimistic must stress-test: 3x CAC, 40% smaller segment, 2x churn. If the strategy works only in the optimistic scenario, that is a finding | | Revenue without cost structure | LTV:CAC calculated but gross margin assumed at 80% without COGS analysis | Calculate actual COGS. AI inference costs can push margins below 60%. If COGS are genuinely low, document why | | Disappearing uncertainty | T2 pricing estimate becomes T1 input to LTV calculation | Output tier = max(input tiers). If ARPU is T2 and churn is T2, LTV is T2. If any input is T3, LTV is T3 |
Boundaries
In scope: LTV/CAC/payback calculation, cost structure (fixed + variable), gross margin analysis, benchmark validation, growth-model-specific metrics, scenario analysis, mode-specific threshold validation, tier propagation.
Out of scope: Pricing design (stg-designing-pricing), market sizing (stg-sizing-markets), competitive analysis (stg-analyzing-competition), solution design (stg-designing-solutions).
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: BellaBe
- Source: BellaBe/strategy-os
- License: MIT
- Homepage: https://bellabe.github.io/leanos/
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet — be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.