Free Template · 2025

Product Requirements Document Template

A complete PRD template for product teams and founders — covering background, goals, user personas, user stories with acceptance criteria, functional requirements, non-functional requirements, technical specifications, and release criteria.

▸ How to use this template

Every section includes a real worked example using a fictional product called ProposalAI. Copy each section into your own document, replace the example content with your product details, and share with your engineering and design team before development begins. A completed PRD reduces development time and prevents costly rework.

10

PRD Sections

60+

Requirement Fields

15+

User Stories

Free

No signup needed

Before You Start

6 PRD Best Practices

Before filling in the template, understand what makes a PRD useful versus one that collects dust.

✍️

Write it before you build

A PRD written after development has started is documentation, not planning. Write it before engineering begins to prevent misalignment.

📏

Be specific, not comprehensive

A clear, specific 5-page PRD is better than a vague 20-page one. Every sentence should eliminate ambiguity, not add wordiness.

👥

Review with engineering before starting

Engineers should be able to build from your PRD without additional clarification. If they have questions, update the PRD.

🔄

Treat it as a living document

PRDs change as you learn. Version every update and communicate changes to the team. Never let the codebase diverge silently from the PRD.

Define what is out of scope

The most important line in a PRD is often what you are NOT building. Explicit out-of-scope prevents scope creep during development.

📊

Tie every feature to a metric

If a feature does not move a defined metric, question whether it should be built. Features without metrics become dead weight.

📄
01
Section

Document Header & Overview

Every PRD starts with metadata that tells anyone who reads it exactly what they are looking at, when it was written, who owns it, and what stage it is at.

Document Metadata

Product / Feature Name
e.g. ProposalAI — Freelance Proposal Generator
Document Version
e.g. v1.2 — Updated 15 October 2025
Status
e.g. Draft / In Review / Approved / Deprecated
Author
e.g. Sarah Chen, Product Lead
Reviewers
e.g. Jamie (Engineering Lead), Alex (Design), Marcus (CTO)
Last Updated
e.g. 18 October 2025
Target Release
e.g. Q4 2025 — 28 November 2025

Executive Summary

Hint: 2–4 sentences. Summarise what the product is, who it is for, and what this PRD covers. Write this last — after all other sections are complete.

e.g. ProposalAI is a web application that enables freelance designers to generate professional client proposals in under 10 minutes using AI. The product addresses the 3–5 hours per week that freelancers currently spend manually creating proposals in Google Docs or generic tools. This PRD covers the MVP feature set targeting solo freelance designers, defining requirements for the proposal generation engine, client viewer, and Stripe payment integration.
EXAMPLE
🎯
02
Section

Background & Problem Statement

The background section provides context for why this product or feature is being built. It aligns everyone on the problem before discussing solutions.

Problem Statement

Hint: Describe the problem concisely. Include who experiences it, how frequently, and what the measurable impact is.

e.g. Freelance designers spend 3–5 hours per week creating client proposals manually. This process involves copying from old proposals, reformatting in Google Docs, manually calculating pricing, and writing custom descriptions for each project type. The result is inconsistent quality, lost time that could be spent on paid work, and slow turnaround that loses deals to faster competitors.
EXAMPLE

Background & Context

Hint: Cite research, data, or interviews that validate the problem. Numbers make this section credible.

e.g. User research conducted August 2025 with 24 freelance designers revealed:
• Average time spent on proposals: 3.2 hours/week
• 68% lose deals because proposals take too long to send
• 71% have sent proposals with pricing errors
• Existing tools (Bonsai, HoneyBook) are generic and not designer-specific
• 82% would pay for a tool that reduced this time to under 30 minutes
EXAMPLE

Current Solutions & Gaps

Hint: Map the competitive landscape. Be specific about where existing solutions fall short.

e.g. Current market solutions and their limitations:
• Google Docs — Free but entirely manual, no automation, inconsistent formatting
• Bonsai ($19/mo) — Generic service templates, not designer-specific, no AI
• HoneyBook ($16/mo) — Built for coaches and consultants, poor UX for designers
• PandaDoc ($49/mo) — Enterprise-focused, too expensive and complex for solo freelancers

The gap: no tool combines AI generation + designer-specific templates + embedded Stripe payments at an accessible price point.
EXAMPLE

Opportunity Statement

Hint: The opportunity is the flip side of the problem. Frame it as the market gap you are addressing.

e.g. An AI-powered proposal tool built specifically for freelance designers — with design project templates, automatic pricing calculation, and embedded Stripe payment links — could reduce proposal creation from 3 hours to under 10 minutes and capture a meaningful share of the 2M+ freelance designer market in English-speaking countries.
EXAMPLE
📊
03
Section

Goals & Success Metrics

Define what success looks like before development begins. Goals align the team. Metrics make success measurable and unambiguous.

Business Goals

Hint: Business goals should be specific, time-bound, and measurable. Avoid vague goals like 'grow the user base'.

e.g.
• Reach $10,000 MRR within 6 months of launch
• Acquire 500 registered users within 90 days
• Achieve trial-to-paid conversion rate above 25%
• Maintain monthly churn below 5%
• Generate 50 qualified inbound leads per month via organic search
EXAMPLE

Product Goals

Hint: Product goals focus on user behaviour and experience, not revenue. What does good product health look like?

e.g.
• 80% of users complete a proposal within 10 minutes of first login
• Achieve NPS score above 50 within 60 days of launch
• Reduce support tickets related to proposal generation to under 5% of active users
• 70% of users who send a proposal return to send a second within 30 days
EXAMPLE

North Star Metric

Hint: One metric that best represents value delivered to users. Everything in the product should serve this metric.

e.g. Proposals sent per week — because every sent proposal represents a user who has experienced the core value of the product. All product decisions should increase this number.
EXAMPLE

Key Performance Indicators (KPIs)

Metric
Definition
Target
Measurement
Activation Rate
% of signups who send 1+ proposal within 7 days
> 40%
Posthog funnel
Trial-to-Paid
% of trial users who convert to paid plan
> 25%
Stripe + Posthog
D30 Retention
% of users active 30 days after signup
> 50%
Posthog cohorts
MRR Growth
Month-over-month MRR increase
> 20%/mo
Stripe dashboard
NPS Score
Net Promoter Score from in-app survey
> 50
Typeform survey
Time to First Proposal
Median time from signup to first sent proposal
< 10 min
Posthog events

Out of Scope for This Release

Hint: Being explicit about what you are NOT measuring prevents confusion during reviews.

e.g. The following will NOT be measured or targeted in this release:
• Mobile app metrics (iOS/Android not in MVP)
• Enterprise team metrics (multi-seat plans not in MVP)
• API usage metrics (developer API not in MVP)
• Marketplace metrics (template marketplace deferred to v2)
EXAMPLE
👥
04
Section

Target Users & Personas

Define exactly who this product is built for. Every requirement, user story, and design decision should be evaluated against these personas.

Primary Persona

👤

Alex — Freelance UX Designer

Demographics

Age:28–38
Experience:3–8 years, solo practitioner
Income:$60k–$120k/year from freelance work
Tools:Figma, Notion, Linear, Google Workspace
Tech Comfort:High — comfortable with new SaaS tools

Goals

Win more clients and grow revenue
Reduce admin and spend more time on design
Present a professional brand to clients
Get paid faster with less friction

Pain Points

Proposals take 3+ hours and feel repetitive
Loses deals when proposals arrive days late
Makes pricing errors when copying from old proposals
Generic tools do not understand design project types

Secondary Persona

Hint: Only define a secondary persona if they meaningfully influence MVP scope. Otherwise, note them and defer.

e.g. Jordan — Design Studio Owner

Age: 32–45, runs a studio of 2–5 designers. Needs to standardise the proposal process across their team. Currently, each designer sends proposals in different formats with inconsistent pricing.

Goals: consistency across team, faster proposal turnaround, professional brand presentation.
Pains: no way to enforce a standard format, difficult to track proposal status across team members.

Note: Secondary persona needs are deferred to v2 (team/multi-seat features). MVP is built exclusively for the primary persona.
EXAMPLE

User Journey (Primary Persona)

1

Discovers ProposalAI

Via Product Hunt, Dribbble, or search. Lands on marketing site.

2

Signs Up

Email signup or Google OAuth. No credit card required for trial.

3

Onboarding

Sets up profile — name, brand colours, logo. Selects primary project types.

4

Creates First Brief

Fills in project brief form — client name, project type, scope, timeline, budget.

5

AI Generates Proposal

Claude generates proposal content. User reviews and edits inline.

6

Sends to Client

Shares unique proposal link. Client views in browser.

7

Client Accepts

Client accepts proposal. Stripe payment link allows immediate deposit payment.

8

Returns for Next Project

User creates second proposal. Habit formed. Converts to paid plan.

📝
05
Section

User Stories

User stories capture requirements from the user's perspective. Each story follows the format: As a [user], I want to [action], so that [benefit]. Each has clear acceptance criteria.

Authentication & Onboarding

US-001Must Have

"As a new user, I want to sign up with my email address, so that I can access the product without needing a social login."

Acceptance Criteria

User can register with email + password
Email verification is sent and required before access
Password must be minimum 8 characters
User sees clear error if email already registered
US-002Must Have

"As a new user, I want to complete a profile setup step after signup, so that my proposals include my branding from the first one I create."

Acceptance Criteria

Onboarding wizard appears immediately after email verification
User can upload logo (PNG/SVG, max 2MB)
User can set primary and secondary brand colour (hex picker)
User can set display name and job title
Can be skipped and completed later from settings
US-003Should Have

"As a returning user, I want to log in with Google OAuth, so that I do not need to remember a separate password."

Acceptance Criteria

Google OAuth button visible on login screen
Existing email accounts can link a Google account
New users can register entirely via Google OAuth

Proposal Creation

US-004Must Have

"As a designer, I want to fill in a project brief form, so that AI can generate a relevant proposal without me writing it from scratch."

Acceptance Criteria

Brief form includes: client name, company, project type (dropdown), project description, deliverables (multi-select), timeline (date picker), budget range, and any special notes
All required fields validated before submission
Form auto-saves as draft every 30 seconds
User can save and return to a draft brief
US-005Must Have

"As a designer, I want AI to generate a proposal from my brief, so that I have a professional first draft in under 2 minutes."

Acceptance Criteria

Generation begins within 2 seconds of form submission
AI output streams in real time — user sees content appearing, not a loading spinner
Generated proposal includes: cover section, project overview, scope of work, timeline, investment (pricing), and terms section
Generation completes within 60 seconds for all brief types
If generation fails, user is shown a clear error and given option to retry
US-006Must Have

"As a designer, I want to edit the generated proposal inline, so that I can customise it before sending to the client."

Acceptance Criteria

All text sections are directly editable in the browser
Changes auto-save after 2 seconds of inactivity
User can add, remove, and reorder line items in the investment section
User can change the headline and cover text
Edit mode and preview mode togglable via button

Proposal Delivery

US-007Must Have

"As a designer, I want to share a unique proposal link with my client, so that they can view it without needing an account."

Acceptance Criteria

Each proposal has a unique, unguessable URL (UUID-based)
Link is copyable with one click
Option to send via email directly from the app
Proposal is publicly viewable at the link without authentication
Designer can set proposal to expired/inactive to revoke access
US-008Must Have

"As a client, I want to view the proposal in my browser without downloading a PDF, so that I can review and accept it on any device."

Acceptance Criteria

Proposal renders correctly on desktop, tablet, and mobile
No account required to view
Proposal displays designer's logo and brand colours
Accept button is prominently visible
Page loads in under 2 seconds on 4G mobile connection
US-009Must Have

"As a client, I want to accept the proposal and pay a deposit via Stripe, so that I can confirm the project immediately."

Acceptance Criteria

Accept button triggers Stripe checkout
Stripe checkout opens in a new tab or modal (not redirect away from proposal)
Deposit amount is pre-filled from proposal investment section
Payment confirmation is sent to both client and designer via email
Proposal status updates to 'Accepted' after successful payment

Dashboard & Management

US-010Must Have

"As a designer, I want to see all my proposals in a dashboard, so that I can track their status at a glance."

Acceptance Criteria

Dashboard lists all proposals with: name, client, status, date created, and value
Statuses: Draft, Sent, Viewed, Accepted, Declined, Expired
Click on a proposal row opens it for editing or viewing
Dashboard updates proposal status in real time when client actions occur
US-011Should Have

"As a designer, I want to duplicate an existing proposal, so that I can quickly create a similar one for a new client."

Acceptance Criteria

Duplicate option available in proposal actions menu
Duplicate creates a new proposal with all content copied
Duplicate status is set to Draft
Client name is cleared on the duplicate
⚙️
06
Section

Functional Requirements

Functional requirements define what the system must do. Unlike user stories, they are written from the system's perspective and are directly testable.

Authentication System

FR-001System must support email/password registration with bcrypt password hashing (minimum cost factor 12)Critical
FR-002System must send email verification on signup and block dashboard access until verifiedCritical
FR-003System must implement rate limiting on auth endpoints — max 5 failed login attempts per IP per 15 minutesCritical
FR-004System must invalidate all session tokens on password change or explicit logoutCritical
FR-005System must support Google OAuth 2.0 as an alternative authentication methodHigh
FR-006System must implement password reset via time-limited email token (valid for 1 hour)High

Proposal Generation Engine

FR-007System must generate a proposal from a submitted project brief within 60 secondsCritical
FR-008System must stream AI output to the frontend in real time using server-sent eventsCritical
FR-009System must generate proposals using Claude claude-sonnet-4-6 model via Anthropic APICritical
FR-010System must persist the generated proposal to the database immediately upon completionCritical
FR-011System must handle Anthropic API errors gracefully and surface a user-readable messageHigh
FR-012System must log all generation requests with prompt, model, token count, and latency for cost monitoringHigh

Billing & Subscriptions

FR-013System must integrate with Stripe Billing for subscription managementCritical
FR-014System must handle all Stripe webhook events: invoice.paid, invoice.payment_failed, customer.subscription.deletedCritical
FR-015System must enforce proposal creation limits based on plan tier (Free: 3 proposals lifetime, Pro: unlimited)Critical
FR-016System must downgrade user access to Free tier within 1 hour of subscription cancellation or payment failureCritical
FR-017System must generate and send a PDF invoice via email within 5 minutes of successful paymentHigh
FR-018System must allow users to access Stripe billing portal from their account settingsHigh

Proposal Delivery & Client View

FR-019System must generate a unique, UUID-based public URL for each proposalCritical
FR-020System must render the client-facing proposal view without requiring authenticationCritical
FR-021System must record a 'viewed' event when the proposal URL is first accessedCritical
FR-022System must notify the designer via email within 5 minutes of client viewing the proposalCritical
FR-023System must allow designers to deactivate a proposal link, rendering it inaccessibleHigh
🔧
07
Section

Non-Functional Requirements

Non-functional requirements define how the system performs — quality attributes like speed, security, reliability, and scalability that users experience but rarely articulate.

Performance Requirements

Requirement
Target
Measurement
Page load time (dashboard)
< 1.5 seconds
Lighthouse / Vercel Analytics
Time to Interactive (landing page)
< 2.0 seconds
Core Web Vitals
Proposal generation start (stream begins)
< 2 seconds after brief submission
Server timing headers
Proposal generation completion
< 60 seconds for any brief
Custom timing event in Posthog
Client proposal page load
< 2 seconds on 4G mobile
Lighthouse mobile
Database query response time (P99)
< 200ms
Supabase dashboard
API endpoint response time (P95)
< 500ms (excluding AI generation)
Vercel function logs

Security Requirements

Hint: Security requirements are non-negotiable. Every item here should be verified before launch.

NFR-SEC-001: All data in transit encrypted via TLS 1.2 or higher
NFR-SEC-002: All passwords hashed with bcrypt (cost factor ≥ 12) — never stored in plain text
NFR-SEC-003: All database queries use parameterised statements — no raw SQL string interpolation
NFR-SEC-004: Row-level security enabled on all Supabase tables — users can only access their own data
NFR-SEC-005: File uploads validated for type (allowlist), size (max 5MB), and scanned before storage
NFR-SEC-006: Admin panel accessible only to users with admin role — enforced at database and API level
NFR-SEC-007: API keys and secrets stored in environment variables — never committed to version control
NFR-SEC-008: Security headers configured: CSP, X-Frame-Options, X-Content-Type-Options, Referrer-Policy
EXAMPLE

Availability & Reliability

Hint: Define availability expectations explicitly. This sets the standard your infrastructure must meet.

NFR-REL-001: System must achieve 99.5% uptime measured monthly (max 3.6 hours downtime/month)
NFR-REL-002: Database must be backed up automatically every 24 hours with 30-day retention
NFR-REL-003: System must have error monitoring in place (Sentry) that alerts on error rate > 1%
NFR-REL-004: System must have uptime monitoring (Uptime Robot) that alerts within 2 minutes of downtime
NFR-REL-005: All Stripe webhooks must be processed with retry logic — minimum 3 retry attempts on failure
NFR-REL-006: System must degrade gracefully if Anthropic API is unavailable — queuing or informative error shown
EXAMPLE

Scalability Requirements

Hint: Scalability requirements ensure you do not need expensive rewrites as you grow.

NFR-SCALE-001: System must handle 500 concurrent users without performance degradation at MVP launch
NFR-SCALE-002: Database schema must be designed to support 100,000 proposals without structural changes
NFR-SCALE-003: AI generation must support 50 concurrent requests without timeouts (managed via queue if needed)
NFR-SCALE-004: File storage architecture must support 1TB of proposal assets without architectural changes
NFR-SCALE-005: Authentication system must handle 10,000 registered users on free Supabase Auth tier
EXAMPLE

Accessibility Requirements

Hint: Accessibility is both a legal requirement in many markets and good product practice.

NFR-A11Y-001: All pages must meet WCAG 2.1 Level AA compliance
NFR-A11Y-002: All interactive elements must be keyboard navigable
NFR-A11Y-003: All images must have descriptive alt text
NFR-A11Y-004: Colour contrast ratio must be minimum 4.5:1 for normal text
NFR-A11Y-005: Forms must have properly associated labels and clear error messages
NFR-A11Y-006: Proposal viewer must be readable without JavaScript (SSR)
EXAMPLE
🖥️
08
Section

Technical Specifications

Technical specifications give the engineering team clarity on architectural decisions, integration requirements, and constraints before they begin implementation.

System Architecture

Hint: Describe the high-level architecture in plain language. Diagrams can be linked or attached separately.

e.g. ProposalAI uses a JAMstack architecture:

• Frontend: Next.js 14 (App Router) deployed on Vercel
• Backend: Supabase (PostgreSQL + Auth + Storage + Edge Functions)
• AI Layer: Anthropic Claude API (claude-sonnet-4-6) called from Next.js API routes
• Payments: Stripe Billing (subscriptions) + Stripe Checkout (client deposit payments)
• Email: Resend + React Email templates
• Error Tracking: Sentry
• Analytics: Posthog
• CDN: Vercel Edge Network

All communication between frontend and Supabase uses the Supabase JS client. AI generation requests are proxied through a Next.js API route to protect the Anthropic API key.
EXAMPLE

Database Schema (Key Tables)

Hint: Define the key tables and their relationships. You do not need to be exhaustive — focus on the most important entities.

Key tables in the PostgreSQL database:

users (extends Supabase auth.users)
  - id: uuid (FK to auth.users)
  - display_name: text
  - logo_url: text
  - brand_primary: text (hex)
  - brand_secondary: text (hex)
  - plan_tier: enum ('free', 'pro')
  - stripe_customer_id: text
  - created_at: timestamptz

proposals
  - id: uuid (PK)
  - user_id: uuid (FK to users)
  - client_name: text
  - project_type: text
  - status: enum ('draft', 'sent', 'viewed', 'accepted', 'declined')
  - content: jsonb (structured proposal sections)
  - total_value: numeric
  - public_token: uuid (used in public URL)
  - created_at: timestamptz
  - updated_at: timestamptz

RLS policy: users can only SELECT/INSERT/UPDATE/DELETE their own proposals (user_id = auth.uid())
EXAMPLE

API Endpoints

Method
Endpoint
Auth
Description
POST
/api/proposals/generate
Required
Submit project brief, trigger AI generation via Claude API, return streaming response
GET
/api/proposals
Required
List all proposals for the authenticated user
GET
/api/proposals/:id
Required
Get a single proposal (owner only)
PATCH
/api/proposals/:id
Required
Update proposal content, status, or metadata
DELETE
/api/proposals/:id
Required
Soft-delete a proposal (sets deleted_at)
GET
/api/proposals/public/:token
None
Get proposal for client view using public token
POST
/api/proposals/:id/send
Required
Mark proposal as sent, trigger client notification email
POST
/api/webhooks/stripe
Stripe sig
Handle Stripe billing webhook events
POST
/api/billing/create-checkout
Required
Create Stripe checkout session for plan upgrade
POST
/api/billing/portal
Required
Create Stripe billing portal session

Third-Party Integrations

Hint: For each integration, define the purpose, authentication method, and which events or endpoints are used.

Anthropic Claude API
  - Model: claude-sonnet-4-6
  - Use: Proposal generation from project brief
  - Auth: ANTHROPIC_API_KEY (env variable, server-side only)
  - Rate limits: 60 requests/minute on Tier 1 — sufficient for MVP
  - Streaming: Yes — SSE via API route proxy

Stripe
  - Products: Stripe Billing (subscriptions), Stripe Checkout (client deposits)
  - Webhook events handled: invoice.paid, invoice.payment_failed, customer.subscription.updated, customer.subscription.deleted
  - Keys: STRIPE_SECRET_KEY, STRIPE_WEBHOOK_SECRET (env variables)

Resend
  - Use: Transactional email (welcome, verification, proposal viewed, payment confirmation)
  - From address: hello@proposalai.co
  - Templates: React Email components

Posthog
  - Use: Product analytics (events, funnels, session recordings)
  - Key events: signup, proposal_created, proposal_generated, proposal_sent, proposal_viewed, proposal_accepted, upgrade_started, upgrade_completed
EXAMPLE
🎨
09
Section

Design & UX Requirements

Design requirements align engineering and design on visual standards, interaction patterns, and UX principles before implementation begins.

Design System

Hint: Define the design system tokens that engineers should use. Link to Figma if available.

e.g. ProposalAI uses a custom design system built on top of Tailwind CSS and shadcn/ui components:

• Typography: Inter (Google Fonts) — headings at 700 weight, body at 400
• Primary brand colour: #0070F3 (blue)
• Secondary: #F4F4F5 (light grey for backgrounds)
• Success: #22C55E · Error: #EF4444 · Warning: #F59E0B
• Border radius: 8px (small), 12px (medium), 16px (large)
• Spacing scale: 4px base unit (4, 8, 12, 16, 24, 32, 48, 64, 80px)

Design files: Figma link — [insert Figma link here]
Component library: /components/ui in the codebase
EXAMPLE

Key UX Requirements

Hint: UX requirements define the experience standards engineers and designers must meet. Be specific.

UX-001: The brief-to-proposal flow must not require more than 3 screens — brief form → generation → editor
UX-002: All form inputs must show inline validation errors (not on submit only)
UX-003: Destructive actions (delete proposal, cancel subscription) must require a confirmation step
UX-004: All async operations must show loading state — no silent operations
UX-005: Empty states must be designed for all list views — first proposal creation should be obvious
UX-006: Onboarding flow must have a visible progress indicator
UX-007: The proposal editor must auto-save — no explicit save button required
UX-008: Mobile layout must be fully functional — not just 'responsive but broken'
UX-009: All error messages must explain what went wrong AND what the user should do next
UX-010: Navigation must make the user's current location in the app clear at all times
EXAMPLE

Responsive Breakpoints

Hint: Define the breakpoints and which layouts apply at each. Be specific about mobile requirements.

Mobile: 375px–767px — single column layout, full-width forms, bottom sheet modals
Tablet: 768px–1023px — two-column layout where appropriate, side navigation collapsed
Desktop: 1024px+ — full navigation sidebar visible, multi-column dashboard layout

Critical: The client-facing proposal view must be pixel-perfect on mobile — this is a conversion surface.
EXAMPLE
🚀
10
Section

Release Criteria & Open Questions

Release criteria define the conditions that must be met before this product ships. Open questions document unresolved decisions that need answers before or during development.

Launch Blockers (must be true before shipping)

Hint: These are binary conditions. Change ✗ to ✓ as each is verified. Nothing ships until all are ✓.

LAUNCH-001 ✗ All Must Have user stories pass acceptance criteria
LAUNCH-002 ✗ All Critical functional requirements implemented and tested
LAUNCH-003 ✗ All Critical non-functional requirements met (security, performance)
LAUNCH-004 ✗ Privacy Policy and Terms of Service published and linked
LAUNCH-005 ✗ Stripe billing fully functional in production (not test mode)
LAUNCH-006 ✗ Error monitoring (Sentry) live and alerting correctly
LAUNCH-007 ✗ Analytics (Posthog) tracking all key events in production
LAUNCH-008 ✗ Database backups configured and tested (verified restore)
LAUNCH-009 ✗ Email delivery tested end-to-end in production environment
LAUNCH-010 ✗ Load test passed — system handles 100 concurrent users without errors
EXAMPLE

Definition of Done (per feature)

Hint: A shared definition of done prevents 'done' meaning different things to different team members.

A feature is considered complete and shippable when ALL of the following are true:

□ All acceptance criteria from user stories pass
□ Unit tests written and passing for business logic
□ Manual QA completed on Chrome, Safari (iOS and macOS), and Chrome for Android
□ Responsive layout verified at 375px, 768px, and 1280px
□ No console errors or warnings in production build
□ Sentry error tracking verified for any new error surfaces
□ Posthog events firing for all relevant user actions
□ Code reviewed and approved by at least one other team member
□ Deployed to staging and verified before promotion to production
EXAMPLE

Open Questions

Q-001OpenOwner: Product · Due: 2 Oct 2025

Should free tier users be able to share their proposal publicly, or should we require a paid plan to unlock the client view?

Q-002OpenOwner: Product + Engineering · Due: 2 Oct 2025

What happens to proposals when a user's subscription lapses — are they viewable? Editable? Or locked?

Q-003OpenOwner: Product · Due: 8 Oct 2025

Should we allow clients to leave comments on the proposal before accepting, or is accept/decline binary for MVP?

Q-004Resolved: No — defer to v1.1Owner: Legal + Finance · Due: 5 Oct 2025

Do we need to handle VAT / GST on the Stripe subscription for EU and Australian customers at launch?

Q-005OpenOwner: Legal · Due: 10 Oct 2025

What is our policy on AI-generated content ownership — who owns the proposal text, us or the user?

Q-006OpenOwner: Engineering + Legal · Due: 10 Oct 2025

Should we log the AI prompts and responses for quality improvement, and does this require disclosure in the privacy policy?

Revision History

Hint: Track every meaningful change with a date, version, and author. This prevents confusion about which version is current.

v1.0 — 15 September 2025 — Initial draft (Sarah Chen)
v1.1 — 22 September 2025 — Added non-functional requirements, updated user stories US-007 and US-008 after design review
v1.2 — 1 October 2025 — Added API endpoint table, updated database schema after engineering review. Moved Google OAuth from Must Have to Should Have per kickoff scope discussion.
v1.3 — 10 October 2025 — Added open questions section. Resolved Q-004 (VAT deferred). Updated success metrics based on revised MRR target.
EXAMPLE
Built by 4Byte

Got your PRD? We build it.

This template is the exact document structure we use with clients before every build. A completed PRD handed to our team means faster, more accurate development with fewer revision rounds.

If you have completed this PRD and are ready to build, we can take your requirements document and ship your product in 28 days — no guesswork, no scope creep, no surprise costs.

We review your PRD before kickoff — we will spot gaps you missed
Fixed-price delivery based on your defined scope
User stories become your acceptance test suite
You own every line of code and all infrastructure
45+

Products Shipped

From PRD to production

28 days

MVP Delivery

Fixed-price, full-stack

Zero

Surprise Costs

Scope defined upfront

≤ 4hrs

Response Time

On all new enquiries

FAQ

Frequently Asked Questions

What is a Product Requirements Document (PRD)?+

A Product Requirements Document (PRD) is a document that describes what a product or feature must do, who it is for, why it is being built, and how success will be measured. It bridges the gap between business goals and engineering implementation by defining requirements clearly before development begins. A good PRD prevents scope creep, misaligned expectations, and costly rework.

What should a PRD include?+

A complete PRD should include a product overview and background, the problem being solved, target users and personas, business goals and success metrics, user stories organised by persona, functional requirements (what the system must do), non-functional requirements (performance, security, scalability), technical specifications or constraints, out-of-scope items, release criteria, and open questions.

How long should a PRD be?+

A PRD should be as long as it needs to be — no longer. For an MVP or small feature, 3 to 5 pages is usually sufficient. For a complex platform or major product release, 10 to 20 pages may be appropriate. The goal is clarity, not comprehensiveness. A PRD that nobody reads because it is too long has failed its purpose.

What is the difference between a PRD and an MVP planning document?+

An MVP planning document focuses on strategy — problem definition, market, personas, and go-to-market. A PRD focuses on execution — what exactly needs to be built, how it should behave, and how it will be measured. The MVP plan comes first and informs the PRD. A PRD is what you hand to a development team to start building.

How do you write user stories in a PRD?+

User stories follow the format: As a [user type], I want to [action], so that [outcome or benefit]. Good user stories are specific, testable, and focused on user goals rather than technical implementation. Each user story should have clear acceptance criteria that define when the story is complete.

Who writes the PRD?+

The PRD is typically written by the product manager or founder, with input from engineering, design, and business stakeholders. In early-stage startups, the founder often writes the PRD. In larger teams, a dedicated product manager owns it. The PRD should be reviewed and approved by engineering leads before development begins.

Related Resources

More Templates & Guides

TemplateMVP Planning TemplateView resource →ChecklistSaaS Launch ChecklistView resource →GuideSaaS Development ProcessView resource →GuideAI Agent Development GuideView resource →
Open for new projects

PRD complete. Let us ship it.

We take your completed PRD and deliver a production-ready product in 28 days — fixed price, full stack, zero guesswork. Free strategy call, response in under 4 hours.

Book a Free Strategy Call →MVP Planning Template →
📞100% Free Strategy Call
Response in ≤ 4 Hours
🛡️No Obligation
🚀45+ Products Shipped