User Stories That Survive the First Support Ticket
Write user stories as a working loop: Connextra format, INVEST, splitting, and acceptance criteria, plus a CSV autopsy of why the sentence still fails after QA.

Write user stories as a working loop: Connextra format, INVEST, splitting, and acceptance criteria, plus a CSV autopsy of why the sentence still fails after QA.

A user story is a short, incomplete description of a change in system behavior, told from the person who benefits. Ron Jeffries called the card a token in 2001. Bill Wake wrote INVEST in 2003 as the bar for whether that card is ready to schedule.
The sentence still fails when you treat it as the spec.
Ranking pages skip the working loop. Run it instead: format as a thinking prompt, INVEST as the quality bar, a split that still ships value, then acceptance criteria so "done" is testable. For PMs and UX designers sharing a backlog.
As a… I want… so that…) is a who / what / why prompt. Agile Alliance calls it training wheels, not the practice.A user story is pidgin: enough shared language for a customer and a builder to start work. Wake quoting Alistair Cockburn: the card is a promise for a conversation.
Jeffries: the card is a token representing the requirement. Scrum Alliance: they are not documents at all.
Atlassian calls a story the smallest unit of work and an end goal, not a feature. That page is the template explainer most teams already saw. It does not teach INVEST, splitting, or the ways a finished-looking card still ships the wrong thing.
If stories are just thinner requirements, they are overhead. That skepticism already ranks: r/agile asks why you need them.
Stories live in the solution space: a change in this product for a person you can name. They do not replace problem-space work.
A jobs to be done statement can sit upstream (the goal independent of any product). A user journey map can show where that change lands in a flow. A product requirements document can hold the decisions you are willing to freeze.
Wikipedia finds no good evidence that adopting this format lifts success rates or productivity. Do not pitch it as a velocity hack. Pitch it as a cheaper way to keep the backlog a focus tool.
Kent Beck's XP stories (1999) were incomplete conversational planning units before anyone wrote As a…. Cockburn called the card a promise for a conversation in 1998. The three-part sentence arrived later.
The Connextra team in the UK, including Rachel Davies, wrote the three-part template around 2001. Davies did not invent the practice. The team invented a prompt for who / what / why.
Mike Cohn later dropped mandatory "I want" (some stories are "I am required to"). He treats so-that as the most important clause that is still not mandatory.
A login story often gains nothing from a circular so-that. A spell-checker story does.
Without the benefit, a team might ship a post-write batch job. With "so that I do not need to worry about spelling mistakes," they ship real-time correction.
Run three honesty tests on the slots:
Slot | Job | Failure |
|---|---|---|
Role | A person you could pick out of analytics or the support queue | "As a user." A designer cannot make one decision differently. |
Goal | What the person does, in their vocabulary | "Password-reset microservice" is architecture in costume. |
Benefit | The argument for scheduling the work | "So that I can log in." Delete it. If nothing is lost, you have not found the benefit. |
Scrum Alliance says there is no required structure. Capture who, what, and why. Roman Pichler says use the template when it helps.
GOV.UK (last updated 23 May 2016, still the credentialed public-sector how-to) puts the weight on the goal: if you cannot write it, reconsider why you think you need the feature.
Two variants are worth one paragraph. Chris Matts's benefit-first order (In order to <benefit> as a <role>, I can <goal>) helps when so-thats go circular. An Intercom-style job story helps when the triggering moment explains more than the persona.
A plain problem statement is honest for platform work where the only persona is the team.
People search "format" because they are writing developer stories (As a developer, I want a database…). Treat the format as a thinking prompt, then show how it goes wrong. The template SERP already owns the worksheet.
Jeffries published Card, Conversation, Confirmation on 30 August 2001. Use his mapping, not the version that collapses Confirmation into so-that.
Cohn on video: the card is a reminder or a promise to have the conversation. A pointer to the requirement.
Jeffries in 2019 would start Conversation, then Confirmation as executable examples, and maybe skip the Card. His complaint now: people write requirements documents on the Card.
People Also Ask treats the 3 C's as the definitional question. INVEST only ranks when you query it by name.
Tool | Question | Failure if you only have this |
|---|---|---|
3 C's (Jeffries, 2001) | How does a story work as a practice? | A well-run conversation about a bad slice: horizontal, no user, untestable. |
INVEST (Wake, 2003) | Is this card ready to schedule? | A quality-checked sentence that replaced the conversation. |
Start from a person and a job, not from a ticket type. Pichler's first tip (updated 9 May 2024): if you do not know who the users are and why they would use the product, do not write stories.
Tip 3: never hand stories off. Embed them in a conversation. If you cannot involve the people who will build the slice, use a more formal technique (use cases).
Work the same product change twice: a marketing analyst who needs last month's campaign numbers for finance.
Bad (task in Mad Libs):
As a user, I want to export a report as a CSV so that I can export a CSV.
That sentence will pass a template linter. It will not change a single design decision.
The role is nobody. The benefit restates the file type.
Also bad (architecture in costume):
As a developer, I want a CSV export microservice with S3 output so that the data platform is complete.
Allen Holub is not subtle about this class.
There is NO SUCH THING as a "technical *user* story." A user story is a story that your user tells to you. It describes your user's work, not yours. "Story" is not a code word for "some random programmer task." Tech is an implementation detail for a story, not itself a story.
Better:
As a marketing analyst, I want to download last month's campaign report with the same timezone and totals as the dashboard, so that finance can open the file in Excel without reconciling it by hand.
That card is still incomplete on purpose. It is a pointer. The conversation has to cover timezone, totals, Excel's row limit, and whether "download" is even the job (maybe they needed a scheduled email).
Those notes become acceptance criteria. They do not belong in the who / what / why sentence.
Write the story in the user's vocabulary, then stop. The format is optional scaffolding. The conversation is not.
Wake coined INVEST in August 2003 ("INVEST in Good Stories, and SMART Tasks"). Cohn popularized it in User Stories Applied (2004), chapter 2.
INVEST is a reminder of characteristics of a good product backlog item. Teams usually write that item as a user story. They do not have to.
Agile Alliance: fail one criterion, reword or physically tear up the card.
Letter | Wake's bar | Fail looks like | Pass looks like |
|---|---|---|---|
Independent | Not overlapping. Schedulable in any order. | "Export CSV" blocked on "build the data warehouse." | Export last month's dashboard numbers from what already exists. |
Negotiable | Not an explicit contract for features. Essence, not details. | Pixel bounds, error IDs, and the upload widget parked on the card. | "Share a candidate's prototype comments with the panel." Details wait. |
Valuable | Valuable to the customer. Vertical slice. | A full database layer with no UI. | Analyst can leave with a file finance will accept. |
Estimable | Enough to rank and schedule. Spike when you cannot. | "Export analytics" with no idea what "analytics" includes. | Team can say this is days, not weeks, or they spike the Excel limit. |
Small | At most a few person-weeks. Many teams: a few person-days. | A campaign-reporting epic wearing a story title. | One report, one date range, one file. |
Testable | You can describe examples and behaviors. | "Make export better." | Timezone matches the dashboard. Totals match. File opens in Excel. |
Wikipedia on Negotiable: a user story is an invitation to a conversation, not a contract.
Humanizing Work: by the time a story sits at the top of the backlog, 6 to 10 should fit a sprint. That is a ratio, not a point number.
Richard Lawrence's trade: Independent / Valuable is easiest when the story is big. Estimable / Small / Testable is easiest when it is small.
You trade INV for EST as an item climbs the backlog. Lawrence treats that trade as expected.
Mountain Goat's 2026 stop-rule for refinement: do you know enough to believe this item can probably be completed in a sprint? If yes, stop. If no, chase the biggest unknown.
Ready is confidence for a responsible commitment, not certainty.
Do not chase SMART cards. Wake already paired INVEST with SMART tasks. Mixing the two is how the card becomes a contract.
Agile Alliance: each child must still have measurable business value. Splitting is the practical answer to INVEST's Small.
The search demand is small. The failure is not.
Cohn collapsed more than a thousand stories into five cuts. Use them as a heuristic inside the split, not as a competing H1.
Cut | Move | First slice |
|---|---|---|
Spike | Time-boxed research or prototype. Not the feature. | Build vs buy for auto-captions. The spike's criteria are questions to answer. |
Paths | Alternate paths through the same goal. | "I can share a video" is 14 social buttons plus copy-link plus start-at-timestamp. Ship copy-link first. |
Interfaces | Browser, hardware, or surface. Progressive fidelity. | Chrome this iteration, Safari later. URL-only share before a logo picker. |
Data | Restrict the data the first slice supports. | Uploads: MP4 now, not 16 formats. Bank: no negative balances in v1. |
Rules | Relax a business rule in the first slice. | Don't enforce every rule from day one. |
Test: if slice one needs slice two to function, it is a horizontal split in disguise. If none of the five produce a shippable slice, you have a scope problem.
Humanizing Work's flowchart is the more complete method (practiced since at least 2005). First, get the input ready: INVEST except Small. "Unsplittable" stories are usually tasks or components masquerading as stories.
Second, apply a pattern: extract a simple path from a complex one, or break out a spike whose "done" is answers, not code. Third, evaluate. Prefer equally sized small stories (an 8 into four 2s beats an 8 into 5+3).
Done means the system is observably more valuable to a user.
Lawrence on video: the most common reason they cannot be split into good stories is that they are not an increment of value to begin with.
"Overwhelmingly the most common reason they can't be split into good stories is that they're not an increment of value to begin with… If you bring me a big piece of lettuce there's no way we're slicing that lettuce into a cheeseburger." (Richard Lawrence, Humanizing Work, 3:26)
First move on an "unsplittable" story is often to make it larger: reassemble bun, meat, and cheese. A good split also exposes waste.
Keep a clever search UI in every slice and you hide the low-value part. Split the fancy UI off and a PO can deprioritize it.
Cohn's splitting mistakes (updated 23 April 2026), the ones that are load-bearing here:
Whole-team activity. Two teammates plus the PO is enough.
Most stories are compound and can split. Cohn's edge case (11 July 2024): a complex story cannot. It is inherently large, with no subparts.
Don't fake a five-letter split. Use progress points ("where will you want to tell a teammate, check it out"). Default is still split.
Acceptance criteria are the Confirmation in the 3 C's. The story is why. The criteria are what success looks like.
The team decides how.
Scrum Alliance: they are pass/fail. Never partially met. Finalize them just before development, often in sprint planning.
Use 3 to 5 criteria. A longer list is a split signal (Pichler tip 7).
Cohn's working definition, via Wikipedia: notes about what the story must do in order for the product owner to accept it as complete. On video he asks POs for conditions of satisfaction, not "acceptance tests." Ask for tests and they send you to a tester.
Two formats. Default to a checklist of independent conditions. Reach for Given / When / Then when the precondition does real work.
Checklist, on the analyst export:
GOV.UK leads with "it's done when…" Register-to-vote: the user knows how to register online, can download a form to register by post, and knows where to send the form. Put out of scope on the card so two people are not sizing different work.
One Given / When / Then, when the precondition matters:
Given I am viewing last month's campaign report in Europe/Madrid
When I export the report
Then every timestamp in the file is Europe/Madrid
And the row totals match the dashboardAtlassian's acceptance-criteria page says criteria are "sometimes referred as 'Definition of Done.'" Scrum Alliance disagrees.
Scrum Alliance correction: Definition of Done is a standing list that applies to every product backlog item and does not change between items. Acceptance criteria are per-story. The Scrum Guide does not mention acceptance criteria.
Bad criteria, from the same Alliance article: telling developers how, or stacking so many criteria that the story itself needs a split.
AI makes the smear cheaper. StoriesOnBoard (a story-mapping vendor, May 2026): the agent writes perfect acceptance criteria, grammatically impeccable and disconnected from the actual product. A finished-looking card is not Confirmation.
Failure-mode pages do not rank on the naked keyword. The autopsy and 2026 cluster below are what those pages skip.
Product with Mustache (28 May 2026) walked a CSV export that passed every check it was supposed to pass.
Stakeholder: "Customers need to export their analytics report as a CSV." Team: "As a user, I can export a report as a CSV." QA signed off. Support then heard: missing timezone; totals did not match the dashboard; the file was too big for Excel; "I actually needed it emailed on a schedule, not a button."
Those failures are not engineering failures. The card never triggered the right conversation.
Ticket-stories ship outputs. Conversation-stories ship outcomes. Shared documents are not shared understanding.
Cohn calls the written-down version the grand myth: writing it down does not mean the user gets what they wanted. At best they get what was written down.
Claudio Lassala (16 May 2026): nobody says "let me tell you a requirement." Asking for "more detail" is asking for requirements so the team can wait.
A contractor executes a spec. A developer develops solutions. Jay Stansell (28 May 2026): teams took a format designed to start a conversation and turned it into something you could be graded on.
On r/agile in March 2026, u/thlandgraf named the training effect: ultra-detailed stories train the team to wait for specs instead of thinking. A separate pattern is silent refinement: full stories, criteria, Figma, slides, and nobody talks.
Cohn's second splitting mistake is the same as Humanizing Work's masquerading tasks. Holub: there is no such thing as a technical user story.
A user story is a story your user tells you. It describes your user's work. "Story" is not a code word for a programmer task.
The running joke on r/agile is As a developer, I want a green button. Profile-photo tickets that encode the upload widget and pixel bounds are tasks wearing a story costume.
Leading in Product (3 Feb 2026): Scrum Masters forcing a rewrite because the card did not start with "As a user." The template itself creates nothing. The Scrum Guide never mandates the format.
Dutch DeVries (2 Apr 2026): Connextra applied before problem-space work. The same "faster horse" sentence hides a traveler's speed problem and a farmer's acreage problem.
The format flattened both into the same shape. The word "user" smoothed over the difference.
Maarten Dalmijn has a name for shoehorning an already-decided feature into the template: a User Fairytale.
Pichler again: no users, no stories. UX research methods and usability testing are how you earn the right to write the card. A backlog is not a discovery method.
Kuhail and Lauesen (Software 2022, 1(3):223-243) gave eight IT practitioners a hotline-system analysis report covering 30 stakeholder issues. Practitioners could ask questions as they would a customer. Stories were then graded against IEEE 830-1998 (completeness, correctness, verifiability, traceability).
Average coverage was 33%. Best was 13 of 30. Worst was 5 of 30.
A problem-oriented reply hit 29 of 30.
Seven of eight followed Connextra. One of eight specified acceptance criteria.
Stories missed learnability and maintainability, often proposed incorrect or restrictive solutions, and most were hard to verify. The authors: relying on those cards would have been a disaster.
Stories-as-IEEE-830-specs fail. Stories were invented to avoid that grading. The 33% is not a reason to stop writing them.
Allan Kelly: stories are not promises, not functional specs, not contracts, not a record of what shipped. They are transient.
Simply writing a card, even adding it to a backlog, in no way commits anyone to doing anything. Start-ups tell him 30 to 50% of stories are never done. That last figure is Kelly's anecdote, not a study.
Stories sit next to three other planning tools. One paragraph each.
Requirements / PRD. A product requirements document is where you freeze decisions you are willing to treat as spec. A story is where you refuse to freeze them yet. Hierarchy, when you need one: theme → epic → story → acceptance criteria.
PAA already asks the difference. Send the rest of that question to the PRD, not to a second definition of "story." Mustache draws the same line: shared documents are not shared understanding.
Jobs to be done. MYLES calls the fight a false competition. Humanizing Work puts JTBD in problem space (a goal independent of any product) and stories in solution space: a change in this system.
JTBD without stories is strategy with no buildable increment. Stories without JTBD specify interactions that may not serve an underserved need.
Alan Klement (2013) and Intercom reached for job stories because personas do not explain causality. Filling the blanks is not discovering a job. See the JTBD framework and the worked examples.
Story mapping. Jeff Patton (User Story Mapping, O'Reilly 2014) is where stories come from when you need customer-visible sequence. The map is a workshop, not a Jira hierarchy.
Use cases. If you cannot involve the people who will build the thing, Pichler says use a more formal technique. A use case is that technique.
PMs and UX designers who share a backlog write the card with the people who will build the slice. The job is not a secretary role, and it is not a spec thrown over a fence.
Pichler: never hand stories off. Cohn: splitting is not the PO's solo job. Humanizing Work (Nov 2025): your backlog is a focus tool, not a museum.
If the only person who can write the card is the person who already decided the solution, you are filling a template.
The template linter is easier than talking to the person in the support queue. Name a role a designer could pick out of analytics. If deleting so-that changes nothing, you do not have a benefit yet.
The architecture is visible and the user job is not. Cohn flags splitting along technical boundaries as a standing mistake.
Split by path, data, or rule. If you cannot find a vertical slice, you may be holding lettuce.
Someone got burned by "requirements weren't clear" and parked the widget, the pixel bounds, and the error IDs on the card. Scrum Alliance calls this a bad-criteria pattern.
Put the outcome on the card and the how in the conversation. A longer list is a split signal.
Atlassian treats the two phrases as cousins. Keep DoD as the standing list (reviewed, tested, in prod, whatever your team actually means). Keep criteria per-story and pass/fail.
The model is good at Connextra and Gherkin. Mountain Goat (Dec 2025) named the PO superpower and the risk: cleaner stories, clearer criteria, and too much thinking handed to the model.
Use the model to draft, then run INVEST and the Mustache test. Would this card survive the first support ticket?

A complete guide to prototyping in UX design: definition, lo-fi vs hi-fi, step-by-step process, best tools, and common mistakes to avoid.