Part 05 of 13

Writing PRDs That AI Agents Can Execute

Product-level requirements, not implementation details. 14 common sections, 13 frontend additions, 9 backend additions. UI mocks as first-class artifacts. 18-check automated verification.

~10 minute read

Product-Level, Not Implementation-Level

A PRD describes what the user experiences and what the business needs. It does not describe tables, API signatures, or file paths. Those belong in the phase plan (Part 6). This separation is deliberate: the PRD is the "what" and the phase plan is the "how."

Why this matters for AI agents: if the PRD includes implementation details, the phase plan generator will defer to them even when they are suboptimal. The PRD should describe the desired outcome. The phase plan generator should derive the best implementation from the codebase's current state, patterns, and constraints.

A good PRD test: Could a product manager read this without knowing the tech stack and understand exactly what will be built? If yes, it is product-level. If they would need to know what tRPC or Drizzle is, it has leaked into implementation territory.

The PRD Template

14 Common Sections (All PRDs)

Every PRD, regardless of category, has these 14 sections:

  1. Purpose: Why this unit exists. What happens if it does not exist? What user pain does it solve?
  2. Scope: In scope and out of scope. Every out-of-scope item references which unit handles it.
  3. Dependencies: Which units must be complete before this one starts.
  4. Test Pair: Which unit verifies this one (backend units are tested by their frontend counterpart).
  5. Related Units: Four relationship types: depends on, test pair, composes into, shares pattern with.
  6. Success Signals: Observable behaviors that indicate this feature is working. Not metrics, behaviors.
  7. Metrics to Track: Quantifiable measurements with targets and measurement methods.
  8. Cross-Unit Integration Points: What this unit sends to other units and what it receives. Triggers and data shapes.
  9. Tier and Metering Constraints: Which features are available at each pricing tier. User experience at each limit.
  10. Configuration Surface: What is configurable, default values, where configuration lives.
  11. Assumptions: Things assumed to be true. Documented, not implicit.
  12. Open Questions: Unresolved items with a resolution path. Allowed in PRDs. Zero allowed in phase plans.
  13. Cross-Cutting Features: Audit logging, search indexing, notifications: follows defaults or custom behavior?
  14. Changelog: Date, change, reason. Tracks evolution.

Frontend Additions (F1-F13)

Frontend and full-stack PRDs add 13 sections that define the user experience in exhaustive detail:

SectionWhat It DefinesWhy It Matters
F1: User Journeys4+ narrative scenarios (morning triage, first use, power user, failure)Become E2E test cases
F2: Page StructureLayout zones, hierarchy, component compositionConstrains component selection
F3: InteractionsTrigger, behavior, feedback, result per interactionDefines optimistic UI strategy
F4: States8 sub-variants: empty (first-time), empty (filtered), loading, refresh, loaded, dense, error (full), error (partial)Prevents missing states in implementation
F5: Degradation3 levels: individual dependency fail, core service degraded, catastrophicDefines fallback behavior
F6: ResponsiveBreakpoint behavior, layout changes, hidden elementsPrevents desktop-only implementations
F7: URL StructureRoutes, parameters, deep linksEnables bookmarking and sharing
F8: KeyboardShortcuts, navigation, focus managementEssential for power-user products
F9: AccessibilityARIA roles, screen reader behavior, contrast requirementsLegal compliance, inclusive design
F10: PerformanceLoad time targets, interaction responsivenessBecome performance test thresholds
F11: BrandWhich tokens apply, specific visual requirementsEnsures visual consistency
F12: First-TimeOnboarding moments, empty states, progressive disclosureDefines new-user experience
F13: UI MockInteractive HTML mock with state switcherVisual spec for implementation

Backend Additions (B1-B9)

SectionWhat It Defines
B1: CapabilityBusiness-level description. No tables or APIs.
B2: Business RulesAbsolute constraints. "Issues cannot be deleted, only archived."
B3: Data FlowsStep-by-step information flow per scenario, including failure paths.
B4: PerformanceTargets per operation with expected data volumes.
B5: ReliabilityFailure points, monitoring, recovery behavior.
B6: SecurityAuth requirements, data sensitivity, encryption needs.
B7: ScalabilityLaunch, growth, and scale tier expectations.
B8: EventsEvents this unit emits and consumes.
B9: Output MocksIf the backend produces user-visible outputs (PDFs, emails).
Linear Example: PRD Excerpt for Issue List View (M1-U03)

Purpose

The Issue List View is the primary working surface for engineers. It shows all issues for a team, filterable and sortable, with inline status updates. Without this view, users must navigate to individual issue pages to understand workload, which defeats the "see everything at a glance" positioning.

F1: User Journeys

Morning triage: Engineer opens Linear. Sidebar shows their team. List view loads with issues sorted by priority. They scan the first 10 issues, update two statuses by clicking the status badge (In Progress), and assign themselves to one issue by clicking the assignee avatar. Total time: under 30 seconds for 3 actions.

Power user at scale: Tech lead opens a team with 400+ issues. They apply filters: status = In Progress, assignee = unassigned. List narrows to 23 issues. They select all (Cmd+A), set priority to High, assign to a team member. Bulk action completes in under 1 second.

F4: States

Empty (first-time): Team exists but has no issues. Centered illustration + heading "No issues yet" + body "Create your first issue to get started" + primary button "Create issue" + secondary "Import from Jira."

Empty (filtered to zero): Active filters but no matching results. Show filter summary + "No issues match these filters" + "Clear filters" link. Do NOT show the first-time empty state.

Loaded (dense): 500+ issues visible (virtual scrolling). Column headers sticky. Performance target: 60fps scroll. No layout shift as rows render.

The Brainstorming Process

PRDs are created through structured conversations with AI, not written from scratch. The AI acts as a senior product manager who leads with recommendations, not open-ended questions.

Six Rules for the Brainstorming Session

  1. Never generate the document until explicitly told. Brainstorm all sections first. Generate last. This prevents premature commitment.
  2. Never start web research until explicitly told. The founder's domain knowledge comes first. Research fills gaps, it does not drive the conversation.
  3. One conversation per PRD. Context must stay in one place. No "continue from where we left off."
  4. No implementation details. If tables or APIs creep in, redirect: "That belongs in the phase plan."
  5. Every template section must be filled. No skipping. If a section does not apply, explicitly state why.
  6. One section at a time. The AI presents a recommendation for one section. The founder refines. Move to the next. This prevents overwhelm and ensures depth.

The Session Flow

Start: The AI reads the unit from the Master PRD Index, identifies the category, pulls related unit context, and presents a recommendation for the Purpose section.

Middle: Section by section, the AI leads: "For the User Journeys, I recommend these four scenarios based on the personas in your Company Overview: morning triage, first-time setup, power-user bulk action, and error recovery. Here is my draft for each. What would you change?"

End: After all sections are brainstormed, the AI generates the full PRD as a structured document (markdown or docx). The founder reviews the complete document, makes final edits, and saves it to the docs folder.

UI Mocks as First-Class Artifacts

Every frontend and full-stack PRD includes an interactive UI mock (F13). The mock is an HTML file with inline React or plain HTML/CSS/JS that renders every state defined in F4, with a state switcher panel.

What the Mock Includes

Why Mocks Matter for AI Agents

The mock is a visual contract. The phase plan references specific mock states. The spec references mock states for visual tests. The executing agent can open the mock side-by-side with its implementation and compare. Without a mock, "the list should look right" is subjective. With a mock, "the list should match mock state: loaded-standard at desktop breakpoint" is verifiable.

Mock-first catches PRD gaps. Building the mock often reveals states or interactions that the PRD forgot to define. "What happens when the user applies a filter and there are no results?" If the mock does not have that state, neither will the implementation. Build the mock before finalizing the PRD.

Automated PRD Verification

After a PRD is written, it passes through an automated verification command that runs 18 checks against all existing PRDs and foundation documents.

The 18 Checks

#CheckWhat It Catches
1Template conformanceMissing sections, empty sections
2Terminology consistencySame concept using different names across PRDs
3Scope overlapTwo PRDs claiming the same feature
4Dependency validationReferenced unit does not exist or is in wrong milestone
5Integration symmetryA sends to B, but B does not list receiving from A
6Related unit symmetryA lists B as related, but B does not list A
7Interaction patternsSimilar interactions handled differently across PRDs
8Performance consistencyConflicting performance targets for shared resources
9Brand complianceUI elements not referencing brand tokens
10User journey completenessPersona workflows not covered by any journey
11States coverageMissing states (no loading state, no error state)
12Assumption validationAssumption contradicts a fact established in another PRD
13Configuration consistencySame setting defined with different defaults in two PRDs
14Tier limitsFeature available in tier that should not have it
15Data flow completenessFlow described without a failure path
16Open question reviewOpen questions that should have been resolved by now
17Cross-cutting featuresNotification or audit behavior not specified
18Mock verificationMock does not cover all states defined in F4

Each finding is categorized as Critical (blocks phase plan generation), Recommended (should fix), or Informational (awareness). Every finding includes: what is wrong, where the conflict is, and a specific recommendation for how to fix it.

Linear Example: Verification Finding

Check 5 (Integration Symmetry) - Recommended: M1-U03 (Issue List View) lists "receives issue.created events from M1-U02 (Issue CRUD API)" but M1-U02 does not list "sends issue.created events to M1-U03." Update M1-U02's Cross-Unit Integration Points section to include: "Sends: issue.created, issue.updated, issue.deleted events consumed by M1-U03 (Issue List View) for real-time list updates."

What You Leave With

For each unit: one PRD (5-15 pages) and one UI mock (HTML file). Both saved to the unit's folder in the docs directory. Both verified by the 18-check automated verification command.

The PRD is now ready for Part 6: Orchestration, where it gets translated into implementation-level phase plans and execution specs.