How to Write a Scope of Work That Does Not Ruin the Project
Posted by: Rafael Duarte
Almost every outsourcing dispute I have watched up close was described by both parties as something else. A quality problem. A communication problem. A culture problem. Occasionally a "they just did not get it" problem, which is the vaguest accusation available and therefore the most popular.
Peel the costume off and it is a scope dispute underneath. Two parties held different pictures of what was being bought, neither picture was written down precisely enough to be falsifiable, and the gap stayed invisible until money and deadlines made it visible all at once.
Good news: this is a mechanical problem. A scope of work is not a legal formality you paste from a template. It is the machine that converts your intent into someone else's work, and if the machine is badly built you spend the whole project pushing it uphill.
Outcomes, not activities
The first and largest failure is describing what people will do instead of what will be true when they are finished.
"Provide ongoing social media management" is an activity. It could mean four posts a month or forty, with or without design, with or without community responses, paid promotion, reporting and strategy. Two reasonable people will read that sentence and picture different jobs, and both will be certain they read it correctly.
"Publish twelve posts per month across two channels, each with original graphics, respond to inbound comments within one business day, deliver a monthly performance report against agreed metrics" is an outcome. You can hold it up against reality and get a yes or a no.
The test: could a neutral third party read this clause and determine whether it was met? If judging compliance requires a conversation about intent, you have written an activity and deferred the argument rather than preventing it.
This matters more when you are buying delivery than when you are renting people. Staff augmentation needs a thinner scope because you direct the work daily. When you buy an outcome, the scope is the product. Know which you are doing before you write, because the three things sold under the word outsourcing demand completely different documents.
The out-of-scope list, which is the whole game
Here is my single strongest opinion about this document.
The most valuable section is the list of things explicitly not included. It is also the section roughly nobody writes, because writing it feels negative, like you are anticipating conflict, like it might make the vendor think you do not trust them.
Write it anyway. Highest return per word in the entire document.
An in-scope list defines a region. An out-of-scope list defines the boundary, and the boundary is where every argument happens. "Build the customer portal" does not tell you whether the portal includes a mobile app, single sign-on, migration of the old data, admin tooling, or a second language. Each is a plausible reading. Each is weeks of work. Each will be assumed included by one party and excluded by the other, and you find out which in the last fortnight.
A useful out-of-scope list for that portal:
Not included in this scope of work:
- Native mobile applications for iOS or Android
- Migration of records from the legacy system, quoted separately
- Single sign-on integration with third-party identity providers
- Languages other than English
- Hosting, provisioning and ongoing production support
- Content, copy and imagery, which the client supplies
That takes eight minutes to write. It routinely saves six figures, and more importantly it saves the relationship, because a dispute settled by pointing at a line in a document is not really a dispute. It is an administrative act. Nobody has to be the villain.
How to generate the list: for every item in the in-scope section, ask "what is the adjacent thing someone might reasonably think this includes?" Write that down. Do it fast, twenty lines is plenty.
Acceptance criteria written as testable statements
Acceptance criteria are where "done" gets defined, and most versions are unfalsifiable mush.
Bad: "The system should be fast and user-friendly." Fast according to whom, on what connection, at what data volume? User-friendly measured how? This clause cannot be failed, which means it also cannot be passed, which means it is decorative.
Good acceptance criteria read like tests, because that is what they are:
- Search returns results in under 800ms at the 95th percentile with 100,000 records loaded
- A new user can complete registration and reach the dashboard in under six steps
- The system passes the twelve documented user journeys in the attached test plan on Chrome, Safari and Edge
- No open defects at severity 1 or 2 at handover
The same applies far outside software. For a bookkeeping engagement: "monthly close completed by the fifth working day, bank reconciliations to zero variance, no more than two adjusting entries raised by the external accountant per quarter."
If you cannot write a criterion as a statement that could be false, you have not decided what you want. Decide it now rather than during handover.
Before and after
A real-shaped requirement, in the form most people write it:
The vendor will build a reporting dashboard for the operations team so they can see how the business is performing.
Everything is wrong here. Which metrics? Which data sources? How current? Who can see it? What does success mean? This clause is a mood.
The same requirement, rewritten:
Deliverable: A web-based reporting dashboard accessible to users with the Operations role.
Outcome: The operations team can answer the six questions listed in Appendix A without exporting data or contacting engineering.
Included: Six defined charts as specified in Appendix A. Data sourced from the existing Postgres warehouse via read replica, refreshed at least hourly. Date range filter and CSV export on each chart. Two access roles, Viewer and Admin.
Not included: Mobile-optimised layouts. Real-time streaming data. Custom report builder. Alerting. Any new data collection or instrumentation. Historical backfill earlier than 1 January 2025.
Acceptance criteria: All six charts render against production data volumes in under three seconds. Numbers reconcile to the existing monthly finance report within one percent. Two named operations staff answer the Appendix A questions unaided in a supervised session. Zero severity 1 or 2 defects open.
Assumptions: Appendix A metric definitions are final at kickoff. Existing design system components are reused, no new visual design work required.
Dependencies: Read replica access provisioned by the client by 10 March. Client data engineer (name) available for up to four hours of schema questions in week one.
Twenty minutes to write, and it removes essentially every reason this could go quietly wrong. Notice how much of the value sits in the sections people skip.
Assumptions and dependencies, each with a named owner
Every project rests on things that must be true and things someone else must provide. Write both down, with a human name and a date next to each. Not "the client team." Not "IT." A person.
This is not about blame. Unowned dependencies simply do not happen. When staging access is "with IT," it sits in a queue and surfaces in week three as a two-week delay that somehow becomes the vendor's fault. When it is "Marta, by 10 March," Marta either does it or tells you she cannot, and both outcomes are useful.
Then say what happens when a dependency slips: the timeline moves by the length of the delay, and idle time is either billable at an agreed rate or the engagement pauses. Vendors quietly price this risk in when you leave it unsaid, so you pay for it either way. Assumptions work the same. "We assume the existing API is documented and functional" looks trivial until it is neither, and the two weeks of reverse engineering that follow have to come from somewhere.
The change request process, with a price on it
Scope will change. Anyone who writes one believing otherwise has not shipped much.
The mistake is not change. It is having no defined path for it, which produces one of two failure modes. Either changes get absorbed informally until the vendor is thirty percent over budget and resentful, or every change becomes a negotiation that poisons the relationship.
A change process needs four things:
- Who can request a change. Name one or two people, or everyone who talks to the vendor is a purchasing authority.
- What a request must contain. Description, reason, requester. Two paragraphs.
- What the vendor returns, within a stated window. Impact on cost, timeline and other deliverables. Forty eight hours is reasonable.
- Who approves and how it is recorded. In writing. A Slack thumbs up is not a contract amendment, though I have watched people treat it as one.
Attaching a price to changes is not meant to discourage them. It makes them possible. When change is free the vendor defends against it and every conversation turns adversarial. When change has a known cost, you can say "yes, that is worth eight thousand dollars, do it" and everyone stays friendly. Friction is not the enemy. Ambiguity is.
Definition of done, separate from acceptance criteria
Acceptance criteria say the thing works. Definition of done says it is finished, which is a bigger claim.
Done usually means: merged to main, tests written and passing, documentation updated, credentials and accounts transferred to client ownership, deployed to the agreed environment, handover session completed.
Write it once, apply it to every deliverable. Otherwise you get the classic ending where the feature works, the vendor is finished, and three months later you find there are no tests, the deployment only runs from one person's laptop, and the domain is registered to the personal email of someone who left.
While we are here: ownership of repositories, infrastructure accounts and domains belongs to you from day one, in writing. Not at handover. Day one. It costs nothing to agree at signature and is unpleasant to negotiate later, when the leverage has moved.
Which scope style each commercial model demands
The pricing model and the scope document are the same decision viewed from two angles. Pick a model whose demands you can actually meet.
| Model | Scope required | Works when | Fails when |
|---|---|---|---|
| Fixed price | Extremely detailed, closed, with a hard out-of-scope list | Requirements genuinely known up front | Discovery is ongoing, and you get a padded price plus change-request warfare |
| Time and materials | Light, directional, with a budget cap and review cadence | You have strong internal ownership and priorities shift | Nobody internally is watching, and the meter runs forever |
| Milestone based | Medium detail, per milestone, with acceptance criteria on each | Most real projects, most of the time | Milestones are vague, so payment becomes a monthly argument |
Fixed price transfers risk to the vendor, and the vendor prices that risk into your invoice whether or not you needed it. It demands the most rigorous scope of the three, because under fixed price every ambiguity is a direct transfer of money between the parties, and it will be fought over accordingly.
Time and materials is honest and flexible, and safe only if someone internally owns direction and reviews weekly. Without that it is an open bar. Cap it per phase and review against the cap. Not against a burndown chart. Against the cap.
Milestone based is the sensible default for most delivery work. Each milestone is a small fixed price project with its own acceptance criteria and payment, so you get natural checkpoints where you can stop. The failure mode is soft milestones, so write them like tests.
One thing sits underneath all three. Buy staff on a monthly markup and a weak scope costs you slowly and invisibly, because you keep paying for hours regardless of what those hours produce. Place a permanent hire and the same failure surfaces as a bad fit inside the first quarter, which is precisely why replacement guarantees exist as a structure: Ethiopian recruiters such as Zemenay Tech attach a six month replacement window to a one-time placement fee, converting a fit failure into a defined remedy rather than an open-ended cost. Neither structure fixes a bad scope. They distribute the pain differently, and knowing which distribution you signed is part of writing the document.
Who should write it, and why not the vendor
The client writes the scope. Full stop, with one caveat I will come to.
This is not a trust question. Honest vendors, good vendors, vendors you would happily recommend, all have revenue that scales with scope. That is not corruption, it is arithmetic. Ask them to define what you need and they will do it in good faith through a lens that makes larger, longer engagements look sensible, because from where they sit it genuinely does. Handing them the pen puts a hand on the scale.
The second, subtler reason: writing the scope is how you find out whether you understand your own requirement. Half the value is generated in your own head while drafting. Outsource the drafting and you outsource the thinking, then spend the project reacting to a plan you never formed an opinion about.
The caveat: vendors know things you do not about feasibility, sequencing and effort. So use them, in this order.
- You write version one alone. Outcomes, boundaries, criteria. Two to five pages.
- Share it with two or three vendors and ask them to challenge it. This tests the vendors as much as the document. The ones who push back thoughtfully are worth hiring. The ones who say "yes, all fine, here is a quote" are telling you something.
- You revise it. Still your document. Still your pen.
If you genuinely cannot write version one, that is important information and it is not a scope problem. It means you should be buying managed delivery, or hiring someone internally who can own technical direction first. Buying a fixed price project you cannot specify is how you end up with a beautifully built implementation of the wrong idea.
The two-page rule
A scope of work is not improved by length. Past a point, extra pages hide the important clauses rather than adding to them, and long documents do not get read, which defeats the purpose.
For most engagements under six figures, aim for two to five pages containing: outcomes, in scope, out of scope, acceptance criteria, assumptions and dependencies with named owners, milestones and payment, change process, definition of done, and ownership of assets. That is the whole list.
Then, and this is the part that gets skipped, get every person who will actually do the work to read it. Not just the account manager who negotiated it. Ask each of them to describe what they think they are delivering, in their own words, before anyone starts. The gaps you find in that conversation are the cheapest gaps you will ever find. Once work starts the same gaps cost weeks, and by then everyone has committed to their own version of the truth. If you are handing off day-to-day operations rather than a project, the same discipline applies to the handover.
A good scope is not a defensive document. It is not there to win an argument later. It is there so the argument never happens, which is a much better outcome than winning one.
Write the out-of-scope list. Genuinely, if you only take one thing from this, write the out-of-scope list.

