Enterprise Tooling
Build-vs-Buy Amortization
Should your team build this internal tool, or pay a vendor for it?
The business case counts the engineer-months and forgets what they cost loaded, plus the maintenance that never ends. This puts both sides on one basis.
What this calculator answers, what you need, and what to do with the result
Have this in front of you
- The vendor contract: annual price, seats, and the last two renewal increases.
- Engineer-months to a working version, including review, testing and migration.
- What an engineer-month costs your company once salary, benefits and overhead are loaded in.
Words on this page, in plain English
- Loaded cost
- Salary plus benefits, equipment and overhead. The real monthly cost of an engineer, not the number on the offer.
- Parity
- The month your build matches what the vendor already does. Everything before it is spend with nothing to show.
- Maintenance fraction
- The permanent slice of an engineer a tool consumes after launch. Vendors quote it; internal business cases usually do not.
What to do with the answer
- 01Ask who is on call for the build in month 18, when the person who wrote it has moved teams.
- 02Price the vendor at its renewal rate, not the introductory one, over the same horizon.
- 03If the build only wins by excluding maintenance, it does not win.
Stack economics · build vs. buy
Build-vs-Buy Amortisation
Loaded engineering time plus the permanent maintenance tax, against a vendor price that escalates every renewal — on one discounted cash-flow basis over the same horizon.
01Build it in-house
02Buy the vendor
03Comparison window
04Cumulative cost by year
| Year | Build cost | Build cumulative | Vendor cost | Vendor cumulative |
|---|---|---|---|---|
| Start | $240,000 | $240,000 | $15,000 | $15,000 |
| 1 | $61,200 | $301,200 | $20,000 | $35,000 |
| 2 | $61,200 | $362,400 | $21,000 | $56,000 |
| 3 | $61,200 | $423,600 | $22,050 | $78,050 |
Engineer cost is flat across the horizon and the build is treated as paid at the start, which favours building slightly. Vendor seats are assumed constant. No switching costs in either direction, and no revenue upside from owning the tool — those belong in the business case around this calculation, not inside it.
Method
How this number is calculated
- 01
Initial build cost
Engineers multiplied by months to feature parity, multiplied by fully loaded monthly cost. Loaded means salary plus benefits plus overhead, not salary.
- 02
The run rate the build leaves behind
Annual maintenance as a share of the initial build, plus infrastructure times twelve. It repeats every year of the horizon and never converts into an asset.
- 03
The vendor side
Implementation fee once, then seats times the per-seat annual price, escalating at each renewal. Escalation compounds, so the fifth year is the one that decides the total.
- 04
Discount both, then compare
Each year of both streams is discounted at the same rate and summed. The lower net present value wins, and the break-even year is the first year cumulative build cost falls below cumulative vendor cost.
Feature parity is treated as a fixed scope. In practice scope grows after launch, and the build side carries that growth alone. Opportunity cost and vendor lock-in risk are not priced.
Worked numbers
Pre-computed scenarios
Three sizes of internal tool against a vendor quote, all at a 10% discount rate over five years. Renewal escalation is 6% to 8% depending on the scenario, which is where the vendor totals diverge from the headline quote.
| Scenario | Inputs | Outcome |
|---|---|---|
| Single workflow, one engineer | 1 eng × 2 mo × $20,000 vs 15 seats at $900/yr | Build $92,313 vs vendor $59,560 — buy the vendor, no break-even inside 5 years |
| Internal tool, small team | 2 eng × 3 mo × $21,500 vs 60 seats at $420/yr | Build $254,096 vs vendor $116,466 — buy the vendor, no break-even inside 5 years |
| Large seat count, steep escalation | 3 eng × 6 mo × $22,000 vs 800 seats at $260/yr | Build $757,186 vs vendor $1,055,466 — build in-house, break-even year 3 |
Questions
What people ask before trusting this number
Why is the build cost more than engineers times months?
Because the loaded monthly cost includes salary, benefits and overhead, and because the build leaves a permanent run cost behind. Maintenance is charged as a share of the initial build every year, and infrastructure is charged monthly for as long as the tool exists. Most business cases count the build and stop.
What makes a vendor renewal expensive over five years?
Escalation compounding. A 8% annual increase on 300 seats turns a $195,000 first-year bill into a bill 47% higher by year five, and the total is what gets discounted. Flat-rate comparisons understate the vendor side in exactly the years where the build side has already amortised.
Should the same discount rate apply to both options?
Yes, and that is a choice worth stating. Discounting the vendor side at the cost of capital and the build side at nothing is the most common way a build case is made to win. Both are cash outflows at the same risk to the balance sheet, so both get the same rate here.
Why hold engineering cost flat instead of escalating salaries?
To keep the comparison honest. If internal salaries escalate and vendor prices also escalate, the result depends mostly on which assumption you picked. Holding engineer cost flat gives the vendor side the benefit of the doubt, so a build win is a win despite the conservative assumption.
What does the model leave out?
Opportunity cost of the engineers, the value of owning the roadmap, and the risk that the vendor is acquired or re-priced. It also treats feature parity as a fixed cost, when in practice scope grows. Use the break-even year as a sanity check against your own staying power.
Embed this calculator on your site ↓
Bloggers & authors: Embed this interactive calculator directly in your articles or comparison guides. It loads dynamically via a responsive iframe (auto-resizing to prevent double scrollbars) and provides a direct, high-value tool for your audience.
<div class="giniloh-calculator-embed" data-calculator="build-vs-buy"></div>
<script src="https://giniloh.com/embed.js" async></script>