What custom software actually costs when writing the code is cheap

For most of the history of this industry, software was priced by how much of it there was. Not openly, but that is what the estimates followed: more screens, more endpoints, more code, more months. It was never a good measure of value, and it worked mainly because writing the code really was the largest cost.
That assumption is no longer true. When the implementation is generated, the volume of code stops predicting the bill. We have seen a large internal tool cost less than a small billing rule, and the reason is not complexity in any sense a line count would capture. The cost now sits in other parts of the work, and if you are buying software right now it is worth knowing exactly which parts.
The two things that decide the cost
Look at where the money goes in a build today and you find two places.
Ambiguity is how much of the work is still undecided when building starts. This was always expensive, but it used to be one factor among several. Now it is the largest one, because every open question in a specification has to be answered by somebody. If you answer it, you pay for a conversation. If you leave it open, the model answers it with the most plausible answer and does not mention that it did, and you pay to discover the choice later, in production, after other things have been built on top of it.
This difference in cost is the main point. A team once gave us a neat specification for a pricing engine they were confident about. Two weeks in, real customer data showed the rules contradicted each other in cases the specification never imagined. Nobody priced that, because you cannot price what you have not discovered. Today the contradiction shows up as working code that quietly picks one answer and looks finished, where an engineer would once have stopped to ask.
Verification difficulty is how hard it is to prove the software is right, and it depends on one thing: what being wrong would cost you. A large internal tool where a mistake means someone re-enters a form is cheap to check. A small rule that charges a customer's card is not, because it needs a specification precise enough to test against, a test suite that covers the awkward cases, careful review, and often reconciliation that finds mismatches afterwards.
Put those together and you get the result that surprises people. A fifty-thousand-line internal system can cost less than a five-hundred-line pricing change. The cost of a mistake now decides the price, and the size of the code matters less.
What got cheaper, and what did not
It is worth being precise about this, because "AI makes software cheaper" is true in a way that misleads if you plan around it.
Writing the implementation used to be the largest line item in a build. It is now close to the smallest. That is a real and large saving and it is why projects that used to take quarters can take weeks.
Three things did not get cheaper. Deciding exactly what to build still takes the same conversations with the same people. Reviewing what came back takes longer per line than reviewing a colleague's work, for reasons we go through in what good code review looks like when nobody wrote the code. And turning a working first draft into something that keeps working under real use, with its error handling and its monitoring and its security review, costs the same as before.
So the total falls, but by much less than the drop in the cost of writing code. Anyone quoting you a ninety percent reduction is quoting the saving on one line item as though it were the whole invoice.
Integrations still cost more than people expect
Every outside system you connect to adds work you do not control. A payment provider, a CRM, an old internal database: the easy part is calling it, and the easy part now costs almost nothing.
The hard part was never the calling. It is the rate limits, the downtime, the data that does not match your assumptions, and the change the other team releases next quarter that breaks your system. None of that got easier, and as a share of the budget it grew, because the part around it shrank. A build with five integrations still carries five separate sources of surprise, and those surprises are exactly the kind that a generated first draft handles poorly.
Adding people still does not work
The old rule is still true, and the reason is now clearer. Coordination cost was always what made a late project later when you added engineers to it. What has changed is the ratio: the work that used to use extra people is the work that got automated, so the remaining work is disproportionately the coordination-heavy kind. Specification, review, and judgment are hard to split between many people. Adding people to a late build now mostly adds meetings.
Where to spend to lower the total
The cheapest money in a project is spent on the specification, before anything starts.
This is simple arithmetic. Every decision closed before the build begins is a decision that does not turn into rework, and rework is where budgets actually go. When AI writes code fast, a build with missing decisions produces something quickly, which feels like progress, and the cost of the missing decisions arrives all at once later. In the past such a build failed slowly, where everyone could see it.
A paid discovery phase that ends in a specification detailed enough to build from is usually the best-value line in the whole engagement. It is also the honest basis for a fixed price, which brings us to the last point.
Fixed price, and how to read a quote
A fixed price on genuinely unscoped work forces the supplier to guess, and the supplier prices the guess, either by adding extra to the number or by protecting the margin later when the surprises arrive. Neither outcome is good for you. Fixing the price after discovery is a different thing entirely and is often the right choice, because by then both sides know what is being built.
When you are comparing quotes that differ by a large amount, ask each supplier two questions: what are you assuming, and what do you think the riskiest part of this is. A supplier who names a specific risk has thought about your problem. A supplier whose number is low because they quietly assumed the easy reading of every ambiguity has not, and you will pay the difference later as change requests.
One last thing is the same as it always was. Building is a fraction of what software costs across its life. It still has to be understood, monitored, secured, and changed safely by people for years, and a system that can be regenerated in an afternoon is not automatically a system anyone knows how to operate. A quote that ignores the years after launch only estimates what it costs to start.
Sources
- Fred Brooks, "The Mythical Man-Month" (adding people to a late software project makes it later, because of coordination cost): https://archive.org/details/mythicalmanmonth0000broo


