Skip to content

PRD Creation Guide

How to write a Product Requirements Document for a Smartsapp module. This guide extracts the conventions used in the existing School PRD and Canteen PRD so that all future PRDs follow a consistent structure.


1. File Conventions

Convention Rule
File name <Module>_PRD.md (e.g., Attendance_PRD.md)
Location docs/modules/<module>/ alongside the module's C4 architecture doc
PRD index Add a row to the relevant table in docs/PRD.md and link to the new file

2. PRD Template

Copy the template below and replace the placeholder text.

# <Module Name>

**Product Requirements Document** — <subtitle describing scope, e.g., "Admin Portal Full Feature Specification">

| Field | Value |
|-------|-------|
| Document Version | v1.0 |
| Status | Draft |
| Date | <month year> |
| Audience | Engineering, Product, Design, QA |

---

## 1. Product Overview

<Brief paragraph explaining what this module does, who uses it, and why it exists.>

### 1.1 Strategic Goals

- <Goal 1>
- <Goal 2>

### 1.2 Scope

**In scope:**

- <Feature or capability>
- <Feature or capability>

**Out of scope:**

- <Excluded item and reason>

---

## 2. <First Major Feature or Entity Group>

> **Definition**
> <One-sentence definition of the core concept.>

### 2.1 <Subsection>

<Description or workflow steps.>

#### Attributes / Fields

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| **field_name** | String | Yes | <What this field represents> |

#### Business Rules

> <Rule 1 — use blockquotes for every business rule.>

> <Rule 2>

---

## 3. <Next Major Feature or Entity Group>

<!-- Repeat the pattern from Section 2 for each major area. -->

---

## N-2. Non-Functional Requirements

- **Data integrity:** <constraints, e.g., cascade deletes, uniqueness>
- **Performance:** <expectations, e.g., response times, batch sizes>
- **Multi-tenancy:** <isolation rules>

---

## N-1. Open Questions

| # | Question | Owner | Status |
|---|----------|-------|--------|
| 1 | <Unresolved question> | <Person or team> | Open |

---

## N. Revision History

| Version | Date | Author | Changes |
|---------|------|--------|---------|
| v1.0 | <date> | <name> | Initial draft |

3. Section Reference

Every PRD should include these sections. The order and numbering adapt to the module's size.

Section Purpose Required
Header & metadata table Version, status, date, audience Yes
Product Overview Goals, scope, boundaries Yes
Core content Entity definitions or feature specifications (see Section 4) Yes
Business Rules Constraints and invariants, written as blockquotes Yes
Non-Functional Requirements Data integrity, performance, multi-tenancy Recommended
Open Questions Unresolved decisions tracked with owner and status Recommended
Revision History Version log with date, author, and summary of changes Yes

4. Entity-Focused vs. Feature-Focused PRDs

Choose the style that best fits the module. Both are valid and can be mixed.

Entity-focused (data-model style)

Best for modules that define core data structures used across the platform.

  • Organise sections around entities (e.g., School, Campus, Student)
  • Each entity gets: description, attributes table, and business rules
  • Include an Entity Relationship Summary table
  • Example: School PRD

Feature-focused (workflow style)

Best for modules with rich user-facing workflows and UI.

  • Organise sections around functional areas (e.g., Dashboard, Feeding List, Reports)
  • Each area gets: description, UI fields/columns, filters, actions, and business rules
  • Include status lifecycle tables where applicable
  • Example: Canteen PRD

5. Formatting Conventions

These conventions are enforced across all PRDs for consistency.

  • ## (H2) for major numbered sections
  • ### (H3) for subsections (e.g., 2.1, 2.2)
  • #### (H4) for sub-subsections or grouped fields
  • Tables for structured data: attributes, statuses, roles, filters, permissions
  • Blockquotes (>) for business rules, definitions, and important notes
  • Bold (**text**) for emphasis on key terms and field names
  • Numbered lists for sequential workflows and steps
  • Bullet lists for non-sequential items (features, goals, scope items)
  • Horizontal rules (---) between major sections

6. AI Maintenance Rules

These rules (from AI_CONTEXT.md) govern how AI assistants update PRDs.

AI should update PRDs when:

  • Implementation diverges from the PRD (code is truth — PRD must match)
  • Open questions get resolved during development
  • New entities or fields are added within the PRD's existing scope
  • User explicitly asks for a PRD update

AI should NOT update PRDs when:

  • Product direction changes (new features, scope changes)
  • Removing or deprecating features
  • Adding speculative content
  • Changing business rules (flag to user instead)

Principle: AI updates PRDs to keep them accurate with what was built. Product updates PRDs to define what should be built next.