1. Scope
The Micro-SaaS Pricing Engine produces three numbers — a price floor, a suggested price, and a price ceiling — from per-user cost, target gross margin, CAC-payback constraints, and a competitor anchor. It is a cost-and-anchor model. It does not survey willingness to pay, does not run Van Westendorp or Gabor-Granger, and does not estimate demand elasticity from your actual traffic.
2. Inputs and outputs
Inputs: per-user monthly cost (AI inference + hosting + auth + email, typically from the AI Stack Cost Calculator), target gross margin (default 75%), target CAC-payback months (default 12), blended CAC, average competitor price, and a positioning hint (value-priced / mid-market / premium).
Outputs: priceFloor (never charge less), suggestedPrice (based on the positioning mode), and priceCeiling (a premium-anchored bound).
Engine source: src/lib/micro-saas-pricing-engine/engine.ts.
3. Formula / scoring logic
# Price floor — two constraints, take the binding one
margin_floor = cost_per_user / (1 - target_gross_margin)
payback_floor = cac / (target_payback_months * target_gross_margin)
price_floor = max(margin_floor, payback_floor)
# Suggested price — competitor-anchored when the competitor data is real;
# otherwise fall back to margin-anchored.
if competitor_avg_price is set:
suggested_price = competitor_avg_price * positioning_multiplier
# value-priced -> 0.6 to 0.8
# mid-market -> 0.9 to 1.1
# premium -> 1.5 to 2.0
else:
suggested_price = cost_per_user * (1 / (1 - target_gross_margin)) * 1.5
# 1.5x margin floor as a default headroom
suggested_price = max(suggested_price, price_floor)
price_ceiling = max(competitor_avg_price * 2.5, suggested_price * 1.5)
4. Assumptions
- Two-constraint floor. Price must clear both the gross-margin constraint (cost coverage) and the CAC-payback constraint (recover acquisition in the target window). Whichever binds more tightly is the floor.
- Competitor-anchored preferred over margin-anchored when a real competitor set exists — buyers compare to a reference price before they compare to your cost structure.
- Positioning multiplier is editorial. Value (0.6–0.8×), mid-market (0.9–1.1×), premium (1.5–2.0×) reflect the pattern of published micro-SaaS pricing across Indie Hackers, MicroAcquire listings, and the OpenView 2024 sample. They are not statistically calibrated.
- Ceiling is a fence, not a forecast. A 2.5× competitor multiple rarely survives contact with buyers; the ceiling exists to flag experiments, not to encourage them.
- Per-user pricing model. Tiered or usage-metered products need to be sliced by tier and run through the engine once per tier.
5. Data sources
- OpenView SaaS Benchmarks 2024 — CAC-payback percentiles by stage.
- Paddle SaaS Benchmarks 2024 — gross-margin percentiles.
- SaaS Capital Annual Survey — bootstrapped-SaaS margin and pricing patterns.
6. Known limitations
- No willingness-to-pay model. Cost structure tells you the floor; buyer psychology sets the ceiling. Pair the suggested price with 5–10 customer interviews and an A/B pricing test before committing.
- Competitor anchor quality depends on the user. A bad competitor set (wrong segment, outdated pricing, anchor-priced loss leaders) produces a bad suggested price.
- No psychological pricing. The engine does not round to .95 / .99 thresholds or model anchoring effects.
- No multi-seat or per-feature modelling. Enterprise products with negotiated contracts need custom scaffolding on top of the output.
7. Reproducibility
Input
costPerUser = $2, targetMargin = 80%, targetPayback = 12, cac = $80, competitorAvg = $29, positioning = mid-market.
Expected output
margin_floor = $10, payback_floor ≈ $8.33, price_floor = $10. Competitor-anchored mid-market suggestion ≈ $29 × 1.0 = $29. Ceiling ≈ max($29 × 2.5, $29 × 1.5) = $72.50.
8. Change log
- 2026-04-24methodology page first published. Two-constraint floor and positioning-multiplier logic documented.