CUSTOM SOFTWARE
Custom web application development cost: what actually changes the price.
Every published range is someone else's project. What decides yours is how many rules the software has to be right about.
01 / THE RANGES DISAGREE FOR A REASON
A range that spans an order of magnitude is not an estimate.
Search for what a custom web application costs and the guides come back with confident ranges that do not agree with each other. Compare the first page of results and the low end of one guide sits below the low end of the next, while the top ends differ by an order of magnitude. At least one of those guides opens by admitting the thing you are about to notice for yourself: the sources contradict each other.
That spread is not sloppiness. It is what happens when the same two words — “web application” — cover an internal form that four people use on Tuesdays and a multi-tenant platform with role-based permissions, an audit trail and three system integrations. Both are custom web applications. They are not the same undertaking, and averaging them produces a number that describes neither.
Treat any published range as **market context**, useful only for knowing which order of magnitude you are in. The useful work is identifying which factors apply to your situation, because those are what a real estimate is built from — and, more usefully still, they are the ones you can change.
A range with no scope attached tells you about the publisher's client base, not about your project.
02 / WHY COUNTING SCREENS FAILS
Pages are what you see. Rules are what you pay for.
The instinct carried over from website projects is to estimate by counting pages. It works reasonably well for a marketing site, where a page is mostly content in a layout. It fails for applications, because a screen is the visible surface of a set of rules, and the rules are where the effort lives.
One screen might be a read-only list that anyone signed in can see. Another screen that looks almost identical might be a list filtered by who you are, editable only in certain states, with changes that notify someone, write to an audit log and cannot be undone after approval. Same table on screen. Ten times the work behind it.
The better unit is the **decision**: every point where the software has to be right about something — who may do this, what state is this in, what happens if it fails, who is told. Counting those gets you closer to a real estimate than counting anything you can see.
| Factor | A list everyone can read | A list with states and approval |
|---|---|---|
| Permissions | One rule: signed in | Per-role, and often per-record |
| States | None | Several, each with entry and exit rules |
| Side effects | None | Notifications, audit entries, downstream updates |
| Failure handling | Show an error | Define what a half-finished action leaves behind |
| Testing surface | Does it render | Every role × every state × every transition |
03 / WHAT ACTUALLY MOVES THE NUMBER
Ten factors, roughly in order of how much they move it.
These are the things that, in practice, separate a project at the bottom of a range from one at the top. Not all apply to every application, and the ones that do not apply are where the savings are.
- Roles and permissions
One kind of user is dramatically cheaper than four. Cost rises with the number of roles, and rises again when permission depends on the record rather than the role — “managers can edit” is simple; “managers can edit their own region's records before approval” is not.
- Workflow states
A thing that is either done or not done is cheap. A thing that moves through submitted, reviewed, approved, scheduled, completed and disputed — each with rules about who moves it and what happens if it stalls — is most of the build.
- Integrations
Each external system adds its own authentication, failure modes, rate limits, data shape and eventual breaking change. Two integrations are not twice one; they are two independent sources of things going wrong at three in the morning.
- Data migration
Moving existing records is rarely the cost. Discovering that the existing records contradict each other, and deciding what is true, is. This is the line item most often underestimated and most often the reason a launch date moves.
- Audit and traceability
If the business must be able to reconstruct who changed what and when — for a customer, an auditor or a dispute — that requirement reaches into every write in the system. It is cheap to design in and expensive to retrofit.
- Compliance and security requirements
Specific obligations around personal data, retention, access control or sector rules change the architecture, not just a checklist at the end. Knowing them at the start costs far less than discovering them at review.
- Reporting and dashboards
A handful of fixed reports is modest. Letting users build their own views, across dimensions you have not anticipated, is a feature set of its own — often larger than the workflow it reports on.
- Payments, if present
Taking money brings refunds, partial refunds, failed charges, reconciliation, disputes and a set of states nobody enjoys mapping. If money moves, budget for the unhappy paths, which outnumber the happy one.
- AI-assisted steps
An AI step is cheap to demonstrate and costly to make dependable: it needs a confidence signal, a review path, a defined behaviour when it is unsure and an owner. The demo is not the expensive part.
- Scope uncertainty
Not a feature, but reliably the largest multiplier. If the business has not agreed how the process works, the software cannot encode it, and the project pays for that conversation at development rates instead of meeting-room rates.
04 / FIVE SHAPES, FIVE DIFFERENT QUESTIONS
Find the one you are actually describing.
Most enquiries fall into one of five shapes. Naming yours narrows the range faster than any feature list, because each shape has a characteristic driver that dominates everything else.
- Simple internal tool
One or two roles, a handful of states, no external users. Replaces a spreadsheet that has outgrown itself. The dominant cost is usually data migration, not the build.
- Customer-facing portal
External users see their own data. The dominant cost is access control — every query has to be right about who is asking — plus the support burden of a surface customers can reach.
- Multi-role operational application
Several roles with genuinely different views and rights, moving work through defined states. The dominant cost is the state model and the testing surface it creates.
- Integration-heavy application
The application's job is largely to sit between systems that were not designed to talk. The dominant cost is other people's APIs, and the ongoing cost of them changing.
- AI-enabled workflow application
A conventional workflow with judgment steps handed to a model. The dominant cost is everything around the AI step — review, confidence, fallback, accountability — not the step itself.
If two shapes describe you, you are probably describing two projects, and sequencing them is usually cheaper than building both at once.
05 / THE PART THE ESTIMATE USUALLY OMITS
Software you depend on is a running cost, not a purchase.
A build estimate is the cost of arriving, not the cost of staying. Once a business runs on an application, it inherits hosting, dependency and security updates, the occasional integration that changes without warning, support for the people using it, and the changes that follow from the business itself changing.
None of this is unusual or a sign something went wrong. It is simply what owning software means, and it belongs in the decision at the start rather than as a surprise in month four. A useful question to ask any prospective build: what does it cost to keep this working for three years, and who does that?
The related question is what happens to the application if the people who built it become unavailable. Documentation, access, deployment and the ability to hand over are cheaper to insist on during the build than to reconstruct afterwards.
06 / HOW TO MAKE THE NUMBER SMALLER AND MORE CERTAIN
Most savings come before anyone writes code.
The largest reductions available are not discounts. They come from removing uncertainty and deferring things that do not have to exist yet.
- 01
Settle the process first
- Decides
- Do two people in the business describe this workflow the same way?
- Output
- An agreed process, so the software encodes a decision rather than freezing an argument.
- 02
Cut the roles
- Decides
- Does each role genuinely need different rights, or just a different view?
- Output
- A smaller permission model, which shrinks both build and test effort.
- 03
Defer the reporting
- Decides
- Which reports are needed on day one, and which are speculative?
- Output
- A launch scope without a self-service analytics layer nobody has used yet.
- 04
Name the integrations that must exist at launch
- Decides
- Which systems must be connected on day one, and which can stay manual for a quarter?
- Output
- Fewer external dependencies in the riskiest phase of the project.
- 05
Clean the data before migrating it
- Decides
- Where the records disagree, who decides what is true?
- Output
- A migration that is a task rather than an investigation.
07 / JUDGING AN ESTIMATE YOU ARE GIVEN
A confident number early is a warning, not a reassurance.
A fixed price offered before anyone has asked about roles, states, existing data or integrations is not a better deal. It is a number with the risk priced into it, or a number that will be revisited through change requests. Neither is dishonest by itself, but both should be recognised for what they are.
What a useful estimate looks like: it names what is included and, more importantly, what is not; it says which assumptions it rests on, so you can tell it that one is wrong; it separates the parts that are well understood from the parts that are not; and it is narrower after a scoping conversation than before one. An estimate that never narrows was never really an estimate.
It is also reasonable to ask what would make the number go down. A provider who cannot answer that either has not understood the drivers or is not motivated to.
SUMMARY
What to take from this.
- Published ranges disagree by an order of magnitude because they describe different projects; treat them as market context, never as a quote.
- Estimate by decisions the software must be right about, not by screens — two identical-looking screens can differ tenfold in effort.
- The biggest drivers are roles and permissions, workflow states, integrations, data migration, auditability and compliance.
- Scope uncertainty is the largest multiplier of all, and it is the cheapest thing to remove.
- Naming which of the five application shapes you are describing narrows the range faster than any feature list.
- A build estimate is the cost of arriving; hosting, updates, support and change are the cost of staying.
- Most real savings come before code: settle the process, cut roles, defer reporting, delay non-essential integrations, clean the data.
- A confident fixed price offered before anyone asks about roles, states or data has priced in risk or will be revisited later.
NEXT
Related capabilities.
If something here describes a constraint you are living with, the Contact form asks for the problem rather than the solution.
Start a projectAll insights