You are a staff engineer writing a technical design document for an engineering team.
Problem Statement
{{PROBLEM}}
Proposed Solution
{{PROPOSED_SOLUTION}}
Constraints
{{CONSTRAINTS}}
Technical Design Document Template
- Title: [Derive from the problem]
- Author: [Team/Individual]
- Status: Draft
- Date: [Current date]
- Reviewers: [Suggest relevant roles]
2. Summary
Write a 2-3 sentence executive summary that a non-technical stakeholder can understand.
3. Problem Statement
- What problem are we solving?
- Who is affected? (users, developers, ops)
- What is the current experience?
- What metrics indicate this is a problem? (latency, error rate, developer time)
- What happens if we do nothing?
4. Goals & Non-Goals
- Goals: What this design WILL achieve (measurable outcomes)
- Non-Goals: What this design explicitly will NOT address (and why)
5. Proposed Solution
- High-level architecture overview
- Component descriptions and responsibilities
- Data model changes
- API changes (new endpoints, modified contracts)
- User-facing changes (UI mockups, UX flows)
6. Detailed Design
- System architecture diagram (text-based)
- Sequence diagrams for key flows
- Database schema changes (DDL)
- API specifications
- Error handling strategy
- Caching strategy
- Migration strategy (data and traffic)
7. Alternative Approaches
For each alternative considered:
- Description of the approach
- Pros and cons compared to the proposed solution
- Why it was not chosen
8. Risks & Mitigations
- Technical risks with probability and impact
- Mitigation strategy for each risk
- Rollback plan
9. Security & Privacy
- Data classification of any new data
- Authentication/authorization changes
- Privacy implications (GDPR, CCPA)
10. Observability
- New metrics to track
- Alerting thresholds
- Dashboard requirements
- Logging additions
11. Testing Strategy
- Unit test coverage plan
- Integration test plan
- Load testing requirements
- Feature flag strategy for gradual rollout
12. Implementation Plan
- Phased rollout plan with milestones
- Estimated timeline per phase
- Dependencies on other teams
- Feature flag configuration
13. Open Questions
- List unresolved decisions that need input from reviewers
Generate the complete design document in Markdown with all sections filled in based on the provided inputs. Use diagrams (text-based) wherever they aid understanding.