The biggest cost driver is not technology — it is how much is still undecided. Every ambiguity in the brief is converted into padding somewhere in the quote. A team that cannot see the exceptions and edge cases has to assume the more expensive option. Spending a week on requirements work often reduces the final cost by far more than negotiating the rate.
Integrations tend to be the next major multiplier. A feature that touches only your own data which is better vue or angular low risk; the same functionality connected to a payment provider and a CRM is a different problem. The cost sits in the third party: rate limits and sandbox access, long certification processes, fields that mean something different on each side. Ask the estimator to list every external system, as this is the usual source of overruns.
Quality attributes can easily double the number. An application used by a handful of staff has almost nothing in common with the same feature set serving thousands of external customers. Audit and compliance requirements, high availability, performance under load, audit logging and localisation all add weeks of work. State them early or expect them to arrive later as change requests.
The mix of people behind the number changes the arithmetic. An hourly rate reveals very little on its own: kotlin web development company one senior developer at twice the price is often cheaper per delivered feature than a pair of junior developers who require heavy code review. Ask as well who else is billed: delivery management, quality assurance, infrastructure work and analysis are real work, but they should be itemised.
The build price is rarely what you will actually spend. Expect cloud costs, swift consulting services third-party licences, observability and a maintenance allowance for every year the software runs. A common working assumption holds that software in active use consumes a noticeable fraction of its original build cost annually simply to stay current. Treating the launch as the finish line has always been the classic mistake.
