INVEST Criteria for Better User Stories
- Contributor
- Apr 8
- 5 min read
INVEST is a six-letter acronym for the qualities of a good user story: Independent, Negotiable, Valuable, Estimable, Small, Testable. Coined by Bill Wake in 2003, it's the most widely-used checklist for story readiness. Used as a real check (not lip service), it catches the common failure modes that produce backlog drama.
Independent
The story shouldn't depend on another story being completed first.
Why: dependencies pile up. Story B can't start until A is done. Story C can't start until B. Now reordering breaks everything.
Test: can the team reasonably pick this story up without first finishing another specific story?
When dependencies are unavoidable:
Make them explicit
Order stories so the prerequisite comes first
Consider whether the dependent stories should be combined or split differently
A backlog with many tightly-coupled stories produces planning paralysis.
Negotiable
The story describes intent, not exact specification. Implementation details emerge through conversation.
Bad: "As a user, I want a dropdown menu in the upper-right corner showing my recent items with a max of 10 entries..."
Better: "As a user, I want quick access to items I recently viewed."
The first locks in UI. The second describes the need; the team designs the implementation.
The story is a placeholder for a conversation. If everything is specified, there's nothing to negotiate, and the team can't propose better solutions.
Valuable
Each story delivers value to a user or stakeholder.
Test: "What value does this story deliver?"
If the answer is internal-only ("makes the code cleaner"), that might not be a user story — it might be tech debt work. Both are valid; both need different treatment.
The value isn't always to an end user. Internal users count: "as a support agent, I want to look up recent orders." But there should be value to someone identifiable.
Estimable
The team can roughly estimate the effort.
Test: when the team looks at the story, do they have a rough sense of effort?
If the answer is "no idea — we'd need to investigate," that's information. Either:
The story is too vague (clarify)
The story is too large (decompose)
The team needs a spike (time-boxed investigation) before estimating
Stories that aren't estimable can't be planned around. The team might commit to them and discover they're much bigger than expected.
Small
The story fits comfortably in a sprint, ideally smaller.
Test: rough estimate under a couple of days of work for the team. Under a week if the team is small.
Large stories:
Sit "in progress" for the whole sprint
Block other work
Hide their complexity until late
Make incremental shipping impossible
Splitting techniques:
By user role
By workflow step
By data type
By happy path vs. edge cases
By platform (web first, mobile next)
The right splits produce stories that each deliver value, not stories that are "Step 1: implement button. Step 2: make button work."
Testable
There's a clear, observable way to determine completion.
Test: can someone (not the developer) verify the story is done?
If the answer requires the developer to demonstrate it, the story isn't testable. Specific acceptance criteria make it testable.
Untestable stories drift. Three engineers have three opinions about whether it's done; arguments ensue.
Using INVEST as a Checklist
During backlog refinement, check each story against INVEST:
Story: As a user, I want to view my recent orders.
I: Independent? Yes, no other story is a prerequisite.
N: Negotiable? Yes, UI not specified.
V: Valuable? Yes, customers asked for this.
E: Estimable? Roughly 2-3 days based on current architecture.
S: Small? Yes, fits in a sprint.
T: Testable? Yes, acceptance criteria define done.
→ Ready for the sprint.
When a story fails one or more checks, fix it before sprint planning.
When INVEST Is Hard to Apply
A few specific cases.
Foundational stories. The first story for a new module may seem to violate Independent (nothing depends on it yet) but is actually a special case — it's the foundation.
Spike stories. Time-boxed investigation. Not really a user story; should be tracked separately.
Refactoring stories. Pure technical work. May fit "tech debt" rather than "user story" format.
Compliance stories. Required by regulation, not derived from user need. The "value" is regulatory; the user isn't a person.
Don't force INVEST onto stories that aren't really user stories. Use the right format.
INVEST vs. SMART
INVEST is sometimes compared to SMART (Specific, Measurable, Achievable, Relevant, Time-bound). They overlap but address different things.
SMART describes goals
INVEST describes user stories
For a project goal, use SMART. For backlog items, use INVEST.
Anti-Patterns
Lip service. Team reads the acronym; doesn't check stories against it. Stories continue to fail in the same ways.
Forced fit. Squeezing every backlog item into the story format. Some work isn't user stories.
Negotiable as excuse. Treating "negotiable" as "we'll figure it out later." Negotiable means open to discussion; not undefined.
Small as small. Splitting until stories are too small to deliver value. "Add the button" alone isn't a story; "user can save changes via the button" is.
A Walked Example
Initial story:
As a user, I want a comprehensive dashboard.
INVEST check:
Independent: probably yes
Negotiable: too vague to know — "comprehensive" is undefined
Valuable: nominally, but to whom doing what?
Estimable: no, "comprehensive" could mean anything
Small: probably not
Testable: not without more specifics
Refined:
As a project manager, I want to see the current status of all my active projects on one screen, so that I can quickly identify any at risk.
Better. Now:
Independent: yes
Negotiable: implementation open
Valuable: PM identified
Estimable: roughly 3-5 days
Small: yes
Testable: with acceptance criteria specifying which info appears
Acceptance criteria fill in the details:
- Dashboard shows all projects PM owns
- Each project shows: name, status (green/yellow/red), next milestone, owner
- Projects sorted by risk: red first, then yellow, then green
- Mobile-responsive
The story is now ready for the sprint.
Refining Stories in Practice
Backlog refinement (or grooming) is the regular practice of getting stories ready for sprint planning.
A working cadence:
Mid-sprint, look at the top 10-15 stories
Apply INVEST to each
Refine where needed
Estimate
Stories that can't be made INVEST-compliant in refinement aren't ready for the sprint
This prevents the sprint-planning meeting from being a story-refinement meeting.
Key Takeaway
INVEST stands for Independent, Negotiable, Valuable, Estimable, Small, Testable. Use it as a real checklist during backlog refinement, not as a slogan. Stories failing one or more criteria need work before sprint planning. The most common failures: stories too large (Small), too vague (Estimable), or without clear completion (Testable). The discipline of INVEST checking prevents sprint planning from becoming story-refinement and reduces drift during the sprint.
Related reading
Keep learning. This article is part of the Requirements & Business Process Improvement path in the ShiftQuality Learning Center. Elicit, prioritize, and trace requirements that survive reality.


