Estimating software: the number is not the problem, the shape is
Why we do paid discovery, why our estimates have three numbers instead of one, and what happens when we are wrong.
Ei Thandar Kyaw
Delivery Lead

Every agency has been asked "roughly, what would this cost?" in a first call, and every agency knows the honest answer is "somewhere between forty thousand and four hundred thousand dollars, and I cannot narrow it without a week of work".
Saying that costs you the meeting. Saying a number costs you the project, eight months later, in a much worse conversation.
What we do instead
We run a paid discovery — three to five days, a fixed fee, and we credit it in full against the build if you go ahead. It produces a written scope, a technical feasibility review, a risk register and an estimate.
Charging for it does two useful things. It filters for clients who are serious, and it means we can afford to do it properly rather than as unpaid pre-sales in the gaps between real work.
Three numbers, not one
Our estimates give a floor, an expected case, and a ceiling, with the specific things that move you between them named.
$58,000 — $74,000 — $112,000
Floor assumes the payment provider's sandbox behaves as documented and no changes to the existing user model.
Ceiling assumes the legacy order API needs a compatibility layer (2–3 weeks) and SSO is in scope.
A single number is a lie by omission. Three numbers with named drivers is a conversation about which risks you want to buy down before committing, which is the conversation worth having.
The risk register is the real deliverable
Estimates go wrong in predictable places, and almost none of them are the code we are excited to write:
- Third-party integrations. Especially anything with a sandbox that does not behave like production, or documentation last updated in 2019.
- Legacy data migration. Nobody knows what is in the old database. Nobody. Budget two weeks to find out.
- Approval chains. A design that needs sign-off from four departments does not take four times as long. It takes as long as the slowest person's holiday.
- Undocumented business rules. The tax logic that lives in one person's head and has eleven exceptions.
We list these with a probability and a cost, and we are specific. "Integration risk" is not a risk register entry. "The 2019 order API may lack a bulk endpoint, requiring N+1 calls or a compatibility layer — 2–3 weeks, 40% likely" is.
When we are wrong
Fixed-price means we eat the overrun. That happens; on our fixed-price work the last two years, about one project in six ran over, and we absorbed it.
What we do not do is silently reduce quality to hit a number — cut the tests, skip the accessibility pass, defer the error handling. That is the industry's standard response to a bad estimate and it converts a cost problem into a reputation problem, most of it yours.
If we are badly wrong, we say so, show the working, and give you the options with their real prices. Twice we have refunded a discovery fee and told the client the project was not viable at any price we could honestly quote. Both of them came back with different work.
