Unit Economics
The gate that runs before building. An agent's most common expensive mistake is producing
something beautiful that cannot pay for its own acquisition.
The seven numbers
Compute all seven. If a number is unknown, write UNKNOWN + how I'd get it — never a plausible guess.
| # |
Number |
Definition |
Note |
| 1 |
Price |
What the customer pays per unit per period |
Unit = seat / lead / project / month |
| 2 |
Gross margin / unit |
Price − direct delivery cost (fees, hosting, data, contractor) |
Payments take ~3–4%; marketplaces 10–30% |
| 3 |
CAC |
Total cost to acquire one paying customer (ad spend + tooling + your hours × your rate) |
The hours line is the one everyone hides |
| 4 |
Conversion path |
Impressions → clicks → leads → conversations → customers, each as a rate |
Multiply to get lead-to-customer |
| 5 |
Payback period |
CAC ÷ (monthly gross margin) |
If > 12 months for a small business, treat as bad |
| 6 |
Churn / repeat rate |
% lost per month, or average number of purchases |
Determines whether LTV is real |
| 7 |
LTV |
Gross margin × average customer lifespan (or × purchases) |
Use gross margin, never revenue |
Then the two derived gates:
- LTV : CAC — below 1:1 = destroying money; 3:1 = healthy for outbound/SMB;
below 2:1 on a paid channel is fragile.
- Break-even volume = fixed cost ÷ gross margin per unit. State it as "we need N customers/month
to cover fixed costs", then check it against the reachable list size.
Three columns, always
Never present one column. Every table gets:
|
Pessimistic |
Base |
Optimistic |
| Reply rate |
|
|
|
| Lead→customer |
|
|
|
| CAC |
|
|
|
| Payback (mo) |
|
|
|
| LTV:CAC |
|
|
|
| Break-even customers/mo |
|
|
|
Decision rule: the plan must clear on the Pessimistic column, or it is a bet, labelled as one.
If it only clears on Optimistic, say so in the first line of the output.
Benchmarks to calibrate against (grade per thinking/evidence-grading — these are priors, not truths)
| Channel |
Typical cold reply |
Typical lead→sale |
| Targeted B2B cold email (warmed domain, small volume) |
1–10% |
5–20% |
| Untargeted bulk email |
~0–1% and deliverability damage |
— |
| Cold DM (LinkedIn/X) |
5–20% response, low qualify rate |
1–5% |
| Local SMB door/phone |
10–30% contact |
10–25% |
| Inbound content/SEO |
slow (3–9 months) |
1–5% |
| Paid search (intent) |
— |
2–10% on landing page |
Use these only as the pessimistic column's starting point. Then replace them with our own measured
numbers as soon as one campaign has run. A benchmark that has never been replaced by a measurement
after 30 days is a sign the campaign isn't being instrumented.
Procedure
- Write the funnel out loud as arithmetic with numbers, one line per stage:
1000 reached × 4% reply = 40 conversations × 15% close = 6 customers
- Cost each stage. Include tooling, list cost, sender domain, time at an explicit hourly rate
(use $50/h as a default placeholder for skilled work; state it).
- Compute all seven numbers, three columns.
- Apply the gates. Payback < 12 mo (or < 3 mo for one-off low-ticket), LTV:CAC ≥ 2 (≥3 preferred),
break-even customers ≤ (reachable list × pessimistic conversion).
- Find the binding constraint — usually the size of the reachable list or deliverability,
not the price. Say which it is.
- State the pre-condition for the numbers to hold: "these assume a warmed domain sending ≤30/day"
or "these assume the list is genuinely 500 qualified records, not 5,000 scraped rows".
- Write kill criteria into the plan (
thinking/decision-quality §4): e.g. "kill if reply rate
< 2% after 100 sends" or "kill if CAC > $X after the first $200 of spend".
Worked shape (illustrative, must be replaced with real numbers)
OFFER: $300 one-time website build for local service businesses
Gross margin/unit: $300 − $20 (hosting/domain) − $60 (template labour) = $220
Funnel (pessimistic): 400 contacted × 3% reply = 12 conversations × 20% close = 2.4 customers
Cost to reach 400: list $0 (public directories) + tooling $25 + 20h × $50 = $1,025
CAC (pessimistic): $1,025 / 2.4 = $427 → CAC > price. NOT VIABLE at 20h.
Base (10h, 5% reply, 25% close): $525 / 5 = $105 → LTV:CAC single-purchase 2.1 → marginal
Break-even at $500 fixed/mo: 3 customers/mo → requires ~500 contacts/mo
BINDING CONSTRAINT: my hours per build, not demand.
IMPLICATION: automate build (template + config) or raise price to $1,200 with a result guarantee.
Note what the worked shape does: it changed the plan. Numbers that don't change the plan were
decorative.
Rules
- Never quote revenue as profit. Gross margin after fees is the only number that compounds.
- Always include your own hours, at an explicit rate. Free labour makes almost anything "viable".
- One-off vs recurring changes everything. Recurring margin pays CAC back; one-off needs margin
≥ CAC at first purchase.
- Refunds and chargebacks count. For infoproducts/services, assume 5–10% in pessimistic.
- Money math is a
surface_finding. I do not spend, price, or invoice. I produce the table and
the recommendation; Carl decides and executes.
1---2name: unit-economics3description: Compute CAC, LTV, payback period, contribution margin, and the break-even conditions for any offer, channel, or campaign before time or money is spent on it. Use whenever a plan involves acquiring customers, pricing anything, spending on ads or outreach, or judging whether a channel "works". Triggers on "is this profitable", "will this pay for itself", "CAC", "LTV", "ROI", "break-even", "how many customers do we need", "ad budget".4---56# Unit Economics78The gate that runs *before* building. An agent's most common expensive mistake is producing9something beautiful that cannot pay for its own acquisition.1011## The seven numbers1213Compute all seven. If a number is unknown, write `UNKNOWN + how I'd get it` — never a plausible guess.1415| # | Number | Definition | Note |16|---|---|---|---|17| 1 | **Price** | What the customer pays per unit per period | Unit = seat / lead / project / month |18| 2 | **Gross margin / unit** | Price − direct delivery cost (fees, hosting, data, contractor) | Payments take ~3–4%; marketplaces 10–30% |19| 3 | **CAC** | Total cost to acquire one paying customer (ad spend + tooling + **your hours × your rate**) | The hours line is the one everyone hides |20| 4 | **Conversion path** | Impressions → clicks → leads → conversations → customers, each as a rate | Multiply to get lead-to-customer |21| 5 | **Payback period** | CAC ÷ (monthly gross margin) | If > 12 months for a small business, treat as bad |22| 6 | **Churn / repeat rate** | % lost per month, or average number of purchases | Determines whether LTV is real |23| 7 | **LTV** | Gross margin × average customer lifespan (or × purchases) | Use *gross margin*, never revenue |2425Then the two derived gates:26- **LTV : CAC** — below **1:1** = destroying money; **3:1** = healthy for outbound/SMB;27 below 2:1 on a paid channel is fragile.28- **Break-even volume** = fixed cost ÷ gross margin per unit. State it as "we need N customers/month29 to cover fixed costs", then check it against the reachable list size.3031## Three columns, always3233Never present one column. Every table gets:3435| | Pessimistic | Base | Optimistic |36|---|---|---|---|37| Reply rate | | | |38| Lead→customer | | | |39| CAC | | | |40| Payback (mo) | | | |41| LTV:CAC | | | |42| Break-even customers/mo | | | |4344**Decision rule: the plan must clear on the Pessimistic column, or it is a bet, labelled as one.**45If it only clears on Optimistic, say so in the first line of the output.4647## Benchmarks to calibrate against (grade per `thinking/evidence-grading` — these are priors, not truths)4849| Channel | Typical cold reply | Typical lead→sale |50|---|---|---|51| Targeted B2B cold email (warmed domain, small volume) | 1–10% | 5–20% |52| Untargeted bulk email | ~0–1% and deliverability damage | — |53| Cold DM (LinkedIn/X) | 5–20% response, low qualify rate | 1–5% |54| Local SMB door/phone | 10–30% contact | 10–25% |55| Inbound content/SEO | slow (3–9 months) | 1–5% |56| Paid search (intent) | — | 2–10% on landing page |5758Use these only as the pessimistic column's *starting point*. Then replace them with our own measured59numbers as soon as one campaign has run. A benchmark that has never been replaced by a measurement60after 30 days is a sign the campaign isn't being instrumented.6162## Procedure63641. **Write the funnel out loud** as arithmetic with numbers, one line per stage:65 `1000 reached × 4% reply = 40 conversations × 15% close = 6 customers`662. **Cost each stage.** Include tooling, list cost, sender domain, time at an explicit hourly rate67 (use $50/h as a default placeholder for skilled work; state it).683. **Compute all seven numbers**, three columns.694. **Apply the gates.** Payback < 12 mo (or < 3 mo for one-off low-ticket), LTV:CAC ≥ 2 (≥3 preferred),70 break-even customers ≤ (reachable list × pessimistic conversion).715. **Find the binding constraint** — usually *the size of the reachable list* or *deliverability*,72 not the price. Say which it is.736. **State the pre-condition** for the numbers to hold: "these assume a warmed domain sending ≤30/day"74 or "these assume the list is genuinely 500 qualified records, not 5,000 scraped rows".757. **Write kill criteria** into the plan (`thinking/decision-quality` §4): e.g. "kill if reply rate76 < 2% after 100 sends" or "kill if CAC > $X after the first $200 of spend".7778## Worked shape (illustrative, must be replaced with real numbers)7980```81OFFER: $300 one-time website build for local service businesses82Gross margin/unit: $300 − $20 (hosting/domain) − $60 (template labour) = $22083Funnel (pessimistic): 400 contacted × 3% reply = 12 conversations × 20% close = 2.4 customers84Cost to reach 400: list $0 (public directories) + tooling $25 + 20h × $50 = $1,02585CAC (pessimistic): $1,025 / 2.4 = $427 → CAC > price. NOT VIABLE at 20h.86Base (10h, 5% reply, 25% close): $525 / 5 = $105 → LTV:CAC single-purchase 2.1 → marginal87Break-even at $500 fixed/mo: 3 customers/mo → requires ~500 contacts/mo88BINDING CONSTRAINT: my hours per build, not demand.89IMPLICATION: automate build (template + config) or raise price to $1,200 with a result guarantee.90```9192Note what the worked shape does: it *changed the plan*. Numbers that don't change the plan were93decorative.9495## Rules9697- **Never quote revenue as profit.** Gross margin after fees is the only number that compounds.98- **Always include your own hours**, at an explicit rate. Free labour makes almost anything "viable".99- **One-off vs recurring changes everything.** Recurring margin pays CAC back; one-off needs margin100 ≥ CAC at first purchase.101- **Refunds and chargebacks count.** For infoproducts/services, assume 5–10% in pessimistic.102- **Money math is a `surface_finding`.** I do not spend, price, or invoice. I produce the table and103 the recommendation; Carl decides and executes.