GTM Playbooks
Finance/FP&AIntermediateLast reviewed

Plan Sales Capacity with Ramp and Attrition, Not Headcount

The 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.

Implementation steps

  1. 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. 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. 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. 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. 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. 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. 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. 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 (all assumptions)

Replace each value with your own figure.

  • THours a month to rebuild the capacity plan by hand (HRIS and CRM exports, tenure math, ramp, attrition, write-up)6AssumptionTime the next manual headcount or capacity review from export to sent summary.
  • VHours a month to review the automated plan and post1.5AssumptionTime the first two monthly reviews.
  • RLoaded hourly cost of the FP&A or RevOps analyst$75AssumptionSalary plus benefits, divided by working hours.
  • KMonthly tool cost for the scheduled runs and the AI step$25AssumptionYour 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 monthT - 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 monthK / R
$25 / $75 = 0.33 hours, so the runs cover their tool cost once they save 20 minutes a month
  • 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.

Template outline

The structure to recreate in your own workspace. Field names and thresholds are starting points.

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."

Common questions

Why not plan sales capacity as headcount times quota?
Because it assumes every rep is fully ramped all year and nobody leaves. In the worked example, headcount x quota says $6,000,000, while ramped-rep equivalents give $4,670,000 against a $5,400,000 target, a $730,000 gap.
Where does the ramp curve come 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, using a month only when at least 5 reps are behind it. Otherwise the example curve is used and labeled as an assumption.
How is the hire-by date worked out?
Find the fewest hires, starting no earlier than today plus recruiting lead time, whose ramped months cover the gap, then the latest start month that still works; req-open-by = start date - lead time. In the worked example, 3 hires starting by 2027-04-01 cover the year, so the reqs open by 2027-01-01.
Can hiring fix every quarter?
No. In the worked example the year closes $50,000 over with 3 April hires, but Q1 stays $240,000 short and Q2 $120,000 short. Those quarters need pipeline, win rate, or target changes instead.

Keep going

View all Finance/FP&A

Need help implementing a playbook?

Our team builds custom Clay workflows and AI automations for revenue teams.

Get it built for you