You paid for the build. Then you paid for the fixes. Then they told you it needs a rewrite. Three invoices for one system — that should have been designed to last.
How you end up paying three times
Nobody signs up for this; it happens one reasonable invoice at a time.
The fix was urgent. The change was “out of scope.” The edge case “wasn’t in the original spec.” Every fix is an invoice, every change a scope discussion, every inconvenient reality a “phase two.” Each line item makes sense on its own — and a few years in, you’ve spent more on patches than on the original build, for a system that still doesn’t quite fit.
Then comes the conversation. The codebase is too fragile. It can’t support what you need next. The responsible move, they say, is to start again.
So you pay a third time — for a problem their architecture created.
That’s not support. That’s a business model.
Look at the incentives and the pattern stops being surprising. When fixing bugs is revenue, preventing them is a cost. When every change bills separately, an architecture that resists change is an asset — theirs, not yours. And a rewrite every few years isn’t a failure of the model; it’s the model’s best quarter.
None of this requires bad people. It only requires a payment structure where the vendor does better when the software does worse — and that structure is the industry default.
Software designed to be extended doesn’t do this
The alternative isn’t heroic maintenance. It’s architecture — decided on day one, when it’s cheap.
Clean structure that new features slot into instead of fighting. Real documentation, so change requests start from knowledge, not archaeology. Room left for the edge cases you haven’t met yet — because you will meet them, and the system should be curious about them, not brittle.
Built that way, software grows with the operation instead of crumbling under it. One of our systems has run for over thirteen years — now three times bigger than at launch, with no rewrite →.
Full technical responsibility — in the contract
Here’s how the incentives look when they’re pointed the right way:
Bug fixes are free, forever. Not a warranty year — forever. You never pay for problems our design created; that cost lands on us, which is precisely why our architecture prevents it. Keeping the technology stack current is our internal investment, never a rewrite on your invoice. What you pay for is one thing only: new business value — new features, real changes to how your operation works.
When the vendor funds their own mistakes, quality stops being a promise and becomes a budget line. Ours.
Cost that repeats, or asset that compounds
That’s the whole difference. The standard model turns software into a cost you keep paying — patches, scope discussions, the eventual rewrite, then the cycle again. Designed and supported the other way, it becomes an asset that compounds →: every year of use adds encoded knowledge, refined workflows, and accumulated data on a foundation that was built to carry them — and the hidden costs that surprise most buyers simply never arrive.
What would a decade of no surprise invoices be worth?
The free Operations Efficiency Map session puts numbers on your whole order lifecycle — including the maintenance and workaround costs most operations never total up. One hour, your figures, no obligation.