mirror of
https://github.com/magnus919/agent-skills.git
synced 2026-09-11 19:47:12 +03:00
a45952d9c1
* feat(skill): beef up financial-modeling with templates/scripts/evals Add a schema-valid eval manifest (6 cases: unit-economics review, pricing decision, fundraising scenario, SaaS metrics interpretation, model sanity check, runway and burn analysis), four fillable templates (unit-economics record, pricing decision record, fundraising scenario, model sanity checklist), a stdlib SaaS-metrics calculator (ARR, monthly and annualized logo churn, NDR, Rule of 40) with a unittest suite, and a README Quick Start documenting the script. Closes #241. Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> * fix(skill): guard churn prints in saas-metrics human output print_human indexed monthly_logo_churn_pct and annualized_logo_churn_pct unconditionally while compute_metrics only populates them when churn inputs are given, so human-readable runs without churn inputs (--mrr alone, --mrr + NDR, --mrr + growth/margin) crashed with a KeyError (exit 1), violating the script's documented 0/2 exit-code contract. Guard both churn print lines with `if 'monthly_logo_churn_pct' in metrics:`, mirroring the existing NDR and Rule-of-40 guards, and add a regression test class covering human output with churn omitted. Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> --------- Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2.2 KiB
2.2 KiB
Unit Economics Record
Fill one record per customer segment or acquisition channel. A unit-economics
number without a stated segment, period, and definition is not comparable. If a
field does not apply, write n/a — do not leave it blank.
Context
- Segment / channel:
[fill: e.g. self-serve SMB via paid search] - Currency:
[fill: e.g. USD] - Measurement period:
[fill: e.g. trailing 3 months ending 2026-06-30] - Accounting basis:
[fill: cash or accrual; revenue recognition convention] - Prepared by / date:
[fill: name or handle, YYYY-MM-DD]
Inputs
| Input | Value | Source / definition |
|---|---|---|
| Monthly ARPU (or annual contract value) | [fill: amount] |
[fill: how revenue per customer is measured; what is excluded] |
| Gross margin % | [fill: percent] |
[fill: which costs are included in COGS] |
| CAC | [fill: amount] |
[fill: blended or channel-specific; which spend is included] |
| Monthly logo churn % | [fill: percent] |
[fill: population and period used] |
| Monthly revenue churn % (if different) | [fill: percent or n/a] |
[fill: contraction and churn treatment] |
| Expansion / upsell revenue | [fill: amount per period or n/a] |
[fill: what counts as expansion] |
| Contribution margin % (if used) | [fill: percent or n/a] |
[fill: variable costs included] |
Calculations
- Simple LTV = monthly ARPU x gross margin % / monthly churn rate =
[fill: result] - LTV/CAC =
[fill: result] - CAC payback (gross-margin basis, months) = CAC / (monthly ARPU x gross margin %) =
[fill: result] - Contribution-margin payback (if used, months) =
[fill: result or n/a] - Cohort LTV (if computed) =
[fill: result and method or n/a]
Interpretation
- Where this segment sits vs. context-dependent heuristics for its stage and model:
[fill: assessment] - What the payback implies for financing needs:
[fill: assessment] - Risks to the inputs (churn stability, margin drift, channel mix):
[fill: risks]
Decisions & Follow-Ups
- Decision this record supports:
[fill: e.g. continue spending on channel, change price] - Next measurement date:
[fill: YYYY-MM-DD] - Open questions:
[fill: what to validate next]