BA Playbook 06
First Time Writing a User Story
How to turn a vague request into a story people can actually build and test.
Surya · August 8, 2026 · 6 min read · 16 practices
For New and aspiring Business Analysts writing their first user story, Junior BAs still finding their process, Product Owners writing their own stories and Delivery team members learning how requirements get written.
Someone says: "Can you create a Jira story for this?" You say sure. Then you open Jira. Blank description box. And a very simple question becomes surprisingly difficult: what exactly am I supposed to write here? If this is your first user story, start here. Because the biggest mistake is thinking you need to invent something clever. You don't. A user story is not something you invent. It is something you uncover. Let's do one together, from a vague request to a complete story a developer and a tester could both work from.
01Step 01
The request that already sounds like a story
"We need a download button for monthly statements" is easy to rewrite as a story. That's the trap.
Step 01
The request that already sounds like a story
"We need a download button for monthly statements" is easy to rewrite as a story. That's the trap.
The flow
Compare
What you could write immediately
As a customer, I want a download button, so that I can download my statement.
What's actually true
We don't understand the requirement yet — we've mostly rewritten what the stakeholder said.
Why it helps
That first version technically looks like a user story. It just isn't one yet. Don't write it down until you've asked a few questions first.
02Step 02
Start with the problem, not the button
A button is a possible solution. The problem comes first.
Step 02
Start with the problem, not the button
A button is a possible solution. The problem comes first.
The shift
Why it helps
The first question worth asking is simply "why do you need this?" The answer usually moves the requirement somewhere more useful than the thing that was originally asked for.
03Step 03
Find the actual user
"Customers" is still too broad to design for.
Step 03
Find the actual user
"Customers" is still too broad to design for.
At a glance
- Retail customers?
- Corporate clients?
- Advisers?
- Internal operations users?
Why it helps
Different users often have different permissions, workflows and needs. Suppose the answer turns out to be "retail banking customers using online banking" — now you know who you're designing for.
04Step 04
Find the outcome
What are they actually trying to achieve?
Step 04
Find the outcome
What are they actually trying to achieve?
Maybe the answer is: "They need to keep copies of their monthly statements for tax, loan and personal record purposes." Now you have the value — and the basic user story almost writes itself.
Why it helps
A story without a real outcome behind it is just a rewritten feature request. This is the piece that makes the "so that" line true instead of decorative.
05Step 05
Write the first version — and know you're not finished
The three-line story is the headline. The useful requirement lives underneath it.
Step 05
Write the first version — and know you're not finished
The three-line story is the headline. The useful requirement lives underneath it.
Why it helps
This is a perfectly reasonable user story. It's also not done. Everything from here is what turns a headline into something a team can actually build and test.
As a retail banking customer, I want to download my monthly account statements, so that I can keep copies for my personal records.
06Step 06
Add just enough context
Someone opening this ticket three months from now should understand why it exists.
Step 06
Add just enough context
Someone opening this ticket three months from now should understand why it exists.
Why it helps
You don't need to write an essay. Just give the next person enough that they don't have to track you down and ask "why are we doing this again?"
Customers can currently view recent account activity online, but older monthly statements must be requested through customer support. This creates unnecessary support requests and delays customers who need statements for record keeping.
07Step 07
Find the business rules
None of this appeared in "we need a download button."
Step 07
Find the business rules
None of this appeared in "we need a download button."
At a glance
- Customers can access statements for the previous 24 months.
- Statements are generated monthly.
- Only statements belonging to the logged-in customer can be accessed.
- Statements are available as PDF files.
Why it helps
This is why the conversation matters more than the template — a form only captures what you thought to ask about.
08Step 08
Write acceptance criteria
Now describe what success actually looks like.
Step 08
Write acceptance criteria
Now describe what success actually looks like.
At a glance
- AC1 — Given the customer is logged into online banking, when they open the Statements section, then available monthly statements from the previous 24 months are displayed.
- AC2 — Given a statement is available, when the customer selects Download, then the corresponding statement is downloaded as a PDF.
- AC3 — Given a customer requests a statement that does not belong to their account, when the request is made, then access is denied.
Why it helps
Now development has something concrete, QA has something testable, and you have something you can actually validate.
09Step 09
Ask what happens when things go wrong
This is where beginner stories often stop too early.
Step 09
Ask what happens when things go wrong
This is where beginner stories often stop too early.
Checklist
- What if the statement hasn't been generated yet?
- What if the PDF service is unavailable?
- What if there are no statements for that month?
- What if the customer has multiple accounts?
- What if the statement download fails?
Why it helps
You won't need a requirement for every imaginable scenario. But you should at least know which ones matter before development starts guessing.
10Step 10
Look for the data
What information does this feature actually need?
Step 10
Look for the data
What information does this feature actually need?
At a glance
- Customer ID
- Account ID
- Statement month
- Statement year
- Document ID
- File format
- Statement availability status
Why it helps
You're not trying to design the database. You're making sure everyone agrees on the information the feature depends on.
11Step 11
Make dependencies visible
The screen may be simple. The feature might not be.
Step 11
Make dependencies visible
The screen may be simple. The feature might not be.
At a glance
- Document Management Service
- Customer authentication
- Statement generation process
- Statement retrieval API
Why it helps
You don't need to solve all of them inside your story. You do need to know they exist before someone commits to a delivery date.
12Step 12
Say what's out of scope
This takes thirty seconds and saves a surprising amount of confusion later.
Step 12
Say what's out of scope
This takes thirty seconds and saves a surprising amount of confusion later.
At a glance
- Emailing statements to customers
- Statements older than 24 months
- Changing the statement PDF format
- Generating ad-hoc statements
Why it helps
Now if someone later says "I thought we were emailing them too," you have somewhere to point.
13Step 13
Keep your open questions visible
Don't hide unresolved questions in your notebook. Put them in the story.
Step 13
Keep your open questions visible
Don't hide unresolved questions in your notebook. Put them in the story.
At a glance
- Should statements for closed accounts remain accessible?
- Are joint accounts included?
- Is the 24-month retention period configurable?
Why it helps
A requirement with visible questions is much safer than a requirement pretending everything is already known.
14Step 14
The complete Jira story
Here's what "we need a download button" turned into.
Step 14
The complete Jira story
Here's what "we need a download button" turned into.
The hardest part wasn't writing As a... I want... So that... — that took about twenty seconds. The real work was understanding everything around it.
Why it helps
The template helps. But the questions create the requirement — this is the difference between rewriting a request and actually understanding one.
TITLE Allow customers to download monthly account statements CONTEXT Customers can currently view recent account activity online, but older monthly statements must be requested through customer support. BUSINESS PROBLEM Customers cannot independently access previous monthly statements, creating unnecessary support requests and delays. USER STORY As a retail banking customer, I want to download my monthly account statements, so that I can keep copies for my personal records. BUSINESS RULES 1. Statements are available for the previous 24 months. 2. Only statements belonging to the authenticated customer can be accessed. 3. Statements are provided in PDF format. 4. Statements are generated monthly. ACCEPTANCE CRITERIA AC1 Given the customer is logged in When they open the Statements section Then available monthly statements for the previous 24 months are displayed. AC2 Given a statement is available When the customer selects Download Then the corresponding PDF is downloaded. AC3 Given the requested statement does not belong to the authenticated customer When the request is made Then access is denied. DATA REQUIREMENTS Customer ID Account ID Statement period Document ID Statement status DEPENDENCIES Document Management Service Authentication service Statement retrieval API Statement generation process OUT OF SCOPE Email delivery Statements older than 24 months PDF redesign Ad-hoc statement generation OPEN QUESTIONS Are joint accounts included? Should statements remain accessible after an account closes? Is the 24-month period configurable?
15Step 15
Five mistakes I'd avoid on a first story
All five show up constantly, and all five are easy to catch before they ship.
Step 15
Five mistakes I'd avoid on a first story
All five show up constantly, and all five are easy to catch before they ship.
At a glance
- Writing the solution as the requirement — pause and ask what they're actually trying to accomplish.
- Making the story enormous — if it can't reasonably be built, tested and understood as one change, split it.
- Writing technical implementation too early — describe the business behaviour, let the implementation conversation happen with the people building it.
- Forgetting the unhappy path — a story that only describes success hasn't described the feature yet.
- Assuming everybody understands your story — hand it to someone who wasn't in the meeting and see if their interpretation matches yours.
Why it helps
Most of these aren't hard to fix. They're just easy to miss on your first few stories, before catching them becomes a habit.
16Step 16
Build your own readiness checklist
Before you call a story ready, run it against this.
Step 16
Build your own readiness checklist
Before you call a story ready, run it against this.
Checklist
- I understand the actual problem
- I know who the user is
- I understand the outcome they need
- The story describes value, not just a requested solution
- Important business rules are captured
- Acceptance criteria are testable
- Important exceptions are considered
- Data expectations are understood
- Dependencies are visible
- Out-of-scope items are clear
- Open questions are visible
- Someone can understand the story without me sitting beside them
Why it helps
A story that passes this list is a story someone else can pick up, build, and test without needing you in the room.
MY FIRST USER STORY CHECKLIST [ ] I understand the actual problem [ ] I know who the user is [ ] I understand the outcome they need [ ] The story describes value, not just a requested solution [ ] Important business rules are captured [ ] Acceptance criteria are testable [ ] Important exceptions are considered [ ] Data expectations are understood [ ] Dependencies are visible [ ] Out-of-scope items are clear [ ] Open questions are visible [ ] Someone can understand the story without me sitting beside them
The blank Jira box gets easier once you stop asking "What should I write?"
and start asking "What do I still need to understand?"
A user story is not something you invent. It is something you uncover. Writing "As a... I want... So that..." takes twenty seconds. Everything before it is the actual work.
Take this with you
Starter User Story Template
CONTEXT What happens today? Why does this change exist? BUSINESS PROBLEM What problem are we solving? USER STORY As a... I want... So that... BUSINESS RULES 1. 2. 3. ACCEPTANCE CRITERIA Given... When... Then... EXCEPTIONS What happens when the normal flow fails? DATA REQUIREMENTS What information is needed? DEPENDENCIES Which systems, teams or services are involved? OUT OF SCOPE What are we deliberately not doing? OPEN QUESTIONS What still needs an answer?
Get new playbooks first.