River
Y CombinatorBacked by Y Combinator

Free template

Product Requirements Document Template

A PRD with its requirement register, evidence map, open questions and decision log, so every requirement has a defined priority, a test and a reason.

Free download · No account needed

What you get

Pack of 8 files: 4 documents, 4 spreadsheets

Product Requirements Document Template
  • Requirement LanguageDocument
  • Writing Non-Goals That HoldDocument
  • Product Requirements DocumentDocument
  • User FlowDocument
  • Requirement RegisterSpreadsheet
  • Evidence MapSpreadsheet
  • Open QuestionsSpreadsheet
  • Decision LogSpreadsheet

How to write a product requirements document

A product requirements document (PRD) says what a product or feature must do and why, so the people building and testing it don't have to guess. A good one starts with the problem and the evidence for it, and says how success will be measured. Each requirement carries a defined priority and an acceptance criterion someone can check. It ends with what's out of scope and the questions still open, each with an owner.

Write it for the engineer who missed every meeting. They should be able to tell which requirements are firm, which are flexible, and why each one exists.

A printed product brief and a user goals sheet on a wooden desk, under a whiteboard pad with a hand-drawn app flow and a marker
Sketching the flow shows which steps still need a requirement. Photo: Kelly Sikkema on Unsplash

What goes in a product requirements document

Most PRDs share one skeleton. Keep each part short, and link to research and designs instead of pasting them in.

The parts of a PRD

PartWhat goes in itWatch for
ProblemWho has it, how often, and the evidenceA solution written as a problem
Success metricThe number that should move, with today's baselineA metric nobody tracks yet
RequirementsWhat the product must do, one per line, each with a priorityInstructions on how to build it
Acceptance criteriaThe observable result that shows a requirement is met"Works correctly"
Non-goalsWhat a reader might expect but won't get, and whyThings nobody asked for
User flowEach step a user takes, including errors and empty statesOnly the happy path
Open questionsEach unknown, with an owner, a date and what it blocksQuestions nobody owns
Decision logEach answer that changed the spec, who decided and whenDecisions left in chat

Start with the problem and how you'll measure it

Describe the problem before any requirement, in numbers: who hits it, how often, and what it costs. NASA's checklist for writing requirements says each one should state the problem, not the solution1. When one reads like a design, NASA suggests asking "Why do you need the requirement?", since the answer may point to the real one.

List the evidence one item per line, each with a source and a number: a ticket count, an analytics figure, an interview tally. If it's mostly interviews, turn the transcripts into counted findings first.

Rate each item: measurements and direct accounts from affected users are strong, small samples are moderate, and what competitors ship is only context. A requirement with no evidence is a preference; keep it if you believe in it, but label it as one.

Then decide how you'll know it worked. In a 2010 paper, three Google researchers lay out a process that moves from goals to signals to metrics2. Name the goal, find the behavior or attitude that would show it, and turn that into a number you can track.

Raw counts rise as a user base grows, the researchers note, so ratios or averages per user are often more useful. Record today's baseline before you build, so the release notes can quote the before and after once the feature ships.

Give every requirement a defined priority

Priority tells engineers how much room they have when a requirement proves expensive. Labels like P0, P1 and P2 have no standard definition, so teams read them differently. The keywords in RFC 21193, a 1997 memo on requirement levels for internet standards, have fixed meanings.

Requirement keywords and what they tell the team

KeywordWhat RFC 2119 saysWhat it tells the team
MUST"an absolute requirement of the specification"The release doesn't ship without it
MUST NOT"an absolute prohibition of the specification"The release never does this
SHOULDThere may be valid reasons to skip it, but "the full implications must be understood and carefully weighed"Skip it only with a stated reason
MAY"truly optional"Nobody is let down if it's cut

Put the keywords in capitals. RFC 81744, a 2017 update, says they carry these meanings only in all capitals; in lowercase they are ordinary English. That separates a requirement from a sentence that just says "should."

Use MUST sparingly. RFC 2119 itself says the keywords "must be used with care and sparingly," and a spec where every line is MUST leaves engineers nothing to trade when time runs short.

Write acceptance criteria someone can check

Each requirement needs an acceptance criterion: the observable result that shows it's met. NASA's checklist asks whether you can show a requirement is met by test, demonstration, inspection or analysis. It also lists terms that make a requirement unverifiable1, including easy, user-friendly, fast, adequate and quickly.

Replace each vague word with a number or a state someone can see. "Search is fast" becomes "results appear within 2 seconds for 95% of searches." If you can't write a check, leave the cell blank and flag it. A blank is honest; "works as expected" hides the gap.

If your team writes acceptance tests as scenarios, the Agile Alliance's Given-When-Then template5 gives the shape: some context, an action, then "a particular set of observable consequences."

ExampleA vague requirement, rewritten as twoAn illustrative example written for this guide, using the template's made-up feature.

Before: Guests should be able to view shared boards easily, and links must be secure.

After, R-01: A guest MUST be able to read a shared board without an account. Check: a private browser window opens a valid link and shows the board read-only, with no sign-up screen. Evidence: EV-01, 214 tickets in a year asking to share boards externally.

After, R-04: A share link MUST NOT be guessable. Check: tokens carry at least 128 bits of randomness, and links made in sequence show no pattern. Evidence: EV-05, two security reviews.

  • One thought per line. Access and security now have separate keywords and checks.
  • No vague words. "Easily" and "secure" became results a tester can see.
  • A reason attached. Each line names the evidence behind it.

Say what you won't build

Non-goals head off scope arguments, but only if they name things a reader would expect. Malte Ubl, a former engineering director at Google, defines non-goals in design docs as things that could reasonably be goals6 but are explicitly chosen not to be. A negated goal like "The system shouldn't crash" doesn't count. Look in four places:

  • The adjacent scope: the obvious next step, such as one link for several boards
  • The other audience: a role or platform this release doesn't serve
  • The unnamed quality: scale, speed, offline use, languages or accessibility
  • The deliberate shortcut: a manual step behind a feature that looks automated

Give each one a reason and the condition that would reopen it: "Guest editing is out of scope. Churned customers wanted to show work to clients, not let them change it. Revisit if commenting ships and requests turn to editing." Without a reason, a non-goal gets reargued in every review.

Keep promises out of this section. "Coming in Q3" is a commitment, and it belongs on the roadmap, where someone will track it.

Close the open questions before review

Write down every unknown with an owner, the date an answer is needed, and the requirements it blocks. NASA's checklist asks much the same of an unsettled value: use a best estimate, mark it "To Be Resolved," and record who will settle it and by when1.

A question that blocks a MUST means the spec isn't ready for review. Marty Cagan, founder of the Silicon Valley Product Group, wrote in 2006 that when hard questions go unresolved, the team is forced to tackle these issues7 during engineering. Then the spec churns, or engineers fill the gaps with assumptions.

When a question is answered, update every requirement it blocked and add a line to the decision log: what changed, who decided and when. Months later, that line explains why the requirement exists.

Before the review

  • The problem is stated in numbers, each with a source
  • Every requirement has one keyword in capitals and one check
  • No MUST rests only on what competitors ship
  • Requirements with no evidence are labeled as preferences
  • Each non-goal has a reason and a trigger to reopen it
  • No open question blocks a MUST
  • The success metric has today's baseline

For a quick first draft, the PRD generator writes one from a few lines about the feature. Once the requirements are agreed, the user story tool breaks them into stories with testable acceptance criteria.

How to use this template

Use the files as they are: start with Requirement Language, fill the Evidence Map before the Requirement Register, and write the PRD around both. A worked example, a made-up guest-access feature, runs through every file and shows how the four sheets refer to each other.

Or open it in River with Edit with AI. River asks what you have, such as support tickets, analytics, interview notes or a half-written doc, then fills the Evidence Map before writing a single requirement. It tells you plainly which requirements have no evidence, which can't be tested yet and which open questions block a MUST.

  1. Download it or open it in River

    Download four Word documents and four CSV sheets, or open them in River and work through them with AI.

  2. Send what you have

    Paste or attach whatever you have, even if it's partial. River turns each finding into an evidence row with a strength rating.

  3. Get the register and the PRD

    River writes each requirement with a keyword, an acceptance criterion and its evidence, lists open questions with owners, then drafts the PRD.

  4. Check it, then share it

    River proposes non-goals for you to approve and checks whether engineering can build from the spec. Edit it, ask for changes or share it.

What's in the template

The requirement register, the evidence behind it, and the open question holding up reviewRequirements and evidence cite each other by ID. R-07 cites no evidence, because nobody has asked for it.
Product Requirements Document Template
RiverRequirement Register

Requirement Register

Illustrative rows for a fictional collaboration tool, Halden, shipping guest access.

IDRequirementKeywordAcceptance criteriaEvidenceStatus
R-01A guest reads a shared board with no accountMUSTUnauthenticated session renders the board read-only. No signup screen appears at any point.EV-01, EV-02Specified
R-02A share link expiresMUSTA 30 day link returns the expired state on day 31 and does not render content.EV-05Specified
R-04A share link is not guessable or enumerableMUST NOTTokens carry 128+ bits of entropy from a CSPRNG. Sequential creation reveals no relationship.EV-05Blocked Q-03
R-05Admins are notified on a guest's first openSHOULDOne notification per link on first render. Subsequent opens do not notify.EV-05Specified
R-06A guest comments without an accountSHOULDComment appears attributed to a name supplied at comment time.EV-01Blocked Q-01
R-07A guest reacts to comments with emojiMAYA guest adds and removes a reaction.noneSpecified
R-08Guests do not consume a seatMUSTA workspace at its seat limit shares successfully. Invoice and seat count unchanged.EV-02, EV-03, EV-04Specified

SHOULD is the keyword that earns its keep: it tells an engineer they have real latitude, and obliges them to weigh the implications before taking it. R-07 is a MAY citing no evidence, which is how a preference stays honest instead of acquiring a plausible reason.

RiverEvidence Map

Evidence Map

What the team actually knows, rated honestly.

IDSourceWhat it showsStrengthJustifies
EV-01Support tag, full year214 tickets asking how to show a board to someone outside the workspaceStrongR-01, R-06
EV-02Churn interviews, n=229 named the inability to share with clients; 4 had already moved that work elsewhereStrongR-01, R-08
EV-03Membership analytics38% of paid workspaces contain an external-domain member, which is clients on paid seatsStrongR-08
EV-04Deal desk log3 lost deals name guest access in the loss reasonModerateR-08
EV-05Two enterprise security reviewsBoth require expiry, admin revocation and non-enumerable linksStrongR-02, R-03, R-04, R-05, R-09
EV-06Competitor teardownThree comparable tools ship guest access, two of them freeWeaknothing

EV-06 deliberately justifies no requirement. Market precedent is context, and a MUST resting on what competitors do is a MUST with no reason of its own.

RiverOpen Questions

Open Questions

Every unanswered question with an owner, a date, and what it blocks.

IDQuestionOwnerNeeded byBlocksStatus
Q-01Does an unauthenticated guest comment satisfy our SOC 2 commitments on attributable actions?Security lead6 Feba SHOULDOpen
Q-02What is the default expiry window for a share link?Product30 Jana MUSTAnswered
Q-03Do guests appear in the audit log as a distinct principal, or as the link's creator?Platform lead3 Febtwo MUSTsOpen
Q-04Can one link grant access to more than one board?Product20 FebnothingOpen
Q-05Does the first-open notification go to all admins or the link creator?Product13 Feba SHOULDAnswered

Q-03 is the one that matters: it blocks two MUSTs, so this spec is not ready for review no matter how complete the register looks. That is the sentence the pack exists to produce before the sprint starts rather than during it.

  • Product Requirements DocumentThe PRD itself: the problem and its evidence, what you're building, non-goals, open questions and how you'll measure it.
  • User FlowEach step for every user involved, including the error states most often skipped in build.
  • Requirement LanguageWhat MUST, SHOULD and MAY commit you to, why they replace P0, P1 and P2, and why they're capitalized.
  • Writing Non-Goals That HoldA short guide to non-goals that carry a reason and a trigger, and where to find them.
  • Requirement Register sheetOne row per requirement: keyword, rationale, acceptance criterion, evidence, blocking question, owner and status.
  • Evidence Map sheetEach piece of evidence with its source, what it shows, a strength rating and the requirements it justifies.
  • Open Questions sheetEach open question with an owner, a needed-by date, what it blocks, its severity and, once settled, the answer.
  • Decision Log sheetEach decision that changed the spec: who made it, what changed and which requirements moved.

Common questions

What should a product requirements document template include?

At minimum: the problem and its evidence, a success metric with a baseline, and numbered requirements. Each requirement needs a priority and an acceptance criterion. Add non-goals, a user flow, open questions with owners and a decision log. This template keeps requirements, evidence, questions and decisions in four sheets that cite each other by ID, so the PRD stays short.

How long should a PRD be?

Long enough that engineering can build from it without guessing, and no longer. For a single feature, that is often a few pages plus the requirement table. Keep research, designs and dashboards in their own documents and link to them. Cut any section nobody on the team reads.

Who writes a PRD?

Usually the product manager, with design and engineering leads shaping the requirements and QA confirming each acceptance criterion can be tested. Give the document one owner and each open question its own owner, and record sign-off in the decision log so everyone knows which version was agreed.

What's the difference between a PRD and a design doc?

A PRD says what the product must do and why; a design doc, written by engineers, says how they will build it and which trade-offs they chose. Write the PRD first; engineering then answers it in an RFC or design doc that refers back to its requirements.

Why MUST, SHOULD and MAY instead of P0, P1 and P2?

The keywords have published definitions, and numbered labels don't. In practice, MUST means the release waits for it, SHOULD means skipping it takes a stated reason, and MAY is optional. If your team prefers its own labels, keep them and write down what each means; the Requirement Language document is where that goes.

Is this PRD template free?

Yes. The four Word documents and four CSV sheets download free, with no account needed. They come filled with a made-up guest-access feature, so you can see how the sheets connect before you replace it. Edit with AI opens the same files in a free River workspace.

What does Edit with AI do?

It opens the template in a free River workspace and asks for what you have, such as research, support tickets, analytics or interview notes. River fills the Evidence Map, writes the register and open questions, drafts the PRD and proposes non-goals for you to approve. Then it tells you whether engineering can build from the spec as it stands.

Sources

  1. NASA. “Appendix C: How to Write a Good Requirement.” nasa.gov (opens in a new tab)

  2. Google Research. “Measuring the User Experience on a Large Scale: User-Centered Metrics for Web Applications.” research.google (opens in a new tab)

  3. RFC Editor. “RFC 2119: Key words for use in RFCs to Indicate Requirement Levels.” rfc-editor.org (opens in a new tab)

  4. RFC Editor. “RFC 8174: Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words.” rfc-editor.org (opens in a new tab)

  5. Agile Alliance. “What is Given – When – Then?” agilealliance.org (opens in a new tab)

  6. Malte Ubl. “Design Docs at Google.” industrialempathy.com (opens in a new tab)

  7. Silicon Valley Product Group. “Revisiting the Product Spec.” svpg.com (opens in a new tab)

Written by

Chandler Supple

Co-founder & CEO, River

Chandler has spent the last six years working in AI, building tools for millions of users and Fortune 100 companies. In 2025, he co-founded River to build a new kind of operating system for AI agents.

Reviewed by

Brian Joseff, Co-founder, River