In short: Every software quote rests on assumptions about scope, technology, timeline and team. The trouble starts when those assumptions stay in the estimatorâs head instead of the proposal document. This guide covers which assumptions to write down, how to explain them to a client, and why a solid assumptions section is the cheapest protection against scope creep an agency can buy.
Where this problem starts
Ask any CTO why a project went over budget and youâll usually get a variation of the same sentence: âwe assumed thatâŠâ. The payment integration would be simple. The client would deliver the content on time. The backend stack was already agreed.
Short proposals have become the norm in IT estimating. The client wants something quick, specific and cheap, so the sales team trims the assumptions section because ânobody wants to read an essayâ. The quote looks tidy. Everything that got cut returns during delivery as scope changes, extra work, and arguments about who meant what.
This isnât a rare edge case. Itâs one of the main reasons quotes for the same brief can differ by an order of magnitude, and why project budgets drift so far from the plan.
Why it hurts
How you handle uncertainty matters more than the arithmetic behind the estimate. An estimate is a forecast, and every forecast stands on a set of assumptions. The fewer of them you can actually see, the worse the outcome.
- Scope creep with no reference point. If the scope boundary isnât written down, you have nothing to point to when the client asks for âa small changeâ. Every change gets negotiated from memory instead of from the document.
- Disputes over interpretation. âThe quote included login.â Sure - but did it include Google and Apple sign-in? Without recorded assumptions, the answer depends on who happens to be on the call.
- Quotes you canât compare. Every agency prices its own silent assumptions. The client compares numbers, not assumptions, and decides on a comparison that doesnât really exist.
- The same mistake, over and over. When assumptions are never captured, the agency never learns where its estimates went wrong, so the error comes back in the next project.
The bill for all this is real: burned margin, overtime, strained client relationships, and projects that were over budget before they started.
How to fix it
The fix is unglamorous but effective. Write the assumptions down, in the proposal document, before the client signs. A process that holds up looks like this.
Step 1: Gather assumptions in four categories
Before you put a number on paper, list what that number depends on. Four categories cover most of it.
- Technical: stack, architecture, integration approach, library versions, environments. Example: âWe assume integration with X via a publicly available REST API; integration through a dedicated SDK is not included.â
- Scope: whatâs in, and what youâre explicitly leaving out. Example: âScope includes the admin panel for user management; the financial reporting module is out of scope.â
- Timing: deadlines, dependencies, resource availability, how much the client needs to be involved. Example: âWe assume the client delivers content and graphics by [date]; any delay moves the schedule.â
- Resources: team size, seniority, hours. Example: âThe quote assumes 1 senior + 1 mid for 8 weeks; scaling up to go faster changes the price.â
Step 2: Write each assumption as something you can check
Write assumptions so they can be verified later. âWe assume standard code qualityâ says nothing; âwe assume code review and unit tests are part of the definition of doneâ gives both sides something concrete to work with. The same goes for infrastructure. âThe system runs on the clientâs serversâ is vague, while âwe assume hosting on AWS in a configuration the client provides, with infrastructure costs on the client sideâ is a fact you can test.
The more measurable the assumption, the earlier youâll notice it no longer holds, and the quicker you can price whatever changed.
Step 3: Present assumptions as precision, not as an escape hatch
This is the part most agencies get wrong. Clients read a list of assumptions and hear âthe agency is covering itselfâ. Reframe it: assumptions are evidence that you thought the details through. Attach each one to a line in the quote - this part costs X because we assume Y, and if Y changes weâll see it early and correct the picture openly. Then give the client room to challenge the assumptions before signing. Some will change, and thatâs the point: a one-sided offer turns into a shared definition of the project.
Step 4: Treat the assumptions as a living document
Assumptions donât retire when the contract is signed. During delivery, keep comparing reality against them. When one stops holding, write down the deviation, work out what it costs in money and time, and put options in front of the client. A potential argument becomes a controlled renegotiation instead.
Step 5: Automate how the assumptions get built
Here the game shifts. Writing assumptions from scratch in every project is slow, and different estimators forget different things. Automation comes down to two pieces:
- Assumption templates for common project types (MVP, web app, integrations, AI-assisted). Instead of trying to remember what else to assume, you work through a checklist that already survived a few dozen projects.
- Historical data from similar work. When the tool proposes assumptions based on how comparable projects actually turned out, youâre inferring from evidence rather than starting from a blank page.
Faster quoting is the obvious benefit. The bigger one is completeness. The assumptions an estimator simply forgot to think about are the ones that resurface during delivery.
Where Apropo comes in
Thatâs the job apropo.io was built for. Instead of writing assumptions blind into the next document, you get a tool that:
- builds the estimate on components and historical data from your own projects, so assumptions come from what actually happened rather than intuition,
- lets you produce repeatable, consistent proposals with an assumptions section already in place, so youâre not starting from zero on every offer,
- gives you estimate-versus-reality control, so you can see which assumptions held up and which to correct on the next quote.
It isnât a convenience feature. Itâs what makes documenting assumptions a normal part of the pricing process instead of a chore, and the payoff shows up in your margin and in how the client relationship holds up.
Protect project margin
Make every assumption visible before it costs you margin.
Document scope, assumptions and pricing in one place, and catch scope creep while it is still cheap to fix.
See how Apropo protects marginThe short version
Documenting assumptions is where an honest, accurate estimate starts. Write down the technical, scope, timing and resource assumptions. Present them as evidence of precision rather than excuses. Treat them as a living artifact that changes with the project. Add automation built on your own historical data, and estimating gets faster and noticeably more complete, with far less risk left on the table. Worth testing on a real proposal before the next project teaches you the same lesson through your margin.
Inspired by real industry discussions about estimation and scope management in software projects.
