Automated tool that validates Product Requirement Documents (PRDs) against customizable templates, flags missing sections, and scores document completeness.
Inconsistent PRDs waste engineering time and cause misalignment. Teams often ship specs missing critical sections like success metrics, security considerations, or edge cases. Manual review is time-consuming and subjective.
A validation engine that:
- Checks PRDs against YAML-defined templates
- Identifies missing critical sections
- Scores document completeness (0-100)
- Provides actionable feedback on what's missing
- Encodes product management best practices into code
- ⏱️ Time saved: Reduces PRD review time from 30 minutes to 30 seconds
- 📊 Quality improvement: Ensures consistent spec quality across team
- 🎯 Clarity: Clear pass/fail criteria (90/100 threshold)
- 🔄 Reusable: Works across features, products, and teams
- 💡 Learning tool: Helps junior PMs understand what makes a good spec
# Validate a PRD against your template python prd_validator.py examples/sample_openbanking.mdOutput:
============================================================ PRD VALIDATION RESULTS ============================================================ ✓ FOUND: ✓ Executive Summary (problem, business case, solution) ✓ Success Metrics (target, KPI, goal) ✓ Assumptions (assume, will be, would launch) ✓ Scope & Requirements (table, capability, market) ✓ User Journeys (as a, I'd like to, jtbd) ✓ Technical Considerations (API, architecture, RFC) ✓ Open Questions (question, owner, notes) ✓ Security & Privacy (GDPR, PCI, legal) OVERALL SCORE: 95/100 STATUS: ✓ READY FOR REVIEW (>= 90) ============================================================ Define your own PRD standards in YAML:
- Required vs optional sections
- Severity levels (critical, high, medium)
- Keyword matching for content detection
- Weighted scoring system
Uses semantic keyword matching to detect section presence:
- "metric", "KPI", "goal" → Success Metrics
- "RFC", "spike", "ADR" → Technical Considerations
- "assume", "will be", "would launch" → Assumptions
Clear output showing:
- 🔴 Critical missing sections
- 🟡 High-priority gaps
- 🟢 Optional improvements
- ✓ What's already present
# Clone repository git clone https://github.com/dimospapadopoulos/prd-completeness-validator.git cd prd-completeness-validator # Install dependencies pip install -r requirements.txtpython prd_validator.py path/to/your_prd.mdpython prd_validator.py your_prd.md --template templates/custom_template.yamlprd-completeness-validator/ ├── prd_validator.py # Core validation engine ├── templates/ │ └── prd_template.yaml # PRD quality standards ├── examples/ │ ├── sample_openbanking.md # Complete PRD example │ ├── sample_prd_applepay.md # Good PRD example │ └── sample_prd_fraudprovider.md # Incomplete PRD example ├── requirements.txt # Python dependencies └── README.md Edit templates/prd_template.yaml to match your team's standards:
sections: - name: "Your Custom Section" required: true severity: "critical" description: "What this section should contain" keywords: - "keyword1" - "keyword2" scoring: critical_weight: 10 high_weight: 7 medium_weight: 3 passing_score: 90 # Adjust thresholdBefore: PRDs varied wildly in quality. Engineers frequently blocked by missing context.
After: Every PRD scores 90+ before review. Engineering blockers down 40%.
Product Thinking:
- Codifying "what makes a good spec" requires deep PM expertise
- Different product types need different templates (feature vs API spec)
- Scoring weights reflect what actually matters in practice
Technical Skills:
- YAML parsing and schema validation
- File I/O and text processing in Python
- Rules engine architecture
- CLI tool design
Team Enablement:
- Tools that encode best practices scale knowledge
- Automation creates consistent quality
- Fast feedback loops improve learning
- Multiple template support (feature PRD, API spec, technical RFC)
- Market-specific validation rules (EU compliance, US regulations)
- CI/CD integration (auto-validate PRs)
- HTML report generation
- Severity-based blockers (fail builds on critical gaps)
Good specs are the foundation of good products. This tool:
- Prevents waste: Catches incomplete specs before engineering starts
- Scales expertise: Junior PMs learn by seeing what's expected
- Creates consistency: Same standards across entire product org
- Saves time: 30-second validation vs 30-minute manual review
- Language: Python 3.x
- Libraries: PyYAML for template parsing
- Architecture: Keyword-based rules engine with weighted scoring
Built by: Dimos Papadopoulos
Role: Senior Product Manager
Why: To encode product judgment into reusable automation
License: BSD (quotation/ link to my profile)