Why
Most of the roles I’m applying for ask about financial models, CAC and payback. I’ve been managing those for two years under different names. This is the translation. It took one afternoon with the Stripe export and a short script, and it told me where the next dollar should go.
The numbers
| Metric | How I calculated it | Value | What it told me |
|---|---|---|---|
| Gross margin | 1 minus team pay as a percent of revenue. Teams are paid flat per job, so labor is the whole cost of delivery. | ~48% (team pay 52%, down from 57%) | Five points of margin came from benchmarking rates and fixing deep-clean labor estimates, not from paying teams less. |
| Marketing spend, % of revenue | Total marketing spend divided by revenue, by year | Year 1: ~50% Year 2: ~15% Year 3: ~12% | Year one bought the customer base. Recurring clients and referrals now carry most of the growth. |
| Recurring share of revenue | Revenue from customers with 2+ cleans, divided by total Stripe revenue | ~88% | Most of our revenue repeats, so keeping customers matters more than winning one-time jobs. |
| CAC per recurring customer | Marketing spend for the year divided by new recurring customers that year | Year 1: ~$1,280 Year 2: ~$545 | More than halved in a year, mostly by cutting the channel that looked cheap and wasn’t (below). |
| CAC by channel | Channel spend divided by recurring customers the channel produced, not leads | Google LSA: ~$650 Thumbtack, recurring-only: ~$250 | LSA looked cheap at $195 per lead. Measured per recurring customer it was the expensive one. Moved the spend. |
| Monthly gross profit per recurring customer | Median monthly revenue per recurring customer (~$260) times gross margin | ~$125 | The unit everything else is priced against. |
| CAC payback | CAC per recurring customer divided by monthly gross profit per customer | Year 2: about 4.4 months | A new recurring client pays for their own acquisition in under five months. That’s what makes the 12% marketing budget possible. The goal is under 90 days on every channel. |
| LTV to CAC | Lifetime gross profit per recurring customer divided by CAC | ~2.5x to 3x | Healthy for a services business. Customers who stay past the first few months average more than a year with us and ~$5,000 in revenue each. |
Stripe covers most but not all billing, so counts are scaled to the full client base. Rates and per-customer figures are as measured.
What I’d change because of this
- Our acquisition costs are in a good place. The next dollar should go to keeping customers past their first few cleans, with a check-in after clean three and a price-lock offer around month three.
- Get payback under 90 days on every channel. Thumbtack is already there. The next step is measuring each channel’s payback separately and cutting or fixing whatever runs long.
- Track this quarterly instead of once. The script exists, and it’s a 10-minute refresh.