Full disclosure: we build custom software for a living, so we have an obvious bias. Which is exactly why our discovery calls regularly end with "just use Shopify" — recommending a build that won't pay for itself is how an agency burns its reputation. Here's the actual framework we use.
Start with buy
Off-the-shelf wins by default. If a $99/month tool covers 90% of what you need, the missing 10% is rarely worth a five-figure build. SaaS products ship features weekly, handle security for you, and cost less than a single sprint of custom work. The default answer to "should we build this?" is no — the interesting question is what flips it.
The three signals that flip the answer
First: the workflow IS the business. If your competitive advantage lives in how you quote, schedule, price, or fulfill, renting the same software as your competitors caps that advantage at zero. Second: integration tax. When your team spends hours a week copying data between tools that don't talk to each other, that payroll is already funding a custom build — you're just not getting the asset. Third: per-seat pricing at scale. SaaS that's cheap at 5 users can exceed the cost of owning your own tool at 50.
Do the arithmetic
Put real numbers on it: current subscription costs, hours lost to workarounds multiplied by loaded payroll, and revenue lost to the things the tool can't do. Compare that against a fixed-scope build amortized over three years. When we scope projects, this arithmetic is the first page of the proposal — if the build doesn't clear the bar, we say so and point you to the tool that does.
The middle path most people miss
Build-vs-buy isn't binary. The highest-ROI projects we ship are often glue: keep the off-the-shelf tools your team already knows, and build the thin custom layer that connects them — the integration, the customer portal, the AI agent that moves data while your team sleeps. You get 80% of the custom advantage at 20% of the cost.
Written by Robert Collins, founder of Closing Brackets. Talk to him about your project →