Adapted from: How to Write Awesome Tech Specs by Lyft Engineering
2-3 sentences describing the who/what/when/where/why of your entire project.
The "why" and the existing context.
Expected outcomes, both objective and subjective.
What intentionally are you not doing? Define and limit the scope.
The longest section of the spec, level of detail depending on audience. Describe the engineering approach, include architectural diagrams.
What metrics will you use to measure whether this project met its intended goal?
What are potential risks and how are you mitigating them?
Other approaches you considered but decided against and why.
Break the project out into intermediate milestones with estimated dates.
Unresolved questions you are still working through and need feedback on.