Scoping custom software without burning your budget
Most overruns happen before a single line of code. Here is how to write a brief that locks scope and forces the right tradeoffs upfront.
The cost overrun on a custom software project is almost always set before the contract is signed. It is set in the room where the brief gets written, by what is left out and what gets vaguely waved at.
We have run discovery on hundreds of builds. The pattern is consistent: the briefs that come in on time look almost identical, and the briefs that blow up look almost identical to each other too. The difference is rarely the engineering. It is the scope discipline upstream.
This guide is the exact scoping process we run before quoting any project. If you use it on your next internal build, you will catch the overrun before it lands in the invoice.
Why custom software almost always overruns
Three things compound:
- Vague success criteria. "Improve the customer experience" cannot be scoped, so it cannot be costed, so it cannot be done.
- Hidden scope. "And of course it integrates with our CRM" is a sentence that doubles the budget.
- Mid-build expansion. Once the team sees a working version, they want twelve more things. None of those things were in the brief.
The fix for all three is the same: turn vague intent into a written brief where every line is testable, and lock that brief before code starts.
The five questions that scope a build
Before we write a single estimate, we get written answers to these five.
1. Who opens this on Monday morning, by name?
Not "the ops team." A specific person. If you cannot name them, you do not know what the tool is for yet. Building software for a department is how you ship something nobody uses.
2. What is the single number this tool has to move in week one?
One number. Saved hours. Faster cycle time. Conversion rate. Inbound leads triaged per day. The number forces a hierarchy: every feature either moves it or it does not.
3. What is explicitly out of scope?
This is where the budget is protected. The most useful section of any brief is the bulleted list of "this tool does not do X, Y, or Z." It looks defensive on paper. It saves you a quarter on every build.
4. Which existing system is this replacing?
Spreadsheets. A Notion doc. A different SaaS. A manual process. The current state is the baseline the new tool has to beat. If there is no current state, you are not building a tool, you are running a research project.
5. What does success look like in 30 days?
Not "we have launched." Something concrete. "The ops lead has stopped sending the daily spreadsheet by email." "The CEO opens the dashboard before 9am." "Inbound leads route to the right rep in under five minutes."
If you cannot answer all five, you are not ready to scope. You are ready to do discovery. That is a different and cheaper step.
How to spot scope creep before it costs you
The expensive kind of scope creep does not look like a feature request. It looks like a question.
- "What if we also showed last year's numbers?"
- "Can we have a Slack alert when this happens?"
- "Should it work for the EU team too?"
Each is a paragraph in conversation and three days in code. The rule we use:
Every question that adds a system, a data source, a permission, or a screen triggers a scope amendment in writing. Otherwise the timeline is fiction.
You do not have to say no to the question. You have to put a price on the yes, in days and dollars, and let the client decide whether the new thing is worth the slip. Most of the time they will choose ship the original brief and add the new thing in v2. Some of the time they will choose to slip. Both answers are fine. What is not fine is silent slip.
The tradeoff conversation that protects your budget
Halfway through scoping, we run a deliberate tradeoff conversation. It sounds like this:
If we had to ship in two weeks and you could only keep three of these five features, which three?
The answer is always informative. Sometimes the client confirms the brief and we proceed. Sometimes the client cuts two features and we discover the brief was triple what they actually needed. The conversation costs thirty minutes. It saves entire sprints.
We also flip it: "If you had three more weeks, what would you add?" That answer tells us what the v2 should contain, which means we design the v1 to make v2 possible without a rewrite.
Both directions matter. Most teams only ask one. Asking both is how you scope something that ships in v1 and survives to v3.
What a healthy scoping doc looks like
A scoping doc that ships looks like this:
- One page of context. Who, what, why, success metric.
- One page of in-scope. Bulleted feature list with one sentence per item.
- One page of out-of-scope. Explicit list of what we are not building.
- One page of risks and unknowns. The things that could double the timeline if they go wrong.
- A timeline. Two weeks, four weeks, six weeks. With named checkpoints.
- A cost. Fixed for fixed scope. Hourly is a different kind of contract and a different kind of problem.
If your scoping doc is longer than that, the scope is too big. Cut something or split the project.
The cuts that protect your budget on day one
We use the same three cuts on every project that comes in over-scoped:
Cut the "nice to haves" entirely. Move them to a "v2 candidates" doc. If they survive past the v1 ship date, build them. Most do not.
Cut every screen the named operator does not open in their first week. Reporting that runs once a quarter does not ship in v1. It ships in a separate release that costs a fraction.
Cut every integration where the value is not measured in saved hours. Integrations are the most expensive line item per delivered value. If the integration is decoration, skip it.
Each cut sounds small. On a typical project they collectively shrink the scope by 30 to 50 percent. The work that ships does not shrink at all.
Want a brief reviewed?
If you have a brief sitting in a doc somewhere and you are unsure whether it ships in two weeks or three quarters, the call is thirty minutes. We rewrite it live with you.
Book a discovery call and bring the messiest version of the brief. The messy version is what we want to see.
Frequently asked questions
How long should scoping itself take?+
Ninety minutes to two hours of real conversation, plus two or three days of back-and-forth in writing. If scoping takes a month, the project is in trouble before code starts.
Fixed-fee or hourly?+
Fixed fee for fixed scope. Hourly only makes sense if the work is genuinely open-ended research. For shippable software, fixed fee aligns incentives correctly: the team is paid to finish, not to bill.
What if I cannot answer the success metric question?+
Then the project is not ready to build. It is ready for a half-day workshop where we figure out the metric together. Building without it produces software nobody opens.
When should I walk away from a scoping conversation?+
When the other side will not write out-of-scope down. A vendor who refuses to put limits in writing is pricing for overrun. Find one who will.
Keep reading
Got an idea? We can ship it next week.
30-minute discovery call. We tell you what's possible, what it costs, and when it ships.