---
name: rep-ramp-capacity-plan
description: "Check if your sales team can hit the bookings target once ramp and attrition count: ramped-rep equivalents by month, the gap, and the date to open reqs. Use when bookings targets are usually funded as headcount times quota, which assumes every rep is fully ramped all year and nobody leaves, so a plan can look covered on paper while new hires are still ramping, leavers' seats sit empty for months, and the shortfall shows up mid-year, too late to hire into."
---

# Plan Sales Capacity with Ramp and Attrition, Not Headcount

Bookings targets are usually funded as headcount times quota, which assumes every rep is fully ramped all year and nobody leaves, so a plan can look covered on paper while new hires are still ramping, leavers' seats sit empty for months, and the shortfall shows up mid-year, too late to hire into.

## When to use this skill

- The user wants to set up or run this workflow: "Plan Sales Capacity with Ramp and Attrition, Not Headcount".
- The user describes this problem: Bookings targets are usually funded as headcount times quota, which assumes every rep is fully ramped all year and nobody leaves, so a plan can look covered on paper while new hires are still ramping, leavers' seats sit empty for months, and the shortfall shows up mid-year, too late to hire into.

## At a glance

- Category: Finance/FP&A
- Difficulty: Intermediate
- Time saved: 1 hours per week. This figure is an estimate, not a measured result.

## Tools

Options separated by "or" are alternatives; use whichever the user already has.

- HubSpot or Salesforce
- BambooHR, Rippling, or Workday
- Google Sheets or Clay
- OpenAI API
- Slack

## Steps

1. Pull the roster from the HRIS into a roster tab: rep id, role, quota-carrying flag, start date, and termination date for everyone who carried quota in the last 8 quarters, plus approved and planned hires with target start dates; refresh it weekly with a scheduled Zapier or n8n run or a CSV export, and never overwrite past rows
2. Pull attainment history from the CRM: closed won bookings by owner by month for the same 8 quarters, and each rep's monthly quota; join to the roster so every rep-month carries its tenure month (1 = start month)
3. Build the ramp curve from your own cohorts: for each tenure month 1 to 12, median attainment of reps in that month divided by median attainment of fully ramped reps; use a month only when at least 5 reps are behind it (an assumption you can change), otherwise label the example curve as an assumption; ramped productivity = monthly quota x median ramped attainment
4. Model attrition and backfill from your history: trailing 12 month quota-carrying attrition rate x average headcount = expected leavers for the plan year, placed in the months you choose and labeled as an assumption; backfill start = departure + backfill lag (median days from resignation to the replacement's start, from the HRIS or ATS), and every backfill ramps from month 1
5. Compute ramped-rep equivalents by month: RE(month) = sum over reps on the team of ramp factor for their tenure month; capacity = RE x ramped productivity; compare with the bookings target by quarter and for the year, and show the gap in dollars and in ramped-rep months
6. Work out the hire-by date: one hire starting in month s adds the sum of the ramp curve over the months left; find the fewest hires, starting no earlier than today + recruiting lead time, that cover the gap, the latest start month that still works, and the req-open-by date = start date - lead time; list the quarters hiring cannot fix, because those need pipeline, win rate, or target changes instead
7. Add an AI step that flags the result: an OpenAI API call in Clay or a Sheets add-on reads only the computed cells and writes a five-line flag (gap, quarters at risk, hires needed, start-by and req-open-by dates, top assumption), does no arithmetic of its own, and is checked by a formula that every number in the flag matches a cell; post it to Slack for the sales leader and finance each month and whenever the roster changes
8. Back-test each quarter: compare the capacity the plan showed at the start of the quarter with actual bookings, record the error, refresh the ramp curve, attainment, attrition rate, and backfill lag, and keep each month's plan as the audit trail for headcount decisions; state in every post that it is a capacity plan, not the forecast

## Cost, time saved, and break-even

Tool cost here is your automation plan share and AI usage, which depend on your vendors and volume, so it is an input. Every number below is an assumption; replace each with your own figure.

### Inputs (every value is an assumption; replace it with your own figure)

- T = 6 (assumption): Hours a month to rebuild the capacity plan by hand (HRIS and CRM exports, tenure math, ramp, attrition, write-up). Time the next manual headcount or capacity review from export to sent summary.
- V = 1.5 (assumption): Hours a month to review the automated plan and post. Time the first two monthly reviews.
- R = $75 (assumption): Loaded hourly cost of the FP&A or RevOps analyst. Salary plus benefits, divided by working hours.
- K = $25 (assumption): Monthly tool cost for the scheduled runs and the AI step. Your Zapier, n8n, or Clay plan share plus API usage, from current vendor pricing and your invoices; Google Sheets, the HRIS, and Slack are usually already paid for.

### Formulas

- Time saved per month: T - V = 6 - 1.5 = 4.5 hours
- Time saved per week: (T - V) / 4.33 = 4.5 / 4.33 = 1.04 hours, shown as 1 hour per week on this page
- Value of time saved per month: (T - V) x R = 4.5 x $75 = $337.50
- Break-even hours per month: K / R = $25 / $75 = 0.33 hours, so the runs cover their tool cost once they save 20 minutes a month

### Notes

- The math counts analyst time only. The larger effect is timing a hiring decision: in the worked example, three reqs opened by 2027-01-01 cover the year, and waiting a month means more hires for the same gap. What that is worth depends on your margins and hiring costs, so it is not added here.
- The back-test in step 8 is the accuracy check: if the plan misses actual bookings by more than your tolerance two quarters in a row, rebuild the ramp curve and attainment before trusting the hire-by date.
- Rerun the math after the first two months with your real review time V.

## Calculator

To estimate cost with the user's own numbers, point them to the Pipeline coverage calculator: https://gtmplaybooks.io/calculators/pipeline-coverage/. Capacity sets the ceiling; pipeline decides whether ramped reps reach it. Check the coverage your win rate requires and the new pipeline each rep must create per week.

## Template outline

Field names, thresholds, and message text are starting points to adapt.

~~~text
Workbook: Sales capacity plan FY2027 (rebuilt monthly; finance and the sales leader own it)

Tab roster (HRIS, refreshed weekly, past rows never edited):
  rep_id, role, quota_carrying, start_date, termination_date, status (active, approved hire, planned hire)

Tab attainment (CRM, closed won by owner by month, last 8 quarters):
  rep_id, month, bookings, quota, attainment = bookings / quota, tenure_month = months since start_date + 1

Tab ramp_curve:
  tenure_month, reps_behind_it, median_attainment, ramp_factor = median_attainment / ramped_median_attainment
  Rule: use a month only if reps_behind_it >= 5, else the labeled example curve
  ramped_productivity = monthly_quota x ramped_median_attainment

Tab attrition:
  trailing_12m_leavers / average_headcount = attrition_rate
  expected_leavers = attrition_rate x headcount; departure months chosen and labeled
  backfill_lag_days = median(replacement start - resignation date); recruiting_lead_days = median(req open to start)

Tab capacity (one column per month):
  RE(month) = SUM over reps on the team of ramp_factor(tenure_month)
  capacity(month) = RE(month) x ramped_productivity
  gap = target - SUM(capacity); gap_re_months = gap / ramped_productivity
  hire_adds(start_month) = SUM of ramp_factor over the months left in the plan
  hires_needed = fewest n with n x hire_adds(start) >= gap_re_months, start >= earliest_start
  req_open_by = start_date - recruiting_lead_days

Worked example (example assumptions, not benchmarks; plan year 2027, as of 2026-10-22):
  Target $5,400,000. Quota $50,000 a month per ramped rep, ramped attainment 80%
    -> ramped productivity $40,000 per ramped-rep month
  Ramp curve: month 1 0%, month 2 25%, month 3 50%, month 4 75%, month 5+ 100%
  Team: 8 ramped reps; rep I started 2026-11-01; rep J started 2026-12-01; approved hire starts 2027-03-01
  Attrition 20% a year x 10 reps = 2 leavers, placed at the end of March and the end of September
  Backfill lag 3 months: March leaver's backfill starts 2027-07-01; September leaver's starts in 2028

  Month   Ramped  Rep I  Rep J  Mar hire  Backfill   RE
  Jan       8     0.50   0.25     -         -       8.75
  Feb       8     0.75   0.50     -         -       9.25
  Mar       8     1.00   0.75    0.00       -       9.75
  Apr       7     1.00   1.00    0.25       -       9.25
  May       7     1.00   1.00    0.50       -       9.50
  Jun       7     1.00   1.00    0.75       -       9.75
  Jul       7     1.00   1.00    1.00      0.00    10.00
  Aug       7     1.00   1.00    1.00      0.25    10.25
  Sep       7     1.00   1.00    1.00      0.50    10.50
  Oct       6     1.00   1.00    1.00      0.75     9.75
  Nov       6     1.00   1.00    1.00      1.00    10.00
  Dec       6     1.00   1.00    1.00      1.00    10.00
  Total ramped-rep months                         116.75

  Capacity = 116.75 x $40,000 = $4,670,000 (headcount x quota would have said 10 x $600,000 = $6,000,000)
  Gap = $5,400,000 - $4,670,000 = $730,000 = 18.25 ramped-rep months
  One hire adds: Jan start 9.5, Feb 8.5, Mar 7.5, Apr 6.5, May 5.5 ramped-rep months
  Earliest start = 2026-10-22 + 90 days recruiting lead time = 2027-01-20 -> first full month February
  2 hires need 9.125 each: only a January start works, which is already too late
  3 hires need 6.083 each: latest start 2027-04-01 (6.5 each, 19.5 total = $780,000, $50,000 over the gap)
  Open the 3 reqs by 2027-04-01 - 90 days = 2027-01-01

  By quarter, target $1,350,000 each:
    Before hires: Q1 $1,110,000, Q2 $1,140,000, Q3 $1,230,000, Q4 $1,190,000 (gap $240k, $210k, $120k, $160k)
    With 3 April hires: Q1 $1,110,000, Q2 $1,230,000, Q3 $1,560,000, Q4 $1,550,000
    -> the year closes $50,000 over, but Q1 stays $240,000 short and Q2 $120,000 short; hiring cannot fix them

AI step (OpenAI API in a Clay column or a Sheets add-on; reads cells, does no math):
"You write a capacity flag for a sales leader and CFO. Use only these values: {{target}}, {{capacity}},
 {{gap}}, {{gap_re_months}}, {{quarter_gaps}}, {{hires_needed}}, {{latest_start}}, {{req_open_by}},
 {{earliest_start}}, {{assumptions}}. Write five lines: the gap; the quarters at risk; hires needed and the
 start-by and req-open-by dates; what hiring cannot fix; the assumption that moves the answer most.
 Copy numbers exactly as given. Do not calculate, round, or add numbers. End with: Capacity plan, not the forecast."
Check: every number in the flag must appear in the source cells, or the post is held for review.

Slack to #sales-leadership monthly:
"Capacity FY{{year}}: {{capacity}} vs target {{target}}, gap {{gap}} ({{gap_re_months}} ramped-rep months).
 Hires: {{hires_needed}} starting by {{latest_start}}, reqs open by {{req_open_by}}. Quarters hiring cannot fix: {{quarters}}.
 Sheet: {{sheet_url}}. Capacity plan, not the forecast."
~~~

## Guardrails

- Work only in the user's own accounts and workspaces, with their credentials.
- Confirm with the user before any step that writes to a CRM, sends email or messages, spends credits, or moves money.
- Treat every hours, cost, and threshold figure as a starting assumption and replace it with the user's numbers.
- Do not invent data, prices, or results. If a vendor price matters, check the vendor's current pricing page.

## Source

https://gtmplaybooks.io/playbooks/rep-ramp-capacity-plan/
