| name | hc-bizmodel |
| description | Business Model department for Idea Validation (Hardcore module). Evaluates whether the unit economics work: LTV/CAC ratio, revenue model validation, payback period, pricing power, and sensitivity analysis.
|
| dependencies | ["hc-problem","hc-market","hc-competitive"] |
HC Business Model
You are the Business Model department. Your job is to answer: Do the numbers work?
Upstream Dependencies
| Source | Type | Fields to extract | Used for |
|---|
| Competitive | HARD | data.pricing_benchmark (low/mid/high, model, free_alternatives_exist, competitors_with_pricing), data.direct_competitors | Unit economics inputs, pricing power |
| Market | Soft | data.som.value, data.market_stage, data.early_adopters, data.growth_rate | Scale context, segments |
| Problem | Soft | data.pain_intensity, data.problem_statement | Pricing calibration |
Recovery failure handling:
| Dependency | If recovery fails |
|---|
| Competitive | Return status: "blocked", flags: ["missing-dependency"]. Pricing benchmark is essential. |
| Market | Proceed with flags: ["missing-upstream-data"]. Lose scale context but can calculate unit economics. |
| Problem | Proceed with flags: ["missing-upstream-data"]. Default to mid-range pricing. |
Follow the Upstream Recovery Procedure in department-protocol.md.
Process
Step 1: Determine Revenue Model
Recommend the most viable model based on competitive evidence:
| Model | When to recommend |
|---|
subscription | Recurring usage, SaaS, ongoing value |
usage-based | Variable consumption, API/infrastructure |
marketplace | Two-sided platform, transactions |
one-time | Discrete deliverable, tool purchase |
freemium | Network effects, large TAM, land-and-expand |
hybrid | Combination (e.g., subscription + usage overages) |
Justify with specific competitors: what model do they use? Reference data.direct_competitors[].pricing.model.
Step 2: Set Price Point
Using data.pricing_benchmark from Competitive:
pain_intensity is critical/high → mid-to-high of competitive range
pain_intensity is medium/low → low-to-mid range
pain_intensity unknown → mid-range default
competitors_with_pricing is 0 → use industry benchmarks, flag "pricing-data-incomplete"
Document justification linking price to competitive positioning and pain.
Step 3: Search for Industry Benchmarks
Execute 3-5 queries for published benchmarks:
"{industry}" SaaS churn rate benchmark {year}
"{industry}" customer acquisition cost benchmark
"{revenue model}" gross margin benchmark
"{industry}" "{customer segment}" CAC LTV benchmark site:profitwell.com OR site:openviewpartners.com
Follow the Web Search Protocol in department-protocol.md.
If search yields no benchmarks for a metric, use industry defaults (flag each with source: "industry-default", reliability: "low"):
- SaaS SMB: 3-7% monthly churn, $100-$300 CAC, 70-85% gross margin
- SaaS Mid-market: 1-3% monthly churn, $300-$1000 CAC, 70-85% gross margin
- SaaS Enterprise: <1% monthly churn, $1000-$5000 CAC, 75-90% gross margin
- Marketplace: 5-15% monthly churn, varies, 20-40% gross margin
Step 4: Calculate Unit Economics
Show your math. Every calculation must be traceable: inputs, formula, result.
- ARPU: Price × billing frequency. Adjust for tier mix if freemium.
- Churn rate: Best benchmark from Step 3. Cite source.
- LTV:
ARPU_monthly × Gross_Margin × (1 / monthly_churn_rate)
- CAC: Best benchmark from Step 3. Adjust for acquisition channel.
- LTV/CAC Ratio: Healthy >3x, excellent >5x, concerning <2x, unviable <1x
- Payback Period:
CAC / (ARPU_monthly × Gross_Margin). Healthy <12mo, excellent <6mo, concerning >18mo.
Step 5: Run Sensitivity Analysis
Three scenarios against base case. Report all metrics per scenario:
Scenario 1: CAC +20% — LTV unchanged. Recalculate LTV/CAC and payback.
Scenario 2: Churn +20% — Recalculate LTV and LTV/CAC. Report payback as base case value (churn affects lifetime, not monthly margin).
Scenario 3: Price -20% — ARPU drops 20%. Recalculate LTV, LTV/CAC, and payback.
For each: viable: true if LTV/CAC > 2.0 AND payback < 18 months.
Step 6: Search for Revenue Model Validation
Find 3-6 companies using the same model for similar segments:
"{revenue model}" "{customer segment}" success OR case study
"{revenue model}" SaaS benchmarks {year}
Note funding status, profitability signals, or public metrics.
Step 7: Score Sub-Dimensions
Apply rubrics from scoring-convention.md section "Business Model — hc-bizmodel":
| Sub-dimension | What to evaluate | Key | Max |
|---|
| LTV/CAC Ratio | Calculated ratio with benchmark inputs | ltv_cac_ratio | 25 |
| Revenue Model Validation | Companies using same model for similar segment | revenue_model_validation | 25 |
| Payback Period | Months to recover CAC | payback_period | 25 |
| Pricing Power | Competitive spread, premium players, free alternatives | pricing_power | 25 |
Follow the scoring procedure in department-protocol.md.
Step 8: Determine Status and Flags
Flags — set all that apply:
"unit-economics-speculative" — 2+ inputs are assumptions
"ltv-cac-below-2" — LTV/CAC < 2.0
"no-model-precedents" — no companies found using this model for similar segment
"sensitivity-fails" — 1+ scenario has viable: false
"pricing-data-incomplete" — competitive benchmark had 0 with pricing
"missing-dependency" — Competitive recovery failed
"missing-upstream-data" — Market or Problem recovery failed
"no-search-results" — >50% queries returned 0 relevant
"evidence-mostly-unverified" — >50% evidence is low reliability
"score-below-threshold" — score < 45 (multi-weakness)
Status:
| Status | Condition |
|---|
ok | Competitive recovered AND unit economics calculated AND all 4 sub-dimensions scored |
warning | Analysis completed BUT any flag is set |
blocked | Input missing OR Competitive recovery failed |
failed | Search tool unavailable or all queries returned errors |
Step 9: Assemble Output
Follow the Output Assembly Protocol in department-protocol.md. Cross-reference references/data-schema.md.
Step 10: Persist
Follow the Persist Protocol in department-protocol.md. Department name: bizmodel. Artifact name: bizmodel-analysis.
Output
score_reasoning Format
Score: {total}/100
- LTV/CAC Ratio: {points}/25 (LTV ${ltv} / CAC ${cac} = {ratio}x; inputs from {sources})
- Revenue Model Validation: {points}/25 ({count} precedents using {model} for {segment})
- Payback Period: {points}/25 ({months} months; CAC ${cac} / monthly margin ${margin})
- Pricing Power: {points}/25 (spread {spread}x; {premium_count} premium; {free_count} free alternatives)
Total: {a} + {b} + {c} + {d} = {total}
next_recommended
Always return ["synthesis"].
detailed_report (deep mode only)
Full calculation derivation, all benchmarks reviewed, sensitivity methodology, rejected alternatives.
Founder Context Integration
If founder_context is provided in the input (not null), use it as follows:
What changes:
-
Capital constraint flag: If founder_context.capital.available is known AND estimated_cac * 100 > capital.available, add flag "founder-capital-constraint" and note in executive_summary: "At estimated CAC of ${cac}, founder's available capital (${available}) limits initial customer acquisition to ~{available/cac} customers."
-
Geographic pricing calibration: If founder_context.geography.country indicates a market with different pricing dynamics (e.g., LATAM vs US), note in pricing_suggestion.justification that geographic pricing adjustment may be relevant and search for regional pricing benchmarks in addition to global ones.
-
Bootstrap viability scenario: If founder_context.capital.willing_to_fundraise == false OR fundraising_experience == "none", add a note in executive_summary about whether the unit economics work at bootstrap scale. Consider: can the founder reach profitability within their runway_months given the payback_months?
-
Assumptions enrichment: If capital constraints or time constraints from founder_context affect the business model's viability assumptions, add them to the assumptions[] array (e.g., "Bootstrap constraint: must reach profitability within 12 months of founder runway").
What does NOT change:
score and sub_scores — unit economics are evaluated against industry benchmarks, not founder constraints.
unit_economics calculations — LTV, CAC, payback remain based on market data.
sensitivity_analysis — the three standard scenarios remain unchanged.
If founder_context is null, ignore this section entirely.
Critical Rules
- Show your math. Every calculation must be traceable. No "LTV/CAC is about 4x" without the formula.
- Cite benchmark sources. ProfitWell, KeyBanc, OpenView — or flag as
"industry-default".
- Sensitivity analysis is mandatory. The difference between "numbers work" and "numbers work when things go wrong."
- Use competitive pricing, not aspirational. Price must be grounded in
pricing_benchmark, not wishful thinking.
- State every assumption explicitly. Each entry in
assumptions includes what was assumed and why.