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.

Two screens that look alike and do not cost alike
FactorA list everyone can readA list with states and approval
PermissionsOne rule: signed inPer-role, and often per-record
StatesNoneSeveral, each with entry and exit rules
Side effectsNoneNotifications, audit entries, downstream updates
Failure handlingShow an errorDefine what a half-finished action leaves behind
Testing surfaceDoes it renderEvery 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.

  1. 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.
  2. 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.
  3. 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.
  4. 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.
  5. 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.

  1. Published ranges disagree by an order of magnitude because they describe different projects; treat them as market context, never as a quote.
  2. Estimate by decisions the software must be right about, not by screens — two identical-looking screens can differ tenfold in effort.
  3. The biggest drivers are roles and permissions, workflow states, integrations, data migration, auditability and compliance.
  4. Scope uncertainty is the largest multiplier of all, and it is the cheapest thing to remove.
  5. Naming which of the five application shapes you are describing narrows the range faster than any feature list.
  6. A build estimate is the cost of arriving; hosting, updates, support and change are the cost of staying.
  7. Most real savings come before code: settle the process, cut roles, defer reporting, delay non-essential integrations, clean the data.
  8. 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