What This Template Is For
Capacity planning answers a simple question: how much can your team actually deliver this quarter? Not how much you wish they could deliver. Not how much the roadmap assumes. How much, given real headcount, planned time off, on-call rotations, and the unplanned work that always shows up.
Most roadmap misses are not caused by bad prioritization. They are caused by overcommitting against capacity that was never accurately measured. This template provides a structured way to calculate available capacity per squad, allocate it across committed work and buffer, and surface risks before the quarter starts. It pairs well with the Sprint Planning template for sprint-level commitment and the Product Operations Handbook for building repeatable planning processes.
The template uses story points as the default unit, but you can substitute engineering days, t-shirt sizes, or any other estimation unit your team already uses. What matters is consistency: use the same unit across all squads so you can aggregate and compare. If your team tracks velocity per sprint, this template converts sprint velocity into quarterly capacity.
When to Use This Template
- Quarterly planning kickoff. Run this exercise before the roadmap prioritization session so you know how much fits before you start arguing about what fits.
- New quarter, same team. Even if the team composition has not changed, capacity shifts quarter to quarter due to holidays, on-call rotations, tech debt commitments, and planned leaves.
- Team restructure or reorg. When squads are reshuffled, recalculate capacity from scratch. Do not carry over last quarter's numbers.
- Headcount changes. New hires ramp up over 2-3 months. Departures create knowledge transfer overhead. Both affect real capacity.
- Roadmap commitments to leadership. When the VP asks "can we deliver all of this by June?", this template gives you a data-backed answer instead of an optimistic guess.
- Cross-team dependency planning. When multiple squads contribute to a single initiative, capacity planning reveals bottlenecks before they become blockers.
How to Use This Template
Step 1: List Your Squads and Members (5 minutes)
For each squad, list every team member, their role, and their planned availability for the quarter. Include engineers, designers, QA, and anyone else whose time is allocated to the squad.
Step 2: Calculate Raw Capacity (5 minutes)
Start with the total working days in the quarter. Subtract company holidays, planned PTO, on-call days, recurring meetings (all-hands, sprint ceremonies, etc.), and any committed time outside the squad (e.g., mentoring, interviewing). Multiply remaining days by the number of team members.
If your team uses story points, convert available days to story points using the average velocity from the last 3 sprints. For example, if your squad averages 32 story points per 2-week sprint with 4 engineers, and there are 6 sprints in the quarter, raw capacity is 192 points.
Step 3: Apply a Buffer (2 minutes)
Reserve 20% of raw capacity for unplanned work: production incidents, urgent bugs, stakeholder requests, and technical emergencies. If your team historically spends more than 20% on unplanned work, increase the buffer. Track the actual unplanned percentage each quarter and adjust.
Step 4: Allocate Committed Work (10 minutes)
List every initiative, project, or workstream the squad is committed to. Assign estimated story points to each. The total committed work must not exceed Available Capacity (raw minus buffer). If it does, something must be cut or moved to a different quarter.
Step 5: Identify Risks and Dependencies (5 minutes)
Note any risks that could reduce capacity further: key-person dependency, pending headcount approvals, external API dependencies, or initiatives that span multiple squads. For cross-squad work, confirm that both squads have allocated capacity for their share.
The Template
Copy this into your planning tool.
Quarter: [Q1/Q2/Q3/Q4 20XX]
Planning Lead: [Name]
Date: [Date]
Sprints in Quarter: [Number, e.g., 6 two-week sprints]
Quarter Overview
| Squad | Members | Raw Capacity | Buffer (20%) | Available Capacity | Committed | Remaining |
|---|---|---|---|---|---|---|
| [Squad A] | [Count] | [Points/Days] | [Points/Days] | [Points/Days] | [Points/Days] | [Points/Days] |
| [Squad B] | [Count] | [Points/Days] | [Points/Days] | [Points/Days] | [Points/Days] | [Points/Days] |
| [Squad C] | [Count] | [Points/Days] | [Points/Days] | [Points/Days] | [Points/Days] | [Points/Days] |
| Total | [Sum] | [Sum] | [Sum] | [Sum] | [Sum] | [Sum] |
Squad Detail: [Squad Name]
Squad Lead: [Name]
Sprint Velocity (last 3 sprints): [X, Y, Z] → Average: [Avg]
Estimation Unit: [Story points / Engineering days]
Team Availability
| Team Member | Role | Available Days | PTO / Holidays | On-call Days | Net Available Days | Notes |
|---|---|---|---|---|---|---|
| [Name] | [Role] | [Total working days in quarter] | [Days off] | [Days] | [Calc] | [Notes] |
| [Name] | [Role] | [Total working days] | [Days off] | [Days] | [Calc] | |
| [Name] | [Role] | [Total working days] | [Days off] | [Days] | [Calc] | |
| [Name] | [Role] | [Total working days] | [Days off] | [Days] | [Calc] |
Total Net Available Days: [Sum]
Raw Capacity (story points): [Velocity avg x sprints in quarter, adjusted for availability]
Capacity Allocation
| Category | Points/Days | % of Raw |
|---|---|---|
| Raw Capacity | [Total] | 100% |
| Buffer (unplanned work) | [20% of raw] | 20% |
| Tech debt / maintenance | [Allocated] | [%] |
| Available for New Work | [Calc] | [%] |
Committed Work
| # | Initiative / Project | Estimated Effort | Sprint Target | Owner | Dependencies | Status |
|---|---|---|---|---|---|---|
| 1 | [Project name] | [Points/Days] | [Sprint X-Y] | [Name] | [Deps] | [Not Started / In Progress] |
| 2 | [Project name] | [Points/Days] | [Sprint X-Y] | [Name] | [Deps] | [Status] |
| 3 | [Project name] | [Points/Days] | [Sprint X-Y] | [Name] | [Deps] | [Status] |
| 4 | [Project name] | [Points/Days] | [Sprint X-Y] | [Name] | [Deps] | [Status] |
Total Committed: [Sum]
Remaining Capacity: [Available minus Committed]
Risks
| Risk | Likelihood (H/M/L) | Impact on Capacity | Mitigation |
|---|---|---|---|
| [Risk description] | [H/M/L] | [Points/Days at risk] | [Plan] |
| [Risk description] | [H/M/L] | [Points/Days at risk] | [Plan] |
Repeat the Squad Detail section for each squad.
Filled Example: 3-Squad Engineering Team at DataPulse
Quarter: Q2 2026
Planning Lead: Anika Patel (Director of Engineering)
Date: March 20, 2026
Sprints in Quarter: 6 (two-week sprints, April 1 through June 20)
DataPulse is a B2B analytics platform with three squads: Platform, Growth, and Integrations. The team is planning Q2 capacity to commit to the quarterly roadmap.
Quarter Overview (Filled)
| Squad | Members | Raw Capacity | Buffer (20%) | Available Capacity | Committed | Remaining |
|---|---|---|---|---|---|---|
| Platform | 5 | 210 pts | 42 pts | 168 pts | 152 pts | 16 pts |
| Growth | 4 | 174 pts | 35 pts | 139 pts | 128 pts | 11 pts |
| Integrations | 3 | 126 pts | 25 pts | 101 pts | 92 pts | 9 pts |
| Total | 12 | 510 pts | 102 pts | 408 pts | 372 pts | 36 pts |
Total utilization: 91% of available capacity (372 of 408 points committed). The 36-point remainder provides additional slack beyond the 20% buffer.
Squad Detail: Platform
Squad Lead: Raj Mehta
Sprint Velocity (last 3 sprints): 38, 34, 33 → Average: 35
Estimation Unit: Story points
Team Availability
| Team Member | Role | Available Days | PTO / Holidays | On-call Days | Net Available Days | Notes |
|---|---|---|---|---|---|---|
| Raj | Backend Eng | 60 | 5 (Memorial Day week) | 5 | 50 | Squad lead, 20% in meetings |
| Priya | Backend Eng | 60 | 0 | 5 | 55 | |
| Sam | Frontend Eng | 60 | 10 (wedding + travel) | 0 | 50 | Out first 2 weeks of May |
| Dana | Full-stack Eng | 60 | 3 | 5 | 52 | |
| Mira | QA | 60 | 5 | 0 | 55 |
Total Net Available Days: 262 (out of 300 possible)
Availability factor: 262/300 = 87%
Raw Capacity: 35 pts/sprint x 6 sprints = 210 pts (already adjusted: 87% of the theoretical 240 pts based on historical velocity capturing typical availability)
Capacity Allocation
| Category | Points | % of Raw |
|---|---|---|
| Raw Capacity | 210 | 100% |
| Buffer (unplanned work) | 42 | 20% |
| Tech debt / maintenance | 16 | 8% |
| Available for New Work | 152 | 72% |
Committed Work
| # | Initiative | Estimated Effort | Sprint Target | Owner | Dependencies | Status |
|---|---|---|---|---|---|---|
| 1 | Query engine performance optimization | 55 pts | Sprints 1-3 | Raj + Priya | None | Not Started |
| 2 | Multi-tenant data isolation | 45 pts | Sprints 2-5 | Priya + Dana | Infra team provision new DB cluster by Sprint 2 | Not Started |
| 3 | Dashboard caching layer | 30 pts | Sprints 4-6 | Sam + Dana | Depends on query engine (item 1) | Not Started |
| 4 | Admin audit log | 22 pts | Sprints 5-6 | Dana + Mira | None | Not Started |
Total Committed: 152 pts
Remaining: 16 pts (allocated to tech debt)
Risks
| Risk | Likelihood | Impact on Capacity | Mitigation |
|---|---|---|---|
| Sam's extended leave shifts frontend work to Dana | M | -15 pts (Dana context-switches) | Pre-document dashboard caching approach before Sam leaves. Pair Sam and Dana in Sprint 1. |
| Infra team delays DB cluster provisioning | M | -20 pts (multi-tenant blocked) | Start Sprint 2 work with feature flags on existing cluster. Infra has committed to delivery by April 18. Weekly check-in scheduled. |
Squad Detail: Growth
Squad Lead: Jordan Kim
Sprint Velocity (last 3 sprints): 30, 28, 29 → Average: 29
Estimation Unit: Story points
Team Availability
| Team Member | Role | Available Days | PTO / Holidays | On-call Days | Net Available Days | Notes |
|---|---|---|---|---|---|---|
| Jordan | Full-stack Eng | 60 | 3 | 5 | 52 | |
| Alex | Frontend Eng | 60 | 8 | 0 | 52 | Vacation in June |
| Lin | Backend Eng | 60 | 0 | 5 | 55 | |
| Taylor | Designer | 60 | 5 | 0 | 55 | 50% allocated to Growth, 50% to Integrations |
Total Net Available Days: 214
Raw Capacity: 29 pts/sprint x 6 sprints = 174 pts
Capacity Allocation
| Category | Points | % of Raw |
|---|---|---|
| Raw Capacity | 174 | 100% |
| Buffer (unplanned work) | 35 | 20% |
| Tech debt / maintenance | 11 | 6% |
| Available for New Work | 128 | 74% |
Committed Work
| # | Initiative | Estimated Effort | Sprint Target | Owner | Dependencies | Status |
|---|---|---|---|---|---|---|
| 1 | Self-serve onboarding redesign | 48 pts | Sprints 1-3 | Jordan + Taylor | Design specs complete by Sprint 1 day 3 | Not Started |
| 2 | Usage-based pricing tier | 35 pts | Sprints 2-4 | Lin | Billing API from Integrations squad (item 2 below) | Not Started |
| 3 | In-app upgrade prompts | 25 pts | Sprints 4-5 | Alex + Taylor | Depends on pricing tier (item 2) | Not Started |
| 4 | Referral program MVP | 20 pts | Sprints 5-6 | Jordan + Alex | None | Not Started |
Total Committed: 128 pts
Remaining: 11 pts (allocated to tech debt)
Risks
| Risk | Likelihood | Impact on Capacity | Mitigation |
|---|---|---|---|
| Taylor split across two squads creates bottleneck | H | -10 pts (design reviews delayed) | Front-load design work in Sprints 1-2. Taylor prioritizes Growth onboarding in Sprint 1, then shifts to Integrations. |
| Usage-based pricing requires billing API from Integrations squad | M | -15 pts (blocked in Sprint 3) | Integrations has committed billing API by end of Sprint 2. Growth builds with mock API in Sprint 2 and integrates in Sprint 3. |
Squad Detail: Integrations
Squad Lead: Noel Park
Sprint Velocity (last 3 sprints): 22, 20, 21 → Average: 21
Estimation Unit: Story points
Team Availability
| Team Member | Role | Available Days | PTO / Holidays | On-call Days | Net Available Days | Notes |
|---|---|---|---|---|---|---|
| Noel | Backend Eng | 60 | 5 | 10 | 45 | Heavy on-call load (primary for all integrations) |
| Casey | Backend Eng | 60 | 3 | 5 | 52 | |
| Taylor | Designer | 60 | 5 | 0 | 55 | 50% allocated (see Growth squad) |
Total Net Available Days: 152
Raw Capacity: 21 pts/sprint x 6 sprints = 126 pts
Capacity Allocation
| Category | Points | % of Raw |
|---|---|---|
| Raw Capacity | 126 | 100% |
| Buffer (unplanned work) | 25 | 20% |
| Tech debt / maintenance | 9 | 7% |
| Available for New Work | 92 | 73% |
Committed Work
| # | Initiative | Estimated Effort | Sprint Target | Owner | Dependencies | Status |
|---|---|---|---|---|---|---|
| 1 | Salesforce CRM sync | 38 pts | Sprints 1-3 | Noel + Casey | Salesforce sandbox access (confirmed) | Not Started |
| 2 | Billing API for usage-based pricing | 22 pts | Sprints 1-2 | Casey | Growth squad needs this by end of Sprint 2 | Not Started |
| 3 | Webhook reliability improvements | 18 pts | Sprints 3-4 | Noel | None | Not Started |
| 4 | Slack notification integration | 14 pts | Sprints 5-6 | Casey + Taylor | Design needed Sprint 4 | Not Started |
Total Committed: 92 pts
Remaining: 9 pts (allocated to tech debt)
Risks
| Risk | Likelihood | Impact on Capacity | Mitigation |
|---|---|---|---|
| Noel's on-call load exceeds estimate (integration outages) | M | -12 pts (interruptions pull focus from Salesforce work) | Train Casey as secondary on-call. Reduce Noel's on-call to 5 days if Casey is ready by Sprint 2. |
| Billing API delivery slips, blocking Growth squad | L | -15 pts (Growth repriorization needed) | Casey starts billing API Sprint 1 day 1. Weekly milestone check with Growth. |
Cross-Squad Dependency Map
| Dependency | Provider | Consumer | Due By | Status | Escalation |
|---|---|---|---|---|---|
| Billing API | Integrations (Casey) | Growth (Lin) | End of Sprint 2 | Not Started | Anika (Dir Eng) if at risk by Sprint 2 day 3 |
| DB cluster provisioning | Infra team | Platform (Priya) | April 18 | Requested | Raj escalates to Infra lead if no confirmation by April 7 |
| Design specs for onboarding | Taylor | Growth (Jordan) | Sprint 1 day 3 | In Progress | Jordan flags in standup if not delivered |
Key Takeaways
- Capacity planning is not about filling every hour. It is about knowing your real throughput and committing to what fits, with room for reality
- Always apply a 20% buffer for unplanned work. Teams that plan to 100% of capacity miss every quarter. Track your actual unplanned percentage and adjust the buffer accordingly
- Calculate capacity per squad, not per team. Aggregating across squads hides bottlenecks. A team with 400 total points may still have a 3-person squad that is the constraint
- Cross-squad dependencies are the #1 source of capacity planning failures. Map them explicitly and assign due dates and escalation paths
- New hires do not contribute full capacity for 2-3 months. Budget their first quarter at 30-50% of a tenured team member's output
- Run this exercise at the start of every quarter, even if the team has not changed. Holidays, on-call rotations, and PTO shift capacity by 15-25% between quarters
About This Template
Created by: Tim Adair
Last Updated: 2/19/2026
Version: 1.0.0
License: Free for personal and commercial use
