11 min left 0%

writing prds that engineers read

A great PRD is an independent document which can set the context for anyone who reads it. Writing a PRD is not a boring documentation job — it is one of the most critical responsibilities a PM has.
Talvinder Singh, Pragmatic Leaders

An engineer opens your PRD. They read the first three paragraphs. They close the tab. They walk over to your desk and ask: “What am I supposed to build?”

You just wasted their time, your time, and the two weeks you spent writing that document.

This is the most common failure mode in product management — not bad strategy, not wrong prioritization, but a requirements document that nobody reads. The PRD that gets ignored does not fail because engineers are lazy. It fails because the PM wrote for themselves instead of for the person who has to turn words into software.

Why most PRDs fail

I have reviewed over 500 PRDs across cohorts at Pragmatic Leaders and in my own teams. The failure patterns are remarkably consistent.

The novel. Eight pages of background context before a single requirement appears. Business justification, market analysis, competitive landscape, stakeholder alignment notes — all important, none of it what the engineer needs at 10 AM on a Monday when they are trying to estimate a sprint.

The wishlist. A flat list of user stories with no hierarchy, no sequencing, and no indication of what matters most. “As a user, I want to…” repeated forty times. The engineer reads all forty, realizes they cannot build all of them in one sprint, and asks you which ones matter. You should have told them upfront.

The ghost. A PRD that was written three months ago and never updated. The designs have changed. The API contract shifted. Half the acceptance criteria reference a flow that was killed in a meeting nobody documented. The engineer discovers this mid-sprint and loses trust in your documents permanently.

The vague one. “The system should handle edge cases gracefully.” Which edge cases? Gracefully how? This sentence transfers the product decision from the PM to the engineer — who will make a decision, but probably not the one you wanted.

// scene:

Sprint planning. The team is reviewing a PRD for a payment flow.

Backend Engineer: “It says 'support multiple payment methods.' Which ones? UPI, cards, net banking, wallets? All of them?”

PM: “Let's start with all of them and see what's feasible.”

Backend Engineer: “UPI alone has four integration patterns depending on the provider. Net banking needs bank-specific callbacks. This isn't one story, it's twelve.”

PM: “Can you just estimate it as one feature for now?”

The engineer stopped reading the PRD after this meeting. For the rest of the sprint, they asked questions on Slack instead.

// tension:

When a PRD is vague, engineers stop trusting the document and start trusting conversations. Your PRD becomes shelf-ware.

The six-section PRD template

After years of iteration, I have settled on a template that works. It is not the only valid structure — there are no universal rules about PRD formats. But every section here exists because removing it causes problems.

The core idea: a PRD should be scannable in two minutes and deep enough to build from. Engineers should be able to read sections 1 through 3 in a standup and sections 4 through 6 when they sit down to code.

Section 1: Purpose (the “why”)

Two to three sentences. What problem are we solving? For whom? Why now?

This is not a business case. It is not a market analysis. It is the answer to the question an engineer asks when they see a new ticket: “Why are we building this?”

Example: Sellers on our marketplace currently wait 7-14 days for payouts. This causes cash flow problems for small sellers (under INR 5L monthly GMV), and 23% of churned sellers cited delayed payouts as the primary reason. We are building same-day payouts to reduce seller churn in this segment.

If you cannot write the purpose in three sentences, you do not understand the problem well enough to write the PRD.

Section 2: Route (the “what,” scoped)

Define the scope boundary. What is in. What is out. What assumptions you are making.

This section prevents scope creep during implementation. Engineers will read this section when they encounter an ambiguous situation and ask themselves: “Is this in scope or not?”

Example:

  • In scope: Same-day payout for UPI-linked bank accounts, for sellers with verified KYC, for orders marked delivered and not disputed.
  • Out of scope: International payouts, credit-based advances, payouts for disputed orders.
  • Assumptions: Payout partner API supports batch processing of at least 500 transactions per call. If not, we fall back to sequential processing with a 2-hour SLA instead of instant.

Notice the assumption is specific enough to be falsifiable. “We assume the API works” is useless. “We assume batch processing of 500 per call” gives the engineer a concrete thing to verify on day one.

Section 3: Scenarios (the “how,” behavior-first)

This is where most PRDs go wrong. They describe the system in paragraphs. Engineers do not think in paragraphs. They think in conditions and outcomes.

Use the Given-When-Then format borrowed from BDD (Behaviour Driven Development). Each scenario is one testable behavior of the system.

Scenario: Successful same-day payout

Given: Seller has verified KYC and a UPI-linked bank account And: Order is marked delivered with no open dispute When: Daily payout job runs at 6 PM IST Then: Payout is initiated to seller’s bank account And: Seller receives SMS and in-app notification with UTR number And: Payout status shows “Processing” in seller dashboard

Scenario: Payout blocked due to open dispute

Given: Seller has a delivered order with an open dispute When: Daily payout job runs Then: Order amount is held in escrow And: Seller sees “Payout held — dispute in progress” with link to dispute details

Scenario: Bank account validation failure

Given: Seller’s bank account fails penny-drop verification When: Payout is attempted Then: Payout fails with error “Bank account verification failed” And: Seller receives notification to update bank details And: Amount is queued for next payout cycle after re-verification

Write enough scenarios to cover the happy path, the two or three most common error states, and any edge case where the expected behavior is not obvious. You do not need to cover every possible state. You need to cover every state where the engineer might make the wrong assumption without guidance.

Section 4: Acceptance criteria

For each scenario, define what “done” looks like in measurable terms. This is the contract between PM and engineering — if these criteria are met, the feature ships.

CriteriaMeasurement
Payout initiated within 30 minutes of job triggerLogs show payout API call timestamp vs job start
Seller notification delivered within 5 minutes of payout initiationNotification service logs
Failed payouts retried automatically once after 1 hourRetry queue depth monitored in dashboard
Payout dashboard loads in under 2 seconds for sellers with up to 500 transactionsPerformance test on staging

Section 5: Design references

Link to Figma screens. Not embed — link. The PRD is a living document, and embedded images go stale. A link to the Figma file always shows the latest version.

If designs are not ready, say so explicitly: “Designs in progress — wireframes expected by [date]. Build against the scenario descriptions for now.”

Do not describe the UI in words when a wireframe exists. “The button should be blue and positioned in the top right corner” is worse than a Figma link in every possible way.

Section 6: Success metrics

How will you know this feature worked? Not “we will track metrics” — which specific metric, what is the current baseline, what is the target, and by when?

MetricBaselineTargetTimeframe
Seller churn rate (under 5L GMV segment)23% quarterly15% quarterly2 quarters post-launch
Average payout time8.3 days< 1 dayAt launch
Seller NPS (payout-related)32551 quarter post-launch

This section is for you, not for the engineer. But including it in the PRD does two things: it reminds the engineer what the feature is for (not just what it does), and it gives QA a north star for what “working correctly” means beyond the acceptance criteria.

The anti-patterns checklist

Before you share a PRD, run through this list. If you hit any of these, rewrite that section.

Weasel words. “The system should handle this appropriately.” Appropriately how? Every adjective without a definition is a product decision you have not made. Find them and replace them with specifics.

Orphan requirements. A requirement that is not connected to any scenario. If you wrote “Support dark mode” but no scenario describes when or how dark mode activates, the requirement is incomplete.

Copy-paste from stakeholder emails. Stakeholders describe what they want. You need to translate that into what the system does. “We need better reporting” is a stakeholder request. “Admin can export a CSV of all transactions filtered by date range, seller, and payout status” is a requirement.

Missing error states. If your PRD only describes the happy path, you have written half a PRD. For every “Then the system does X,” ask: “What if X fails?” If the answer is “it shouldn’t fail,” you have not thought hard enough.

No versioning. Add a changelog at the top of the PRD. Date, what changed, why. When an engineer pulls up the PRD three weeks into a sprint, they need to know if anything shifted since they last read it.

// thread: #product-payments — Two weeks into the sprint
Rahul (Backend) The PRD says 'notify seller on payout failure.' SMS? Push? Email? All three?
Priya (PM) Good catch — SMS and in-app push. Email only for payouts above 1L. Updating the PRD now.
Rahul (Backend) Also the retry logic — PRD says 'retry on failure' but doesn't say how many times or what interval.
Priya (PM) Once after 1 hour. If it fails again, mark as 'manual review' and alert the ops team. Will add the scenario.
Rahul (Backend) Thanks. Much easier when the doc is specific. Updated PRD v1.3 is in Notion

Notice what happened in that conversation. The PM did not get defensive. She updated the document. This is the lifecycle of a good PRD — it is not perfect at v1.0, but it gets more precise with every question. The key is that the questions refine the document, not replace it.

How to structure PRDs for large features

When a feature is large enough that the PRD would exceed five pages, break it into smaller PRDs — one per user story or capability, not one giant document.

Think of it like an API. Each PRD covers one bounded capability. A collection of PRDs covers a release. This has three benefits:

  1. Engineers can own individual PRDs. Instead of one person parsing a 15-page document, three engineers each own a 3-page document.
  2. Changes are isolated. Updating the payout retry logic does not require re-reading the seller onboarding flow.
  3. Reviews are faster. A 3-page PRD gets reviewed in a day. A 15-page PRD sits in someone’s “I’ll get to it” pile for a week.

The file structure is simple:

/feature-same-day-payouts/
  ├── prd-payout-initiation.md
  ├── prd-bank-verification.md
  ├── prd-retry-and-reconciliation.md
  ├── prd-seller-notifications.md
  └── overview.md  (links to all PRDs, shared context)

The overview document holds the shared context — the purpose, the success metrics, the architecture diagram. Each individual PRD holds the scenarios and acceptance criteria for its bounded piece.

The PRD is a conversation, not a contract

The biggest mistake PMs make with PRDs is treating them as final documents. They are not. A PRD is the starting point of a conversation between you and the engineer who has to build the thing.

The purpose of writing it down is not to avoid talking. It is to make the conversation productive. When an engineer reads a clear PRD, their questions are specific: “Should the retry happen synchronously or async?” Without a PRD, the questions are existential: “What are we building again?”

// exercise: · 15 min
Audit your last PRD

Pull up the last PRD you wrote or reviewed. Score it against these five criteria:

  1. Can an engineer who was not in the planning meetings understand what to build from this document alone? (Yes/No)
  2. Does every requirement have at least one scenario with Given-When-Then? (Count the ones that do not)
  3. Are all error states explicitly handled, or is the happy path the only path? (List the missing error states)
  4. Are the acceptance criteria measurable, or do they use words like “appropriate,” “seamless,” or “user-friendly”? (Flag each vague criterion)
  5. When was the document last updated? Does the current version match what engineering is building? (Check the date)

If you scored less than 4 out of 5, rewrite one section this week using the template above. Ship the improved version to your engineering lead and ask: “Is this clearer?”

// learn the judgment

You are PM at Zerodha working on the options trading team. Your engineering lead estimates a full PRD for the new options chain redesign will take you two weeks to write properly — user flows, error states, edge cases for partial fills, API failure modes, and expiry handling. The CTO wants to ship before F&O expiry month ends, which means engineering must start in three days. Your options: write a thin PRD now covering only the happy path and fill in edge cases as they come up in sprint, or push back on the timeline and deliver a complete spec.

The call: Do you ship a thin PRD and fill in edge cases reactively, or hold the timeline and write the complete spec? What is the real risk of each path in an options trading product?

// practice for score

You are PM at Zerodha working on the options trading team. Your engineering lead estimates a full PRD for the new options chain redesign will take you two weeks to write properly — user flows, error states, edge cases for partial fills, API failure modes, and expiry handling. The CTO wants to ship before F&O expiry month ends, which means engineering must start in three days. Your options: write a thin PRD now covering only the happy path and fill in edge cases as they come up in sprint, or push back on the timeline and deliver a complete spec.

The call: Do you ship a thin PRD and fill in edge cases reactively, or hold the timeline and write the complete spec? What is the real risk of each path in an options trading product?

0 chars (min 80)

PRDs in the age of AI

A question I get in every cohort now: “Can I use AI to write my PRD?”

You can use AI to draft sections. You can use AI to generate scenario templates from a problem statement. You can use AI to check for missing edge cases or vague language.

You cannot use AI to make product decisions. The decision about which payment methods to support, what the retry interval should be, which error state gets a notification versus a silent log entry — those are judgment calls that require understanding of your users, your system, and your business. AI does not have that context. You do.

Use AI to write faster. Do not use it to think less.

Test yourself

// interactive:
The Missing PRD

You are a PM at a fintech startup in Bangalore. Your engineering lead, Vikram, comes to you on Monday morning. 'I looked at the PRD for the UPI autopay feature. It says support recurring payments but doesn't specify what happens when a mandate expires. Or when the bank rejects a debit. Or when the user's UPI app is uninstalled. I can't start building until I know how to handle these.' You have a sprint starting Wednesday.

You have two days before the sprint starts. The PRD covers the happy path but is missing five to six error scenarios.

The one-line summary

A PRD that an engineer reads has three properties: it is specific enough to build from, short enough to finish in one sitting, and honest enough to say what it does not know. Everything else is decoration.

Where to go next

  • Break the PRD into work: User Stories — writing stories that engineers actually pick up
  • Plan the sprint around it: Sprint Planning — from PRD to sprint backlog without losing context
  • Get engineers on your side: Working with Engineering — the relationship that makes or breaks your PRD
  • Manage the people who read it: Stakeholder Management — the ROAD update format and saying no without making enemies
  • Enterprise-scale PRDs: Enterprise Product Management — when your PRD needs compliance sections and procurement sign-off
writing prds that engineers read 0%
11 min left