Build versus buy pitches almost always cheat the same way. The buy side quotes a headline monthly price and stops. The build side quotes a one-time cost and ignores the maintenance that follows it forever. Both numbers are real, and both are incomplete. This worksheet puts them on the same five-year timeline so the comparison is honest.
There are no vendor prices baked in. You fill in your own numbers, and the formulas below turn them into a five-year total for each path plus a break-even month. The point is not to prove owning wins. It is to show you the conditions under which it does, and the conditions under which renting is the right call.
The two paths, stated honestly
| Rent (SaaS subscription) | Own (code you run) | |
|---|---|---|
| Up-front | Near zero | One-time build or kit cost, plus setup hours |
| Recurring cash | Monthly subscription, scales with seats and usage | Hosting and services, flatter as you grow |
| Hidden cost | Per-seat and per-usage creep | Your maintenance and security labor |
| Exit cost | Data export and re-platform | None: you already hold the code and data |
The full worksheet below gives you the exact input list, the five-year formula for each path, a worked example with illustrative placeholder numbers you replace, and the break-even calculation. Drop your email to unlock it and download the worksheet as Markdown you can paste into a sheet.
Step 1: gather your inputs
Every value here is yours to supply. Nothing is assumed. Use your real numbers, or look up the published list price of the specific SaaS you are weighing.
- BUILD_ONCE: one-time cost to acquire the code (a boilerplate or kit purchase, or the hours to build it valued at your rate).
- SETUP_HOURS: hours to stand it up the first time, multiplied by RATE.
- HOST_MONTHLY: your monthly hosting and managed-service bill (database, app hosting, email, any paid APIs).
- MAINT_HOURS_MONTH: hours per month the stack realistically costs you (dependency updates, key rotation, the occasional incident).
- RATE: your blended hourly cost. Use what your time is actually worth, not zero.
- SAAS_MONTHLY: the incumbent’s published price for the seats you need today.
- SAAS_PER_SEAT: added monthly cost per new seat.
- SEAT_GROWTH: new seats you expect to add per year.
Founders love to set their own hourly rate to zero because the time feels free. It is not free: every hour on maintenance is an hour not shipping. Put a real number here even if it is low. A worksheet that values your time at zero will always tell you to build, which is exactly the bias you are trying to avoid.
Step 2: the five-year formulas
Sixty months. Both paths on the same clock.
OWN_5YR = BUILD_ONCE
+ (SETUP_HOURS * RATE)
+ (HOST_MONTHLY * 60)
+ (MAINT_HOURS_MONTH * RATE * 60)
RENT_5YR = sum over months 1..60 of:
SAAS_MONTHLY
+ (SAAS_PER_SEAT * seats_added_so_far)
~= (SAAS_MONTHLY * 60)
+ (SAAS_PER_SEAT * SEAT_GROWTH * average_seat_months)
where, for linear growth over 5 years,
average_seat_months ~= 60 * 5 / 2 = 150 seat-months per seat/year addedThe rent side is not a flat multiply. Seats compound: a seat you add in year one bills for the remaining four years too. The average_seat_months term captures that. If your seat count is flat, drop the second line and rent is simply SAAS_MONTHLY times 60.
Step 3: a worked example (placeholder numbers, replace them)
The figures below are placeholders chosen to show the arithmetic, not a claim about any real product or vendor. Replace every one with your own.
| Input | Placeholder value |
|---|---|
| BUILD_ONCE | $300 (kit purchase) |
| SETUP_HOURS x RATE | 8 hrs x $60 = $480 |
| HOST_MONTHLY | $35 |
| MAINT_HOURS_MONTH x RATE | 2 hrs x $60 = $120 |
| SAAS_MONTHLY | $200 |
| SAAS_PER_SEAT | $15 |
| SEAT_GROWTH | 3 seats/year |
OWN_5YR = 300 + 480 + (35 * 60) + (120 * 60)
= 300 + 480 + 2,100 + 7,200
= 10,080
RENT_5YR = (200 * 60) + (15 * 3 * 150)
= 12,000 + 6,750
= 18,750With these placeholders, owning lands near $10k and renting near $19k over five years. Notice what actually drives the own number: it is not the $300 kit, it is the $7,200 of maintenance labor. That is the honest headline. Code-to-own trades recurring subscription cash for your recurring attention. If your maintenance hours are low and your seat count grows, owning pulls ahead. If you have zero time to maintain anything and your team stays small, the subscription can be the rational buy.
Step 4: break-even
The month where cumulative own cost crosses cumulative rent cost. Below it, renting is cheaper; above it, owning is.
monthly_own_run_rate = HOST_MONTHLY + (MAINT_HOURS_MONTH * RATE)
monthly_rent_run_rate = SAAS_MONTHLY (+ seat creep)
up_front_own = BUILD_ONCE + (SETUP_HOURS * RATE)
break_even_month = up_front_own / (monthly_rent_run_rate - monthly_own_run_rate)
// worked: 780 / (200 - (35 + 120)) = 780 / 45 = ~17 monthsIn the worked example the paths cross at roughly month 17. Before that, the up-front build cost has not been earned back. After it, every month is money kept. If your break-even lands past the point where you would realistically re-platform anyway, renting was the right call and this worksheet just proved it. That is the point: a real model can recommend renting, and an honest one sometimes will.
One: what is your maintenance actually costing per month, in hours times a real rate? Two: how fast does your seat count grow? Answer those two honestly and the five-year winner falls out of the arithmetic. Everything else is packaging.
The line the model does not price
One cost sits outside the arithmetic: leverage. When you rent, the price is set by someone else and can move on renewal. When you own the code and the data, your exit cost is zero and the vendor has no pricing power over you. That is not a dollar figure you can put in a cell, but it is the reason the own path is worth considering even when the five-year totals are close. Owning is buying out of a negotiation you would otherwise have every year.
Read the rest and take it with you
The full guide plus a downloadable Markdown copy. One email, no wall on the preview above, unsubscribe any time. You also get the occasional build note when we ship something worth your inbox.