agentleFS
pooriaarabpooriaarab/skills/unit-economics/SKILL.md

unit-economics

Skill1 starsChanged 5 days agoMITView on GitHub

Use when a founder or growth team asks 'can we afford paid acquisition?', 'what is our CAC payback?', 'calculate LTV:CAC', 'what is our SaaS unit economics?', 'is this channel profitable?', or 'how much can we spend to acquire a customer?'. Use it to connect Stripe revenue, PostHog retention, and channel attribution before scaling acquisition. Do not use for Stripe billing implementation, product retention instrumentation, or ad platform setup alone.

22 other projects use a version of this.

Adopted by

Most recently taken up by

Used with

Projects with it also use pricing-strategy and market-research.

Other files people use alongside this one.

Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
  • silvainfmSkill

    pricing-strategy

    When the user wants help with pricing decisions, packaging, or monetization strategy. Also use when the user mentions 'pricing,' 'pricing tiers,' 'freemium,' 'free trial,' 'packaging,' 'price increase,' 'value metric,' 'Van Westendorp,' 'willingness to pay,' or 'monetization.' This skill covers pricing research, tier structure, and packaging strategy.

    Also in 3 projects that use this

  • birne-skSkill

    market-research

    Professional market research and competitive analysis using McKinsey/BCG/Bain consulting methodologies. Use when analyzing markets, competitive landscapes, customer insights, or strategic positioning. Generates hypothesis-driven research with PPTX presentation deliverables.

    Also in 3 projects that use this

The file

We split this skill into the rules it gives an agent

11 rules. 0 are common, 10 are distinctive, and 1 is very specific to this project.

  • 0

    Common

    Most of the 15 edited versions we read keep these.

  • 10

    Distinctive

    This author's own choices. Worth a look.

  • 1

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Use PostHog for product retention cohorts.

    line 10
  2. Distinctive:

    Keep each number's source, customer unit, revenue basis, and time window visible.

    line 22
  3. Distinctive:

    Use expected gross profit over a bounded horizon instead.

    line 47
  4. Distinctive:

    Use Stripe billing state to confirm paying-customer churn.

    line 58
  5. Distinctive:

    Do not call a user retained because an invoice exists, or churned because one event was missed.

    line 59
  6. Distinctive:

    Use this formula for each channel and cohort:

    line 64
  7. Distinctive:

    Treat 3:1 as a conversation starter, not a law or industry average.

    line 95
  8. Distinctive:

    Keep product development and general overhead outside contribution margin unless they vary with each customer.

    line 121
  9. Distinctive:

    Do not tune bids or declare a channel good from a tiny sample.

    line 127
  10. Distinctive:

    If the interval crosses the spending rule, the result is not ready for scaling.

    line 133
  11. Very specific:

    Use a bounded horizon. Expected retention in month t is 0.99^(t-1).

    line 167

“Common” is measured: kept by at least 6 in 10 of the 15 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Unit economics

Acquire customers only when expected contribution can repay CAC within the business's cash limit. A good-looking LTV:CAC ratio does not prove this. Use Stripe for paid revenue, refunds, and payment fees. Use PostHog for product retention cohorts. Use the finance ledger for other costs.

When to use this

Trigger if: the ask mentions unit economics, LTV, CAC, CAC payback, contribution margin, channel profitability, paid acquisition limits, or whether a growth channel is affordable.

Skip if: the ask only adds Stripe subscriptions, measures product retention, or configures an ad platform. Point those tasks to saas-billing-stripe, product-analytics, or the relevant skill.

1. The four numbers that matter

Keep each number's source, customer unit, revenue basis, and time window visible.

NumberDefinitionMain source
Gross margin(revenue - COGS) / revenueStripe plus the cost ledger
CACFully loaded acquisition cost / new paying customersFinance, channel data, time records
LTVExpected gross profit per customer over a stated horizonStripe, PostHog, cost data
PaybackCAC / monthly contribution margin per customerThe four numbers plus a cash policy

Stripe provides payment amounts, refunds, and fees. Its balance reports show gross, fee, and net activity. Its balance transactions expose amount, fee, and net for individual balance movements.

Stripe does not provide CAC or product churn. PostHog provides retention cohorts from a defined start event and return event. Read its retention documentation before choosing them. PostHog does not provide cash revenue. Mixing definitions causes different people to quote different numbers.

Write these choices beside every report: customer unit, collected or recognized revenue, cohort window, acquisition date, logo or revenue churn, and included costs. Exclude sales tax collected for a government. Include refunds, credits, and discounts according to the chosen revenue basis. Keep cash and recognized revenue in separate columns when they differ.

2. Compute LTV honestly

The textbook formula is:

LTV = monthly ARPA * gross margin / monthly logo churn

It assumes constant churn forever. It overstates a young product because its churn window is short, its denominator is unstable, and early customers may not represent the target market. It also hides expansion, contraction, refunds, discounts, annual plans, and different segments.

Use expected gross profit over a bounded horizon instead. Twelve or twenty-four months is useful when the product has limited history.

bounded gross profit per customer
  = sum(monthly gross profit * probability customer remains active in month t)
    for t = 1 through the chosen horizon

For a cohort, replace probability with observed retention for each month. Use PostHog's activation event as the cohort start and a meaningful product action as the return event. Do not use logins when value comes from a completed job or report. See product-analytics for event identity.

Use Stripe billing state to confirm paying-customer churn. Use PostHog retention to explain product value. Do not call a user retained because an invoice exists, or churned because one event was missed. Report conservative, base, and optimistic cases. Change churn, ARPA, margin, and expansion separately.

3. CAC must be fully loaded

Use this formula for each channel and cohort:

CAC = (ad spend + channel tools + agency or creative cost + human time cost)
      / new paying customers

Count people who pay, not impressions, leads, signups, or free accounts. Include founder time at a stated replacement cost for sales, content, support, or campaign work. Include commission, landing pages, lead tools, and experiment cost when they support acquisition.

Media-only CAC flatters every channel. Organic CAC is not zero when content, partnerships, or sales time creates it. Align spend with the cohort it acquires. State attribution and conversion windows.

4. Payback constrains a bootstrapped factory

Payback measures how long the business funds a customer before recovering CAC from contribution.

payback months = fully loaded CAC / monthly contribution margin per customer

Use cash contribution when deciding whether the business can fund the next customer. A customer can be profitable over five years and still consume cash for eighteen months first. Growth increases that funding gap. An 18-month payback can bankrupt a company with a 5:1 LTV:CAC ratio.

At this size, payback usually matters more than the ratio. Set a maximum before a test starts. Stop or reduce a channel when conservative payback exceeds it. Annual prepayment can improve cash recovery. Report cash collection and revenue recognition separately. Do not treat an annual invoice as twelve months of earned profit.

5. Use LTV:CAC as a rule of thumb

LTV:CAC = expected gross profit per customer / fully loaded CAC

The familiar 3:1 rule came from David Skok's observations of SaaS companies. His SaaS Metrics 2.0 definitions explain that the original twelve-month payback guidance fit an older capital environment. He notes that healthy SaaS businesses can take about twenty months, while more than twenty-four months needs improvement.

Treat 3:1 as a conversation starter, not a law or industry average. A young product can show 3:1 only because its LTV assumes churn will stay low forever. Check bounded LTV, conservative payback, cash available, gross margin, and customer concentration. A high ratio with weak evidence is a forecast.

6. Calculate each channel, not only the blend

Blended CAC hides one channel subsidising another. Report CAC, activation, retention, payback, and bounded gross profit by channel. Point conversion work at ad-conversion-hub. Use its canonical conversion event and attribution fields. Keep the model, lookback window, and cost period beside each result.

Attribution is imperfect. Last-click credit does not prove a channel caused the purchase. Treat channel economics as directional until volume supports a holdout, geo test, or other incrementality test. Do not compare paid CAC with blended LTV. Paid cohorts may have different plans, retention, discounts, support load, and AI usage.

7. Calculate contribution margin per customer

Contribution margin is the money left after costs that increase when the customer uses or buys the product. Use it for payback and channel decisions.

monthly contribution margin
  = customer revenue - payment fees - refunds and usage credits
  - infrastructure cost - support cost - AI inference cost

Payment fees vary by method, market, and currency. Stripe's current pricing lists examples and says the fee depends on the payment method. Do not hardcode one rate. Reconcile actual fees from balance transactions or reports.

Map infrastructure to usage. Include requests, storage, database operations, queues, and data transfer when they rise with customer activity. Current Cloudflare Workers pricing shows why request and CPU usage need separate measurements.

Measure support time per customer with a loaded staff cost. If the product calls a model, record model, input size, output size, calls, retries, and cost per customer. Use the chosen provider's current price table. For Workers AI, check current inference pricing.

Keep product development and general overhead outside contribution margin unless they vary with each customer. Keep them in the cash plan. Positive contribution margin does not prove company profit.

8. Know when the numbers are too noisy

With very few customers, the confidence interval is wider than the decision. One cancellation can move churn, LTV, and payback by more than the proposed campaign budget.

Do not tune bids or declare a channel good from a tiny sample. Use a decision interval:

  • conservative case: worst credible retention and highest credible variable cost;
  • base case: current cohort estimate;
  • optimistic case: improvement that has evidence, not hope.

If the interval crosses the spending rule, the result is not ready for scaling. Cap the test budget. Define the next evidence needed. Use interviews, founder-led sales, pricing tests, and activation work before buying more traffic. Label each input observed, estimated, or assumed. Recompute the same definitions each month.

9. Worked example

Assume a paid channel spends $7,000 and produces five new paying customers.

CAC = $7,000 / 5 = $1,400

The $7,000 includes $5,000 media, $300 tools, $700 founder sales time, and $1,000 creative. The subscription price is $100 per month.

payment fee                 = $100 * 2.9% + $0.30 = $3.20
infrastructure              = $5.00
support                     = $7.00
AI inference                = $8.00
monthly contribution        = $100 - $3.20 - $5 - $7 - $8 = $76.80
gross margin                = $76.80 / $100 = 76.8%
payback                     = $1,400 / $76.80 = 18.23 months

The card rate is illustrative. Confirm the account's actual Stripe rate before using the result. For this example, all listed delivery costs are COGS, so gross and contribution margins match. Assume PostHog shows 1% monthly logo churn. The textbook result looks strong:

textbook LTV       = $100 * 76.8% / 1% = $7,680
textbook LTV:CAC   = $7,680 / $1,400 = 5.49:1

Use a bounded horizon. Expected retention in month t is 0.99^(t-1).

12-month gross profit = $76.80 * (1 - 0.99^12) / (1 - 0.99)
                      = $76.80 * 11.36
                      = $872.45
12-month LTV:CAC      = $872.45 / $1,400 = 0.62:1

The ratio looks excellent only under an infinite-horizon assumption. The 18-month payback and bounded result say this channel is not yet affordable for a cash-constrained business.

Checklist

  • Define the customer unit, revenue basis, cohort window, and churn definition.
  • Pull payment, refund, and fee data from Stripe.
  • Pull activation and retention cohorts from PostHog.
  • Record infrastructure, support, AI inference, tools, and human time costs.
  • Calculate gross margin and contribution margin separately.
  • Calculate fully loaded CAC from acquisition cost and new paying customers.
  • Use bounded expected gross profit for a young product.
  • Set a maximum conservative payback before funding a channel.
  • Report LTV:CAC beside payback and cash needs.
  • Break out every channel and document attribution limits.
  • Label each input as observed, estimated, or assumed.
  • Stop scaling when the confidence interval crosses the decision rule.
  • Recompute the same definitions each month.
  • Point billing implementation to saas-billing-stripe.
  • Point event and cohort implementation to product-analytics.

Related

  • grow-a-product — the gate this skill answers before any paid spend.
  • pricing-page — change the price and every number here moves.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.