TL;DR
Build custom software when it is your competitive edge or when nothing off-the-shelf fits how you actually work; buy off-the-shelf when the function is a solved commodity and speed matters more than fit. Most companies over-build, then pay to maintain software they never needed. For the majority, the correct answer is a hybrid: buy the commodity layers, build the 20% that is genuinely yours, and integrate the two. This guide gives you the full decision framework, a scorecard you can run in an afternoon, the total cost of ownership model most build vs buy analysis skips, the mistakes that cost the most, and how to tell which bucket your specific project falls into.
The question everyone gets wrong
Framed as "should we build or buy?", the build vs buy decision has no good answer, because it is the wrong question. Asked that way, it turns into a tug-of-war between the engineer who wants to build and the finance lead who wants to buy, and whoever argues harder wins. That is not a decision. That is a personality contest.
The question that actually decides it is narrower and colder: where does custom software create an advantage you cannot buy?
Reframe every candidate that way and most of the noise disappears. Software splits cleanly into two piles. The first pile is solved problems: email, payroll, accounting, standard CRM, help desks, calendars, analytics dashboards, payments. These have mature products behind them with thousands of engineer-years of polish, security hardening, and edge-case handling you will never replicate. Building them yourself is lighting money on fire to arrive at a worse version of something you could have rented this afternoon.
The second pile is where custom earns its keep: the workflow that is the reason customers choose you, the data model no vendor understands, the integration that ties your operation together, the product you actually sell. This is where off-the-shelf forces compromises that quietly tax you forever, and where owning the software is the point.
So the real framework is not "build or buy." It is "commodity or edge?" Everything downstream, the costs, the timelines, the risk, follows from answering that one question honestly for each piece of software you are weighing.
What "buy" actually costs (and hides)
The instinct to buy is usually right, and it is usually right for the wrong reason. People buy because the sticker price looks small next to a custom quote. That comparison is almost always wrong, because the sticker is the one cost of buying that is easy to see and the smallest one that matters.
Here is what buying actually costs once you run it forward.
Per-seat pricing compounds. A tool at a comfortable price for 10 seats is a different conversation at 100 seats, and a budget line item you resent at 500. SaaS pricing is designed to grow with you, which is another way of saying it is designed to grow faster than your patience. The tool that was obviously the right call at launch can become the thing you are quietly trying to rip out three years later, precisely because you succeeded.
Integration is never free. Every bought tool has to talk to the rest of your stack, and that wiring is engineering work you pay for whether you build or buy. In our experience the integration tax on a bought tool is routinely underestimated by an order of magnitude, because the demo shows the tool working in isolation and says nothing about the two weeks of API glue, field mapping, and error handling it takes to make it part of your actual operation.
You inherit the vendor's roadmap. When you buy, the feature you need next is on someone else's backlog, prioritized by someone else's customers. The vendor can deprecate the thing you depend on, raise prices, get acquired, or simply decide your use case is not worth supporting. You have a contract, not control.
Lock-in is the bill you pay at the worst possible time. The cost of a bought tool is not what it charges while you are happy. It is what it costs to leave when you are not. Data export that is technically possible but practically miserable, a data model that only makes sense inside their product, and a switching cost that grows every month you stay are all real costs. They just do not appear until you try to move.
The "80% fit" trap. The most expensive bought tool is the one that fits 80% of your workflow. The missing 20% is where your actual differentiation usually lives, and closing it means either bending your business to match the software or bolting on brittle workarounds that break every time the vendor ships an update. An 80% fit on a commodity is a great deal. An 80% fit on your core workflow is a slow, compounding tax.
None of this means "do not buy." It means "buy" is not the free, safe, obvious choice it looks like on the sticker. Buying is renting a capability on someone else's terms. For a commodity, that is exactly what you want. For your edge, it is a trap dressed as a bargain.
What "build" actually costs (and hides)
Building has the opposite problem. Its costs are obvious up front and easy to underestimate everywhere else. The team quotes the build. Almost nobody quotes the ten years after it.
A custom build is a permanent commitment, not a one-time project. The day you ship custom software, you have not finished. You have hired a dependent that needs feeding forever: security patches, dependency upgrades, browser and OS changes, bug fixes, and the slow accretion of new requirements. The build cost is the down payment. Maintenance is the mortgage, and it does not end when the project does.
You just became a software company for that slice of your business. Custom software needs people who can operate and extend it. That means hiring, retention, on-call, documentation, and institutional knowledge that walks out the door when a key engineer leaves. For a company whose core business is not software, taking that on for a commodity function is a strategic mistake, no matter how clean the code is.
Opportunity cost is the quiet killer. Every engineer-week spent rebuilding a solved problem is an engineer-week not spent on the thing only you can build. The real cost of building your own billing system is not the billing system. It is the customer-facing feature that did not ship because your best people were busy reinventing Stripe.
Over-building is the default failure mode. Left alone, teams build more than they need, gold-plate features nobody asked for, and mistake engineering ambition for business value. Industry research has documented this for decades. The Standish Group's long-running CHAOS reports have consistently found that a large share of software projects finish late, over budget, or fail to deliver what was promised, and custom builds for non-differentiating functions are prime candidates for exactly that fate.
So building is not the "own it, control it, do it right" choice it feels like to engineers. It is the choice to take on a permanent operational liability in exchange for control. For your competitive edge, that trade is worth it. For a commodity, you are buying a liability you could have avoided.
The five questions that decide it
Strip away the personalities and the sticker prices and the build vs buy decision comes down to five questions. Answer them honestly, and the answer is usually obvious.
1. Is this software a differentiator, or table stakes?
If customers choose you partly because of this software, or it is how you beat competitors, it is a differentiator, and differentiators get built. If it is something every company in your space has and no customer has ever praised or noticed, it is table stakes, and table stakes get bought. Be ruthless here. Most software a company touches is table stakes, and the ego-driven instinct to treat everything as special is what leads to over-building.
2. How badly does the best off-the-shelf option miss your workflow?
Not "is it perfect", because nothing is. The question is whether the gap forces expensive compromises. A tool that misses on cosmetics is fine. A tool that cannot represent how your business actually works, that forces you to run your core process outside the system in spreadsheets, is a tool that will cost you more than a custom build over time.
3. Will the economics flip at your scale?
Per-seat and usage pricing that is cheap today can become the most expensive line in your budget at scale. If you can see a future where the SaaS bill outruns the cost of building and running your own, that future is a reason to build sooner rather than later, because the switching cost only grows.
4. Can you actually own custom software?
Custom software you cannot maintain is worse than no custom software. If you have no engineering capacity and no plan to get any, building is not ownership, it is a time bomb. This question is where honest self-assessment matters most, and where a good development partner will tell you the truth even when it costs them the build.
5. How much do time and risk pressure you right now?
Urgency favors buying. If you need something running this quarter and a bought tool gets you 90% of the way there, the right move is often to buy now, run your business, and revisit the build later once you understand the workflow deeply enough to build the right thing. Buying to learn, then building to win, is a legitimate and underused strategy.
Notice that four of the five questions can push either way, but the first one, differentiation, dominates. A commodity function scores low on differentiation no matter how the other questions land, and commodities get bought. Your genuine edge scores high, and edges get built. The middle is where the other four questions earn their keep.
Total cost of ownership: the model nobody runs
The single most common mistake in a build vs buy analysis is comparing the upfront cost of building against the monthly cost of buying, as if those were the same kind of number. They are not. One is a capital cost, the other is a compounding operating cost, and comparing them directly is how companies talk themselves into decisions they regret.
The correct comparison is total cost of ownership over a realistic horizon, usually three years, sometimes five. Model both paths across every cost, not just the visible one.
| Dimension | Buy (off-the-shelf) | Build (custom) |
|---|---|---|
| Upfront cost | Low | High |
| Time to value | Days to weeks | Weeks to months |
| Ongoing cost | Per-seat or usage, compounds with growth | Hosting plus maintenance, roughly flat |
| Fit to your workflow | Partial, you adapt to it | Exact, it adapts to you |
| Flexibility to change | Vendor's roadmap and timeline | Yours |
| Data and IP ownership | Vendor holds it | You hold it |
| Integration effort | Real, and usually underestimated | Built in from the start |
| Lock-in and switching cost | High and rising | Low |
| Cost at 10x scale | Climbs with seats or usage | Marginal |
Now put numbers on it, illustratively. Say a tool costs 40 dollars per seat per month. At 50 seats that is 24,000 dollars a year, a rounding error against a custom build. Comfortable. Obvious buy.
Fast forward. You grow to 300 seats. Now that same tool is 144,000 dollars a year, every year, forever, and rising. Over three years at that scale you have spent well over 400,000 dollars renting a capability, with nothing owned at the end and a switching cost that has quietly grown into a wall.
Against that, a custom build might cost 200,000 dollars to design and ship and, say, 60,000 dollars a year to host and maintain. Over the same three years at scale that is roughly 380,000 dollars, and at the end you own the software, the data, and the roadmap, and your marginal cost per new user is close to zero.
The point of the exercise is not that building always wins at scale. It is that the honest comparison has a crossover point, and the crossover is invisible if you only look at the sticker. Below the crossover, buying is cheaper and faster and correct. Above it, buying is a compounding tax you pay to avoid a cost you have already outgrown. The job of a real build vs buy analysis is to find where your crossover sits and decide which side of it you are on, and how fast you are moving toward the other side.
The build vs buy scorecard
Frameworks are only useful if you can run them. Here is the whole build vs buy framework compressed into a scorecard you can fill in for any candidate in under an hour. Score each factor from one to five. A high total leans build; a low total leans buy.
- Differentiation. Is this software a competitive edge, or table stakes? Edge is 5, pure commodity is 1.
- Fit. How badly does the best off-the-shelf option miss your core workflow? A painful miss is 5, a clean fit is 1.
- Scale economics. Will per-seat or usage costs balloon at your growth? Yes is 5, no is 1.
- Data and control. How much does owning the data, the IP, and the roadmap matter? Critical is 5, irrelevant is 1.
- Capacity. Can you support and maintain custom software over its full life? Comfortably yes is 5, no chance is 1.
- Time pressure. How urgently do you need it live? Urgent is 1, because urgency favors buying; patient is 5.
There is no magic threshold, and you should not treat the total as a verdict. Treat it as a forcing function that surfaces the honest answer. A case scoring high on differentiation, fit, and scale is a build, and the total will reflect that. A case scoring low across the board is a buy you should stop agonizing over. The interesting cases are the split decisions, and split decisions are usually a signal that the answer is neither, it is the hybrid.
Run it against a few real scenarios to calibrate.
A standard CRM for a services business scores low on differentiation, low on fit gap, low on scale pain, and high on time pressure. Total is low. Buy it, and stop deliberating.
An internal operations tool for a logistics company whose routing logic is its moat scores high on differentiation, high on fit, and high on data ownership. Total is high. Build it, because the routing is the business.
A customer-facing product for an early company still learning its market is the classic split. The product is the differentiator, which argues build, but the market is unproven and time pressure is high, which argues buy or assemble from parts to learn first. The honest read is often: assemble the fastest thing that lets you learn, then build the real product once you know what it needs to be.
The third path: buy the commodity, build the edge
The reason build vs buy feels hard is that it is usually posed as an either-or for the whole system, when the right unit of decision is the individual capability. Zoom in, and almost every real answer is composable.
Buy the commodity layers. Build the edge. Integrate the two.
Buy the accounting, the email, the payments, the authentication, the boring solved infrastructure that every company needs and no customer cares about. Build the 20% that is genuinely yours: the workflow that is your reason to exist, the data model no vendor understands, the customer-facing product you actually sell. Then wire them together with clean integrations so the commodity layers feed the custom core.
This is not a compromise. It is usually the correct architecture. You get the speed and reliability of mature products where fit does not matter, and the ownership and flexibility of custom software where it does. You spend your scarce engineering time on the thing only you can build, and you rent everything else.
The discipline this requires is drawing the line in the right place, and redrawing it as you grow. The line moves. A capability that is a commodity for you today can become a differentiator tomorrow as your business evolves, and a differentiator you built early can commoditize as vendors catch up. Treating build vs buy as a one-time decision is a mistake. It is a line you maintain, reviewing each capability periodically and moving it across the line when the business case changes.
For most companies we work with, the starting posture that ages best is: default to buying, build only where you can articulate the specific advantage in a sentence, and keep the custom surface as small as it can be while still owning your edge.
The mistakes that cost the most
Most build vs buy regret traces back to a handful of predictable mistakes. Knowing them in advance is most of the protection.
Building a commodity because engineering wanted to. The most expensive custom software is the internal tool that recreates a mature product because a smart team was confident they could do it better. They usually can, technically. It is still a mistake, because the cost is not the build, it is the decade of maintenance and the opportunity cost of the features that did not ship.
Buying your differentiator to save time. The mirror-image mistake. A company outsources the exact thing that makes it special to a generic tool, then spends years fighting the tool's constraints and wondering why the product feels the same as every competitor's. If it is your edge, own it.
Comparing sticker to sticker. Weighing upfront build cost against monthly SaaS cost, ignoring maintenance on one side and compounding per-seat growth on the other. This single error, comparing two numbers that are not the same kind of number, drives more bad decisions than any other.
Underestimating maintenance to zero. Teams model the build and forget that shipped software needs feeding forever. A build that looks cheaper than buying often is not, once you honestly price the years after launch.
The "we'll just customize the SaaS" spiral. Buying a tool that is an 80% fit and closing the gap with escalating customization, plugins, and workarounds until you have built a fragile custom system on top of someone else's product, with the worst properties of both: the lock-in of buying and the maintenance of building.
The all-or-nothing rewrite. Deciding the bought stack is wrong and resolving to build everything from scratch, instead of surgically replacing the one capability that has outgrown its tool. Rewrites of working systems are among the highest-risk moves in software. The composable path, replace the piece that hurts, keep the rest, is almost always safer.
Signs you are on the wrong side of the line
Most companies do not decide build vs buy once and move on. They inherit a stack of past decisions, some good and some quietly wrong, and the live question is usually not "build or buy" but "which of our current calls have gone bad?" A few symptoms tell you.
You probably bought something you should have built when:
- A tool that fit 80% of your workflow now has more workarounds bolted around it than features you use inside it.
- Your team runs the important part of a process in a spreadsheet next to the expensive software, because the software cannot represent how you actually work.
- Your per-seat or usage bill has become a line item leadership asks about, and it climbs every quarter.
- You have started paying for customization, plugins, or a consultant to bend a bought tool into a shape it was never meant to take.
- The thing customers praise about you happens despite your tooling, not because of it.
You probably built something you should have bought when:
- A meaningful share of your engineering time goes to maintaining an internal tool that does something a mature product does better.
- Nobody outside your company would care that you built it, because it is a solved problem everywhere.
- The tool is a source of bugs and on-call pain out of all proportion to the value it creates.
- You are one key engineer's resignation away from nobody understanding how it works.
- You built it years ago to save money and have never once revisited whether buying is now cheaper.
No single symptom is a verdict. Together they are a signal to rerun the scorecard on that specific capability. The line between build and buy moves as your business and the market change, and the discipline that separates the companies that stay lean from the ones that accumulate expensive mistakes is simply rerunning the decision on a schedule, rather than treating a call made three years ago as permanent.
How the decision plays out by scenario
The framework is general, but the answer shifts with your situation. A few common ones.
Early-stage, building a first product. Your product is your differentiator, so it gets built, but your market is unproven and speed is survival. The honest move is usually to assemble the commodity layers from off-the-shelf parts as fast as possible, build the thinnest real version of your actual product, and defer the heavier custom build until you have learned what the market wants. Build the edge, rent everything else, and keep the custom surface tiny until you have proof.
Scaling company hitting per-seat pain. You bought well early, you grew, and now a tool that was cheap is a budget problem and a lock-in risk. This is the classic crossover moment. The answer is rarely "rip out everything." It is "identify the one or two capabilities where the economics and the fit have both flipped, build those, and keep buying the rest."
Established business with compliance or data-residency constraints. When you need to own the data, control exactly where it lives, and answer to auditors, the ownership column of the TCO table stops being a nice-to-have and becomes the deciding factor. Building, or self-hosting, moves up the ranking even for capabilities that would otherwise be an easy buy.
Operations team drowning in manual work. The pain is real, but the answer is not automatically custom software. Sometimes the fix is a workflow-automation tool wiring existing systems together, which is a buy. Sometimes the manual work exists because your process is genuinely non-standard and no tool models it, which is a build. The scorecard, especially the fit question, tells you which.
How we approach build vs buy at HorizonLux
We build custom software for a living, which is exactly why you should trust us to tell you when not to. A custom build a client did not need is the most expensive mistake in software: they pay us to make it, then they pay to maintain it forever, for something they could have rented for a fraction. We would rather keep a client for a decade than sell them a build that makes us money and makes their business worse.
So when a company brings us a project, the first thing we do is not scope a build. It is run the decision above, honestly, out loud, together. Commodity or edge. What does the TCO actually say over three years. Where is your crossover. Which capabilities are genuinely yours and which are solved problems you should just buy.
More often than people expect, the answer for a given capability is "buy it, do not build it," and we say so. When the answer is build, we build the edge and help you assemble the commodity layers around it, so you own what matters and rent what does not. That is custom software development done the way it should be: the smallest custom surface that still owns your advantage, integrated cleanly with the tools you already run.
If you are weighing a specific decision and want a second opinion from a team whose incentive is a long relationship rather than a big build, that is the first conversation we have on a scoping call, before anyone writes a line of code. You can also see the full range of what we build if you want to understand where custom is worth it and where it is not.
Frequently asked questions
Is custom software always more expensive than buying?
No. It is almost always more expensive upfront and often cheaper over a three-to-five-year horizon at scale, because buying compounds with growth and building does not. The honest comparison is total cost of ownership, not sticker versus sticker. For low-scale commodity functions, buying wins on cost. For high-scale or differentiating functions, building frequently wins.
When does a SaaS tool get too expensive to keep?
When the total you pay, including per-seat growth, integration maintenance, and the switching cost you are accruing, crosses the cost of building and running your own. That crossover is specific to your scale and usage. The practical trigger is usually a combination of a SaaS bill that has become a real budget line and a fit gap that has started forcing workarounds.
Can we start with off-the-shelf and build later?
Yes, and it is often the smartest path. Buying to learn, then building to win, lets you understand a workflow deeply before you commit to building the right version of it. The caution is switching cost: the longer you run on a bought tool, the more it costs to leave, so decide the crossover consciously rather than drifting past it.
How long does a custom build take?
It depends entirely on scope, but the useful reframe is to build the smallest version that owns your edge, not the complete system you imagine. A tightly scoped custom capability, integrated with bought commodity layers, ships far faster than a from-scratch platform, and it is also the correct architecture, so the fast path and the right path are the same path.
What about no-code and low-code?
No-code sits between buy and build. It is faster and cheaper than custom code for simple, well-defined workflows, and it hits a wall the moment your logic gets non-standard or your scale gets serious, at which point you inherit the worst of both: a tool you cannot fully control and a system you still have to maintain. It is a legitimate option for the commodity-to-edge middle, and a trap if you try to run your genuine differentiator on it.
Who should make the build vs buy decision?
Not engineering alone, and not finance alone. Engineering knows what is genuinely hard and genuinely differentiating. Finance knows what the total cost of ownership really is. The person who owns the business outcome should force both into the same room, run the scorecard, and decide on differentiation and TCO, not on who argued hardest.
The bottom line
Build vs buy is not a philosophy, it is a per-capability decision you make with a cold eye and rerun as your business changes. Buy the commodities, because someone has already solved them better than you will. Build your edge, because that is the point of owning software. When you are honest about which is which, most cases resolve into a hybrid: a small, owned custom core surrounded by bought commodity layers, integrated cleanly.
The companies that get this right are not the ones that always build or always buy. They are the ones that ask "commodity or edge?" for each piece, run the real total cost of ownership rather than the sticker, and keep their custom surface as small as it can be while still owning what makes them win.
If you want help drawing that line for a specific decision, talk to an engineer. We will tell you to buy when buying is right, and build the edge when it is not.
Sources and further reading
The frameworks above draw on our own project experience and on long-standing research and writing about software strategy, project outcomes, and architecture. For readers who want to go deeper, these non-vendor sources are a good start.
- The Standish Group: the long-running CHAOS research on software project success, overruns, and failure rates.
- Stack Overflow Developer Survey: annual data on technology adoption, developer cost, and tooling trends that inform build-side economics.
- Martin Fowler: clear, vendor-neutral writing on software architecture, custom development, and the trade-offs behind build decisions.
- Harvard Business Review: management research on build-versus-buy strategy and the economics of owning versus renting capability.
- Gartner: analyst research on total cost of ownership and enterprise build-versus-buy decision frameworks.
About the author
Seif Sgayer is the founder of HorizonLux, a software development company that designs and builds web, mobile, cloud, and AI products for B2B clients, end to end. He leads a small, senior team and works directly with founders and operators on the build-versus-buy calls behind their software, with a bias toward the smallest custom surface that still owns a client's advantage. HorizonLux is based in Tunisia and works with clients across the US, UK, Europe, and the MENA region.






