How to write a product requirements document (PRD).
To write a PRD, start with the problem and who has it, then state the goal and the metric that shows it moved. List each requirement as a testable line tiered P0, P1 or P2, say what is out of scope, and keep the evidence next to each requirement.
What is a product requirements document?
A product requirements document (PRD) is a structured document that defines a product's purpose, features, user needs and success criteria: the single source of truth that keeps product, design and engineering aligned through development. It captures what to build and why, while leaving how to the team.
Living, not locked
Modern PRDs are lightweight and updated as you learn, not 40-page specs signed off before any work starts. Teams building with agents favor 'just enough' context: a short spec every agent reads beats exhaustive detail.
Answers four questions
A good PRD makes four things unambiguous: what are we building, who is it for, why now and what does 'done' look like.
Distinct from a BRD or a spec
A BRD captures the company-level why. An engineering spec details the technical how. The PRD sits in the middle, defining the product and the user need.
A PRD template: the eight sections of a modern PRD.
Copy this PRD template as your starting structure. A consistent shape makes the document scannable and reviewable, and gives a coding agent something predictable to read. Adapt it to the work: not every project needs every section.
Overview
Product name, a one-line description and the target release. Scannable in five seconds.
Problem & goals
The problem, who has it, why now, and the measurable business objectives this work serves.
Target users
Two or three personas (role, behaviors, pain points and current tools) to keep the team focused on real humans.
Success metrics
The KPIs that define 'done'. If you can't measure it, you can't tell the team (or an AI) what success looks like.
User stories
'As a [user], I want to [action] so that [benefit].' Each one testable, with clear acceptance criteria.
Functional requirements
Features tiered P0 / P1 / P2 so scope is explicit and the most important work ships first.
Design & interaction
Key screens, flows and the visual system. For AI coding tools, describing the system in words beats attaching wireframes.
Out of scope & open questions
What you're deliberately not building, plus the decisions still to be made. Prevents scope creep and silent assumptions.
A short PRD to copy.
Here is a made-up example in the five sections Annsa uses for a spec: Problem, Evidence and direction, What to build, Files to touch and Done When. You, your agent or Ask writes it. Copy it and swap in your own work.
Late invoice reminders (example) Problem Owners send an invoice, then chase late payers by hand. Some forget, and the money arrives late. Evidence and direction Support requests keep asking how to chase a late payer. Start with one automatic reminder before building anything for accountants. What to build Send one reminder email three days after the due date if the invoice is still unpaid. The owner can turn reminders off for any invoice. Files to touch src/jobs/sendReminders.ts (new) src/invoices/invoice.ts src/email/templates/reminder.tsx Done When - An unpaid invoice three days past due gets exactly one reminder. - A paid invoice gets none. - Turning reminders off for one invoice stops them for that invoice only.
The PRD now has a second reader: your AI coding agent.
Coding agents such as Claude Code and Cursor do better work from structured requirements, and guess when they don't get them. That's pushed the PRD from a static doc toward a spec an agent can act on. The catch: a hand-written PRD goes stale the moment the codebase moves, and it doesn't know your file paths, conventions or tests. Here's how a traditional PRD compares to a codebase-aware spec.
| Annsa spec | Traditional PRD | AI PRD / doc writer | |
|---|---|---|---|
| Defines intent, scope & success criteria | |||
| Written as testable acceptance criteria | Partial | Partial | |
| Grounded in your codebase when Ask or your agent writes it | No | Partial | |
| Prioritized by customer & revenue impact | Partial | No | |
| Read by Claude Code, Cursor, Codex & Grok over MCP | No | Partial | |
| Keeps the customer evidence next to the spec | Partial | No | |
| Drafts a note to the customers who asked | No | No |
Defines intent, scope & success criteria
Written as testable acceptance criteria
Grounded in your codebase when Ask or your agent writes it
Prioritized by customer & revenue impact
Read by Claude Code, Cursor, Codex & Grok over MCP
Keeps the customer evidence next to the spec
Drafts a note to the customers who asked
Where the PRD fits Annsa's loop.
Annsa doesn't replace the thinking a PRD captures. It ranks what the PRD should be about, keeps the evidence next to the spec and shows you who to tell when it ships. You make the call at each step.
The PRD's inputs, ranked by evidence.
The problem statement starts from evidence
Your customers, your roadmap, your ideas and what your agents find land in one list, deduplicated and classified, so the 'problem & goals' section starts from evidence, not a hunch.
Priorities ranked by evidence, not volume
Annsa ranks broken things first, then what customers asked for, then ideas, and inside each by how many companies asked, then revenue, then urgency. It shows the evidence, so an enterprise blocker doesn't wait behind fifty free-tier wishes.
The PRD, written as a buildable spec.
Codebase-aware specs when you ask
Ask Annsa for a spec and it reads your connected GitHub repo (real file paths, conventions and tests), so your coding agent gets something it can act on, not pseudocode a human still has to translate. Or your agent writes it over MCP.
Ships where you build, then drafts the follow-up
Every agent reads the spec over MCP (Claude Code, Cursor, Codex and Grok), and when a request ships, Annsa drafts a note to the customers who asked. You review and send it.
A PRD that keeps up.
What shipped stays on the record
Static documents decay the moment the product moves. Annsa keeps what shipped and the principles you set, so the next spec starts from what the last one taught.
Ask your product anything
Instead of scrolling dashboards, ask in plain language, answered and cited from your own feedback, specs and ships, with Radar surfacing what's rising on its own.
What does a full PRD look like?
The short example above fits one job. A PRD for a bigger piece of work covers several jobs, so it carries more of the eight sections. Here's a made-up example, condensed, to show the level of detail in each.
Team seats for a booking app (example)
1. Overview. Let a business add up to 10 staff to one account, each with their own login and calendar. Target: before the spring busy season.
2. Problem and goals. Small studios share one login today. Staff see each other's private notes, and when someone leaves, the owner changes the password for everyone. "I have 4 instructors on one password and it's a mess every time someone quits." (Owner, a yoga studio, support email, 3 Oct). Goal: studios with staff stop sharing logins. Business goal: keep the accounts most likely to outgrow us.
3. Target users. The owner, who pays and sets things up. Staff, who only need their own calendar and clients. Not in this round: front-desk staff who book for everyone.
4. Success metrics. Within 60 days of launch, half of accounts with shared logins have added at least 1 seat. Support emails about passwords drop. Both are read from data we already collect.
5. User stories. As an owner, I can invite a staff member by email, so they get their own login. As a staff member, I see only my own calendar and clients, so private notes stay private. As an owner, I can remove a staff member, so their access ends the same day.
6. Functional requirements.
- P0: invite by email, a separate login per person, staff see only their own calendar.
- P1: the owner can remove a seat, the owner sees every calendar in one view, staff can update their own profile, the owner gets an email when an invite is accepted.
- P2: staff can swap bookings with each other.
7. Design and interaction. A "Team" page in settings, using the existing list and invite patterns. The calendar gains a staff filter for owners only.
8. Out of scope and open questions. Not this round: roles beyond owner and staff, per-seat billing changes, front-desk access. Open: does a removed staff member's client history stay with the business? (Owner decides by 20 Oct. If an agent reaches this, stop and ask.)
Then each requirement becomes a job, and each job gets a short spec with its own Done When lines. The P0 "staff see only their own calendar" becomes a spec ending in lines such as: given a staff member signed in, when they open the calendar, then they see only their own bookings. That's where the PRD hands over to the build.
Notice what the example leaves out: market sizing, a competitor grid, a 6-month timeline. They may matter to the business. They don't change what gets built or how it's checked, so they live elsewhere, with a link.
“I have 4 instructors on one password and it's a mess every time someone quits”
How do you fill in each section of a PRD?
The template above lists the eight sections. Here's what to write in each, the weak version people often write and the version that does the work.
If everything is P0, nothing is.
1. Overview
Name it by what becomes true, not by the project code. One line on what it is, one on when.
- Weak: "Seats v2."
- Strong: "Let a business add staff to one account, each with their own login."
2. Problem and goals
The problem in the customer's own words, who has it and why now. Then the goal it serves. A quote keeps you honest. If you don't have one, say so: that's useful to know before you build. See problem statement.
- Weak: "Users want team features."
- Strong: "Studios share one login, so staff see each other's private notes. 4 owners asked this month."
3. Target users
Who it's for, and who it's not for this round. Two or three roles beat long personas. What matters is what each role needs to do, which is where jobs to be done helps.
- Weak: "All users."
- Strong: "Owners who pay, and staff who only need their own calendar. Not front-desk staff yet."
4. Success metrics
How you'll know it worked after it ships, with a number and a timeframe. Pick metrics you can read from data you already have. A metric you can't measure is a hope.
- Weak: "Improve team adoption."
- Strong: "Half of accounts with shared logins add a seat within 60 days."
5. User stories
One story per thing someone can now do, each with the benefit. Keep them small enough that each could ship on its own. See user story.
- Weak: "As a user, I want teams."
- Strong: "As an owner, I can remove a staff member, so their access ends the same day."
6. Functional requirements
Each requirement is one testable behavior, tiered P0, P1 or P2. P0 is what must ship for this to count at all. If everything is P0, nothing is.
- Weak: "Seats should be secure."
- Strong: "P0: a staff member cannot open another staff member's client notes, by link or by search."
7. Design and interaction
Which screens change and which existing patterns to reuse. For a coding agent, words beat a mockup: "use the existing invite pattern from the sharing page" tells it where to look.
- Weak: "Clean, modern team page."
- Strong: "A Team page in settings using the existing list and invite patterns."
8. Out of scope and open questions
The near neighbors you won't build, and the decisions still open, each with who answers and by when. This section stops the document from growing every time someone reads it.
- Weak: "TBD."
- Strong: "Not this round: roles beyond owner and staff. Open: who keeps a removed person's client history? (Owner, by 20 Oct.)"
What's the difference between a PRD, a spec, a user story and acceptance criteria?
They nest. A PRD holds several user stories. Each story has acceptance criteria. When the work is handed to a builder, person or agent, each job gets a spec, and the spec ends with checkable lines.
| PRD | Spec | User story | Acceptance criteria | |
|---|---|---|---|---|
| Answers | What are we building, for whom and why? | What does this job change, and how do we know it's done? | What can this person now do, and why? | What must be true for this item to count as done? |
| Size | A feature or a release | One job | One capability | A few lines per story |
| Reader | The team and anyone deciding | The builder: a person or an agent | The team | The builder and whoever checks |
| Includes | Problem, goals, users, metrics, stories, requirements, scope | Problem, evidence, what to build, files to touch, Done When | Role, action, benefit | Conditions, often as given, when, then |
| Lives | As long as the feature is being built | Until the job ships | Until it's built | With the story or the spec |
| Example | Team seats for a booking app | Staff see only their own calendar | As an owner, I can remove a staff member | Given a removed staff member, when they sign in, then access is refused |
User stories have a history worth knowing. Kent Beck introduced them in 1997, on a project at Chrysler. The "As a role, I can do something, so that I get a benefit" format came from a team at Connextra in London in 2001. Ron Jeffries described a story as 3 things: the card, the conversation and the confirmation. The confirmation part is the acceptance criteria, and it's the part that matters most when an agent is the builder, because an agent can't have the conversation in the hallway.
Acceptance criteria written so an agent can check them are what Annsa calls Done When lines. For a lighter document than a PRD, for work that's already decided, use the feature description template.
How do PRDs change when agents build?
When Claude Code, Cursor, Codex or Grok build from your requirements, the PRD gains a reader that takes every word literally and fills every gap with a guess. That changes what's worth writing.

The PRD becomes the why, and specs become the what-now. A PRD that tries to be the build instructions for 10 jobs gets long, and an agent reading it for one job reads the other 9 too. Keep the PRD as the shared why: the problem, the users, the goals and the scope. Then split it into one spec per job, each short enough to read cold. See the spec.
Out of scope does more work. A person who's unsure asks. An agent often keeps going. Every near neighbor you name in "not this round" is a build an agent won't wander into.
Decisions need their reasons. "Max 10 seats, because no current account has more than 8 staff." Without the reason, an agent may reopen the decision, or quietly pick a different number when it meets an edge case.
Open questions need a stop sign. Mark each one: "if you reach this, stop and ask." An agent that knows what's unsettled will ask. One that doesn't will invent an answer and build on it.
Requirements must be checkable. "Secure" and "fast" can't be checked. A requirement an agent can test is one it can prove it met. That's the biggest single difference between a PRD written for people and one written for agents. See definition of done for AI agents.
Prototypes got cheap. In 2006 Marty Cagan argued that the only spec that does the job is a high-fidelity prototype, because it can be tested with users before engineering starts. Agents make that cheaper again: a rough one can take an afternoon. So it can make sense to build a throwaway version, show it to 3 customers and write the PRD from what you learned, not before it.
The rules move out. Coding standards, test commands and style belong in the repo's rules file, AGENTS.md, which several agents read. The PRD says "rules: AGENTS.md" and stays about the product.
For the agent-ready version of the template, with "do not touch" and "already decided" sections, see how to write a PRD for Claude Code.
How do you review a PRD?
Read it once as the customer, once as the person building it and once as an agent with no other context. Then run through this list.
- The title says what becomes true.
- Every requirement is testable, tiered P0, P1 or P2.
- Who keeps a removed person's client history? Owner, by 20 Oct.
- The title says what becomes true, in words a customer would use.
- The problem has the customer's own words and who said them, or says there's no quote yet.
- The evidence shows how many accounts asked, and which ones.
- The goal names a metric you can read from data you already have, with a timeframe.
- Every requirement is one testable behavior, tiered P0, P1 or P2, with fewer P0s than P1s.
- Each user story names a role, an action and a benefit, and could ship on its own.
- Out of scope names near neighbors, not far-off ideas.
- Each decision has its reason in a few words.
- Each open question has an owner and a date, and tells a builder to stop and ask.
- No adjectives stand in for requirements. Fast, simple and intuitive get replaced with something you can check.
- The rules file is linked, not copied.
- It's short enough that a new person, or a new agent session, can read it in 10 minutes.
If 2 reviewers read the same requirement differently, rewrite it. That disagreement is the most useful thing a review finds.
Who signs it off, and when is it frozen?
In a big company, a PRD collects sign-offs from engineering, design and the business before work starts. On a small team, the person who owns the product decision reads it, and the people building it say whether it's clear. Nobody freezes it. It's living: when a decision changes, the PRD changes, with a line on what changed and why.
You may also meet the MRD, a market requirements document. It describes the market and the customer need, and the PRD says what the product does about it. Most small teams fold the useful part, the customer's problem, into the PRD.
AI PRD generators write a plausible document in a minute. They can't know your customers or your code, so the problem, the evidence and the scope still have to come from you.
What are the most common PRD mistakes?
- Starting from the feature. "Build team seats" skips the problem. Start from what hurts, and the feature may turn out smaller.
- No evidence. A PRD without the customer's words is an opinion with headings. Keep the quote and the account next to the requirement.
- Everything is P0. Then the order doesn't survive the first deadline. Cap the P0s.
- Writing the how. Database tables and component names in a PRD lock in choices before anyone has looked at the code. Leave the how to the spec and the builder.
- An empty out-of-scope section. It's the section that stops scope creep. Leaving it blank invites it.
- Open questions with no owner. They stay open until someone builds an answer by accident.
- Untestable metrics. "Improve engagement" can't fail. Name the number and when you'll read it.
- Writing it once and never again. A PRD is living. When a decision changes, update it, and say what changed and why.
- One giant document for agents. Split it into a spec per job. An agent reading a 20-page PRD for a one-day job reads the wrong 19 pages.
- Hiding guesses. A guess written as a fact gets built. Mark it as an open question instead.
Where do you go from here?
For the one-line definition, see PRD. To write your own, start from the PRD template, which has the problem, evidence, scope, Done When lines and open questions ready to fill in. For work that's already decided, the feature description template is a single page. And if a coding agent will build it, read how to write a PRD for Claude Code for the parts an agent needs that a person doesn't.

Sources
- Product requirements document, Wikipedia.
- User story, Wikipedia (Kent Beck, 1997; Connextra, 2001; Ron Jeffries' three Cs).
- Marty Cagan, Revisiting the product spec, SVPG, 12 October 2006.
PRD questions, answered.
What does PRD mean?
PRD stands for product requirements document: the document that says what a product or feature should do, who it is for and how you will know it works, before anyone builds it. In code and deploy settings, "prd" is sometimes short for production, the live environment, so check the context.
What is a product requirements document (PRD)?
A PRD is a structured document that defines a product's purpose, features, user needs and success criteria. It's the single source of truth that aligns the team building it, capturing what to build and why while leaving the technical how to engineering.
What's the difference between a PRD, a BRD and a spec?
A BRD captures business requirements: the company-level why. A PRD defines the product: the what and for whom. An engineering spec details the technical how. The PRD sits in the middle and is usually the working document for a feature or release.
What should a PRD include?
A modern PRD typically covers eight things: an overview, the problem and goals, target users, success metrics, user stories, functional requirements (tiered by priority), design and interaction, and what's explicitly out of scope.
What are product requirements?
Product requirements are the individual statements of what the product must do, for whom, and how you will know it works. They are the contents; the PRD is the container. A requirement names one behavior, the user it serves and the condition that proves it: "a team admin can revoke a seat, and the seat frees within one billing cycle". Anything that cannot be tested is a preference rather than a requirement, and it is the first thing to argue about in review.
How to write product requirements
Write each one as a testable statement rather than a description. Name the user, the behavior and the condition that proves it, keep one requirement to one sentence, and tier it P0, P1 or P2 so the order survives a deadline. Avoid adjectives: fast, intuitive and simple cannot be verified, while "loads in under 400ms" can. The evidence behind the requirement belongs next to it, so the reader can see which customer asked and why it ranks where it does.
How to write a product requirements document
Work outward from the problem rather than inward from the feature. Open with the problem and who has it, state the goal and the metric that will show it moved, then list the requirements tiered by priority, then name what is explicitly out of scope. The out-of-scope section does more work than any other: it is what stops the document growing every time someone reads it. Write it to be cut from, not added to, and keep the evidence for each requirement attached so the reasoning survives the handoff.
How do you write a PRD for AI coding tools like Cursor and Claude Code?
Make every requirement explicit and testable, tier features P0/P1/P2, and describe the design system in words. AI agents follow structured specs and guess at vague ones. Better still, write it with the codebase open so it carries real file paths and conventions. With Annsa, your agent writes it over MCP, or Ask writes it from your connected repo when you ask.
What is spec-driven development?
Spec-driven development means defining requirements, constraints and acceptance criteria up front, then using AI to generate code against that shared spec, aligning first instead of prompting and fixing later. With Annsa, you, your agent or Ask writes the spec from a ranked priority, and Claude Code, Cursor, Codex and Grok read it over MCP.
Does Annsa replace the PRD?
Annsa replaces the stale, hand-maintained parts. You still decide intent and scope; Annsa ranks it by customer and revenue impact, you, your agent or Ask writes the spec against your codebase, Claude Code, Cursor, Codex and Grok build from it, and Share Back drafts a note to the customers who asked when it lands.
What is an example of a product requirements document?
A PRD for team seats in a booking app would give the problem in an owner's words, the goal of studios no longer sharing logins, the owner and staff as users, a metric such as half of shared-login accounts adding a seat within 60 days, user stories, P0 to P2 requirements, the screens that change and what's out of scope. Each requirement then becomes a job with its own spec.
What is the difference between a PRD and a user story?
A PRD covers a whole feature or release: the problem, users, goals, requirements and scope. A user story is one thing a person can now do, written as a role, an action and a benefit. A PRD usually holds several user stories, each with its own acceptance criteria.
How long should a PRD be?
Short enough that a new person, or a new agent session, can read it in about 10 minutes. Keep market sizing and long background out and link to them. If it grows past that, split the build into one spec per job and keep the PRD as the shared why.
Who writes the PRD?
Usually the person who owns the product decision, often a founder or product manager, with input from whoever builds and from customer evidence. With coding agents, the PRD stays with a person, and each job's spec can be written by you, your agent or a tool you ask.
What should you check when reviewing a PRD?
That the problem has the customer's words, every requirement is one testable behavior tiered by priority, out of scope names near neighbors and each open question has an owner and a date. If two reviewers read a requirement differently, rewrite it.
More on PRDs and specs15 pages
- PRD
- Product requirements
- User story
- PRD template
- Problem statement
- Jobs to be done
- Feature description template
- How to write a PRD for Claude Code
- What good product specs look like now
- Codebase-aware specs
- The spec
- Customer feedback into build-ready specs
- Jobs to be done from customer interviews
- Share a product spec with a link
- Turn customer feedback into a build-ready spec
Write it once. Every agent reads it.
Begin with one agent and the work that matters next.
