Writing a specification in business language: what a scenario looks like, the data it needs, the decisions the system makes, the unhappy path, and what done is.
Key takeaways
- One well-written scenario is worth more than ten hand-drawn screens.
- Every field in a scenario needs a source: who types it, which system it comes from, or what rule computes it.
- Every decision the system makes is a business rule that you own. A developer who invents it is guessing.
- An unhappy path you did not write will still get designed, just by someone who does not know your business.
- "Done" has to be something a person can perform and observe, not a feeling.
A good specification is not a list of screens and not a request to "make it like theirs". It is a set of written scenarios: what starts the process, what data it needs, what decision the system makes, what happens when something is wrong, and what counts as done. It can be written in entirely business language, provided it contains real examples.
What a written scenario looks like
A scenario is one complete story of what happens, from the event that starts it to the result. These are its parts:
- Who. Who runs it - an employee in a specific role, a customer, or the system itself at a set time.
- What triggers it. A click, an incoming document, a time of day, or a status change.
- What must be true first. A precondition, for example that the customer exists and is not flagged as blocked.
- What actually happens. A sequence of actions, in short sentences.
- What gets saved and what gets sent. Which data is written, where, and who is notified.
- What you see at the end. The observable result, for the person running it and for anyone affected.
A scenario that runs past one page is probably two scenarios. Splitting it is specification work, not development work.
The four things every scenario must name
- Data and a source for every field. Not "customer details" but name, phone, customer number, each with where it comes from.
- The decision and the rule behind it. If the system decides something, write the rule out explicitly, including the edge cases.
- The unhappy path. What happens when a value is missing, arrives twice, arrives late, or is rejected.
- A definition of done. A sentence somebody can carry out and answer yes or no to.
The most dangerous field in a specification is not the one that was forgotten but the one written with no source. It looks defined, and in practice somebody will have to decide it mid-build.
A badly written requirement, rewritten
The original requirement: "The system should send a reminder to customers who haven't paid."
That sentence sounds clear and hides at least seven decisions. The table takes it apart:
| What was written | The question it hides |
|---|---|
| "customers" | Which record - a customer, an invoice, or an order? |
| "who haven't paid" | By which status, and how many days after the due date? |
| "a reminder" | Through which channel, and to which address field? |
| "should send" | Exactly when - what hour, which timezone, business days only? |
| No frequency stated | Once per invoice or repeatedly, and when does it stop? |
| No unhappy path | What happens when there is no address, and when it bounces? |
| No proof | How do we know tomorrow that it worked? |
The rewrite: once a day at a fixed hour, in a fixed timezone and on business days only, the system finds every invoice in status "sent" that is more than seven days past its due date and is not marked paid or credited. Each such invoice gets one message to the address on the invoice. If there is no address, the invoice goes onto an exceptions list that is reviewed each morning. If the message bounces, a note is written on the customer and an alert goes to the process owner. Each invoice receives at most one reminder per week and no more than three in total. Definition of done: every invoice in the list has either a send record or an exception record - no invoice has nothing against it.
The second version is several times longer, and that is the point. Every line in it is a decision that would otherwise have been made without you.
Which decisions are yours and which are the developer's?
This boundary prevents most of the later arguments:
- Yours. Rules with business consequences, wording a customer sees, what is in and out of scope for the first phase, who approves, and what happens in an exceptional case.
- The developer's. How data is stored, in which tools, how the schedule runs, how retries are handled, and how the code is structured.
When a client dictates the right-hand column, the project loses the knowledge of the person building it. When a developer is forced to decide in the left-hand column, a business decision gets made by somebody without the context - and it surfaces only when someone sees an unexpected result.
What does "done" mean, and who says so?
"Done" is a list of checks a person can run themselves and tick off. Not "the system works", but:
- I entered a valid record and the result appeared where it was specified.
- I entered a record with a missing field and got the message that was defined.
- I submitted the same record twice and exactly one result was created.
- I stopped the system mid-run, and a re-run created no duplicates.
- I opened the exceptions list and found precisely the cases I broke on purpose.
- I confirmed that an unauthorised person cannot see the screen.
The person who says so is the process owner - whoever suffers when it fails - not whoever commissioned the project from above.
The unhappy paths people forget most
- The same action was submitted twice because somebody clicked again.
- A run stopped halfway and left half the work done.
- A field that was always populated arrived empty for the first time.
- A record was edited after it had already been processed.
- Two people edited the same record at the same moment.
- A new run started before the previous one finished.
- A clock or timezone change shifted the time window.
- The person who held the credential left the company.
Walking this list against every scenario finds more gaps than any other review at the specification stage.
Related: how to scope a project properly, connecting systems in an Israeli business, when to use an automation tool and when to write code.
Sources
Frequently asked questions
How detailed does a specification need to be?
Detailed enough that a different person reaches the same result without asking you. The practical test: hand the scenario to somebody in your organisation who was not in the meeting. If they ask a question whose answer is a business decision, the specification is still missing something there.
Can I write a specification without knowing what is technically possible?
Yes, and that is the right way round. Describe the business outcome and the rules, and let the developer say what is expensive and what is cheap. A specification written around a guessed limitation drops real requirements for no reason.
What do I do when a rule has no answer yet?
Write "not decided" explicitly, and name who should decide and by when. A list of open decisions is a legitimate part of a specification. What is not legitimate is leaving the question unmarked, because then somebody decides it quietly during the build.
Do I need to draw screens?
Not in order to start. A rough sketch helps explain a sequence, but a polished screen with no rules and no unhappy paths is not a specification. If you have to choose where to spend effort, write another scenario before improving the drawing of an existing one.
Keep reading
Related service
MVP Development
Turn an idea into a validated product in weeks, not months.
About the author
Yehonatan Saadia
Freelance automation, web & MVP developer
I'm Yehonatan Saadia, a senior developer who builds business automation, custom websites, and MVPs for small and mid-sized companies across the US, Europe, and Israel. These guides come from real client work, not theory.
Work with meHave a project like this?
Tell me what you're trying to automate or build. I reply within 24 business hours with a few targeted questions, then we walk through it on a free 30-minute call, with no commitment. You come away with a scope, a timeline and a fixed price - or a straight answer that it isn't worth building.
