What Truly Determines The Cost Of Custom Software
The dominant factor is rarely the technology stack — it is uncertainty. Every open question in the specification becomes padding in the estimate. A vendor that has no visibility into what happens on the unhappy path must assume the more expensive option. Putting two weeks into a discovery phase often reduces the final cost by far more than haggling over hourly rates.
Third-party integrations tend to be the second big multiplier. A screen that writes to your own database is easy to estimate; the same functionality wired into a legacy ERP is not. The unknown hides in the third party: poor documentation, waiting on someone else's team, data that does not match your model. Ask the estimator to break integrations out as separate items, because that is where the numbers slip.
Non-functional requirements quietly rewrite the number. An application used by twenty people is a very different build from the same feature set serving public traffic. Security reviews, uptime targets, load handling, audit logging and localisation each add real engineering time. State them early or you can expect them priced as extras.
The mix of people behind the number changes the arithmetic. An hourly rate says very little on its own: a senior engineer at a premium rate is often less expensive in the end than two inexperienced hire monorepo developers who require supervision and rework. Also ask who else is billed: coordination, quality assurance, DevOps and hire dedicated development team design are real work, but they should be named rather than hidden inside a blended rate.
The build price is rarely the full cost of ownership. Expect hosting, paid APIs, observability and a change budget for every year the software runs. A common working assumption says that any production system consumes a noticeable fraction of the original budget per year simply to stay current. Treating the launch as the finish line remains the classic mistake.