glossary · general

User story in product management

A short, user-centered description of a feature need written in the format "As a [user], I want [action] so that [outcome]," with acceptance criteria defining done.

Updated Jun 2026 Calibrated to the strong-hire bar

A user story is not a feature request in disguise. It is a commitment to write the problem from the user’s perspective before anyone names a solution. The format, originated in Extreme Programming and popularized by Mike Cohn at Mountain Goat Software, reads: “As a [type of user], I want [an action] so that [a benefit].” Every clause does specific work. The “so that” clause is the PM’s viability test, and it is the one most candidates fail in an interview: “so that I can use the feature” is content-free. The clause must name a real outcome, something a user would pay to have resolved or return for: reduced error rate, faster task completion, a decision made with confidence.

The format and what each part does

As a [type of user]: names the actor, not a generic “user.” The more specific the role, the more the story constrains scope. “As a first-time buyer checking out on mobile” is more useful than “As a user” because it surfaces different edge cases and acceptance criteria.

I want [an action]: describes a need, not an implementation. “I want to filter search results by price range” is a need. “I want a dropdown menu” is a solution. Writing solutions into stories removes engineering’s design freedom and bakes in decisions that belong in the design phase.

So that [a benefit]: names the outcome in the user’s or business’s terms. In 2026, with engineering feasibility effectively cheap for most feature ideas, this clause carries more weight than it used to. If you cannot write a “so that” that describes something a user would pay for or return for, the story may not be solving a real problem. Strong candidates name what changes in the user’s world; weak candidates restate the feature again in different words.

A concrete example from a job-search context: “As a job seeker browsing listings on a mobile device, I want to save a listing with one tap so that I can return to it later without losing my place during a commute.”

The “so that” here names a real behavior: returning to saved items. It connects to session retention and repeat engagement. Compare it to: “As a user, I want to save job listings so that I can access them.” The second version fails the viability test because “access them” is not an outcome.

Acceptance criteria: where PM judgment actually shows

Acceptance criteria (AC) are the definition of done. Engineers use them to know when to stop building; QA uses them to know what to test. This is the section most interviewers use to separate senior from junior candidates. Generic or untestable AC signals surface-level thinking; precise, testable AC signals execution fluency.

Two main formats:

Given-When-Then (BDD/Gherkin): best for behavioral flows, authentication, checkout, or any interaction that depends on prior state. Structure: Given [precondition], When [user action], Then [expected outcome]. One scenario per criterion.

For the job-search example above:

  • Given a job seeker is logged in and viewing a listing, When they tap the save icon, Then the listing appears in their saved jobs list within two seconds and the icon state updates to reflect the save.
  • Given the job seeker is not logged in, When they tap the save icon, Then they see an in-context prompt to create a free account before the save is applied.

Checklist/rule-oriented: best for UI constraints, non-behavioral requirements, and performance bounds.

  • The save icon is visible on all listing cards in search results, not only on the full listing detail view.
  • Icon state persists across app sessions.
  • Tapping a saved listing’s icon a second time removes it from saved jobs with a confirmation snackbar.
  • The save action completes in under 300ms on a 3G connection.

Write both where the story warrants it. A story with only behavioral scenarios and no constraints leaves performance and accessibility expectations to engineering’s discretion. A story with only a checklist and no scenarios usually means the PM has not thought through the state-dependent flow.

For AI features, add a failure-state criterion. If the action involves a model, include a scenario covering what happens when confidence is low, latency exceeds threshold, or the model refuses. Covering only the happy path in AI feature AC is the most common error interviewers see in 2026.

INVEST: the self-review checklist

Bill Wake introduced INVEST in 2003 as a quality check for any story before it enters a sprint.

  • Independent: the story can be built and shipped without another story being complete first. In practice, “Independent” is the criterion most commonly violated. Strong PMs acknowledge the dependency explicitly and name the management plan; weak PMs pretend the dependency does not exist.
  • Negotiable: the story describes a need, not a specified solution. Engineering retains design freedom. If the story reads like a wireframe spec, it is not negotiable.
  • Valuable: the story delivers something a user or the business cares about on its own, not only in combination with several other incomplete stories.
  • Estimable: the team can make a reasonable size estimate. If they cannot, the story is missing context or is too large to be a single story.
  • Small: completable within one sprint, typically one to two weeks. Anything larger is an epic and needs splitting before it enters a sprint.
  • Testable: AC can be evaluated as pass/fail. “The experience should feel smooth” is not testable. “The transition completes in under 150ms on a mid-tier Android device” is.

Story splitting: when the story is actually an epic

The most common error is labeling an epic as a story. When a story spans more than one sprint, split it along the value thread, not the technical stack. Splitting into “frontend story” and “backend story” produces two items that are worthless independently and violates the Valuable criterion immediately.

Patterns that preserve value in each slice:

  • By user type: if the story works differently for two distinct user roles, split by role and ship the higher-priority role first.
  • By data state: empty state, partial data, and full data often represent three shippable stories.
  • By happy path then edge cases: ship the core flow first; add error handling and edge conditions as separate, sequenced stories.
  • By business rule: basic behavior first, then tiered or conditional logic as a follow-on.

Each resulting story should pass the INVEST check on its own.

Writing stories for AI and agentic features

The standard format stretches when the “user” is a model, a scheduled automation, or a background agent. Many teams in 2026 have adapted to: “As a [role/system], I want [capability] so that [outcome for end user or business].” The actor is named accurately; the “so that” still anchors to a human outcome.

Example: “As the nightly portfolio rebalancing agent, I want to identify positions that have drifted more than 5% from target allocation so that the user sees an actionable rebalance summary in their morning digest.”

Two requirements follow from this. First, the “so that” clause must still name a human outcome even when the actor is a system; the story exists to serve a person. Second, the AC must cover the failure state of the model or automation. What happens when the agent cannot connect to pricing data? What happens when a suggested rebalance exceeds the user’s stated risk tolerance? These are not edge cases to defer. They are the AC that distinguish a senior PM’s story from a junior one.

AI-assisted drafting tools can generate the story shell quickly, but the “so that” clause and the failure-state AC require human review every time. Standard prompting does not surface model hallucination, latency outliers, or refusal edge cases by default.

Job story as an alternative

When the persona assumption in “As a [user]” feels like guesswork because discovery is still underway, the job story format (Alan Klement, JTBD framing) removes it: “When [situation], I want to [motivation], so I can [expected outcome].”

Example: “When I receive a calendar invite for a meeting I did not request, I want to see who else is attending, so I can decide whether to accept without sending a separate message.”

Job stories are more useful during discovery, before you have validated who the user is. Once you have persona clarity and are moving work into a sprint, the standard format handles execution better because it connects directly to who engineers and QA are building for. For the full framing, see Jobs to Be Done.

What clears the bar in the interview

The prompt usually arrives as: “Walk me through how you’d write a user story for X.”

weak

"As a user, I want to log in so that I can access my account." This fails on every dimension that matters in an interview: the 'so that' clause is circular (accessing the account is not an outcome, it is the mechanism), the actor is generic, there are no acceptance criteria, and the story is written at the solution level rather than the need level. The candidate has demonstrated template recall, not product thinking. At most companies, AC quality is the primary signal interviewers use to separate candidates who understand execution from those who know vocabulary.

strong

"I start with the 'so that' clause and work backwards. For a fee transparency feature on a trading app: 'As a first-time investor, I want to see a plain-language fee explanation before I confirm a trade so that I can decide whether the cost is worth it without leaving the app.' The 'so that' names a decision-making outcome tied to trust and retention. For AC I'd write two Given-When-Then scenarios, one covering the fee modal opening and one covering the close interaction, plus a checklist criterion for load time and contrast. I'm deliberately naming the need and not the implementation so engineering keeps design freedom. On INVEST: this story is not fully Independent because it depends on the fee data API. I'd flag that before sprint planning and sequence accordingly. If this were an agentic feature, I'd adapt the 'As a' to name the system actor accurately and add an AC covering the failure state: what happens when the agent cannot retrieve pricing data before the user reaches confirmation."

The seniority signal: the strong candidate names the anti-pattern they are deliberately avoiding, calls out the INVEST violation before the interviewer does, and writes AC that an engineer and a QA engineer could act on independently. For AI features, they add a failure-state criterion without being prompted. That combination is what separates a PM who knows the vocabulary from one who understands how execution actually works.

For the full acceptance criteria treatment, see acceptance criteria. For how stories flow into sprint planning, see sprint and backlog.