Models
3

There is no price per page. There are three ways to bill and a set of stated assumptions

Custom software has no list price because it has no list scope.

It does have countable cost drivers — every one we work with is below.

Billing

Three ways to work together

Fixed price

When it fits
Projects with a closed scope, after a discovery workshop
Billing
One figure, agreed before the start

You know the number and the date before the first line of code.

More

It requires a scope that can actually be closed, which in practice always means going through discovery first. Without it, fixed price is a quote for risk rather than for work — and either we overpay for the risk or you overpay for the buffer.

Time and material

When it fits
Products that will evolve while they are being built
Billing
A rate against hours actually worked

Scope agreed iteratively, billed for real time.

More

It makes sense when the direction is known but the details are still forming, and pinning them to paper would turn the project into a negotiation over change orders. It requires trust both ways, which is why progress is visible on staging every two weeks.

Dedicated team

When it fits
Development measured in quarters, not weeks
Billing
A fixed monthly figure

An agreed team working on your side, billed monthly.

More

It makes sense for a product that keeps growing after launch — cheaper and faster than commissioning each change separately, because the cost of re-learning the context each time disappears.

Drivers
5

What actually raises the cost

Five things that in practice decide the spread between competing offers — written down before you have to ask.

The number of exceptions in the process

The most consistently underestimated driver.

More

A process described in three sentences usually has five exceptions nobody mentioned because "everyone knows". Each is a separate path through the system. The discovery workshop exists mainly to surface them before the quote rather than after it.

Integrations with systems you don't control

Integrating with an API that has documentation and a sandbox is a line in a schedule.

More

Integrating with a system whose access has to be negotiated and whose documentation doesn't exist is a risk — and it is usually what explains the spread between competing offers.

Data migration

Moving data out of spreadsheets and an old system is often more expensive than the feature that data feeds.

More

Historical data is always inconsistent; the only question is how badly, and how much of it has to be repaired before the system can trust it.

The number of roles and permissions

A system where everyone sees everything is many times cheaper than one where five roles see five different slices of the same data.

More

This rarely appears in a requirements document and shows up sharply in a quote.

Availability and performance requirements

An internal tool for twenty people and a platform that has to survive a campaign are two different projects at the same feature list.

More

Committed uptime and expected traffic change the architecture, not just the hosting bill.

In depth
In depth

Where the number in a quote comes from

A quote is built by breaking the scope into tasks, estimating each one separately and adding a buffer for risks we name out loud. Not by multiplying "a big project" by a rate.

That is why every quote we send has two parts: a figure and a list of assumptions. An assumption reads like "the warehouse system exposes an API for stock levels and its documentation is current". If it turns out to be false, it is clear exactly which line changes and why — instead of a conversation about whether a change order is justified at all.

Three offers an order of magnitude apart

This isn't an anomaly, it's the norm, and it almost always means each one is pricing a different scope. One assumes a template with minor changes, another a build from scratch, a third a build from scratch plus migration and integrations.

They only become comparable once the scope is shared and written down. That is what the discovery workshop is for — and why its output is yours, including when you build it with someone else.

What is not in those figures

A licence for our own engine, because we don't have one. A fee for access to your own code. A margin on hosting. The code, the rights and the infrastructure are yours from the first commit — not as a gesture, but because the project has to be transferable.

Questions
4

Questions about pricing

Why aren't there price ranges on the site?

Because a range without a scope carries no information, and with a scope it stops being a range. Any figure here would be either so wide as to be useless or so narrow as to be untrue for most projects. What drives the spread we do describe directly, in the article on what a web application costs.

What does the discovery workshop cost?

It depends on how complex the process is and how many people need to be in the room — we give a figure after the first, free call. It is the only stage we price before the workshop, because it is the only one with a predictable scope.

Does the workshop fee come off the project?

No, and deliberately so. Deducting it would turn the workshop into a deposit on a build, and its whole value is that its outcome can be "don't build this". You are paying for an answer, not for an introduction to an order.

Who pays for infrastructure?

You do, directly with the provider. Cloud accounts, domains and the repository are set up in your name, so there is no margin on reselling hosting and no situation where changing vendor means migrating everything.

Got an idea? Let's talk.

The first call is free. We reply within one business day.