GTM Operations
Your $14.4M Capacity Plan Is Really $5.1M
Twelve reps times $1.2M quota is a ceiling nobody hits. Ramp, timing, attainment, and attrition cut it to $5.1M. Here is the five-step build that turns the ramp assumption into a query against your own quota data.
· 11 min read
A $14.4M plan delivers $8M and everyone acts surprised. Finance built it the way capacity plans always get built: 12 new reps, each carrying $1.2M, so $14.4M of new capacity, board approved. Then reality showed up. The reps hired late, ramped for two quarters at partial quota, and three of the twelve churned before producing a dollar. Nobody should have been surprised, because the plan multiplied headcount by full quota and skipped every driver in between.
For years the answer to a missed capacity plan was to blame the reps. Attainment came in soft, so the reps must be weak, so we coach harder and set quota higher next year. That gets it backwards. The reps did not miss a real plan; they were handed a ceiling wearing a capacity label. The most overlooked cause of a miss is not rep quality, it is a plan that assumed a team that does not exist yet and will not fully exist for two quarters after you hire it.
Watch what happens to that $14.4M once each driver goes to work on it. The naive ceiling is a dense field of dollars. Ramp, timing, attainment, and attrition each dissolve a share of it, and what survives is the number you can defend to the board. Step through it, then I will show you the math, the query against your own quota data, and the build order under each stage.
Capacity planning gets filed under Finance because it touches the headcount budget. That is the wrong owner. Finance knows what a rep costs. RevOps knows whether a rep can carry the number, because RevOps holds the ramp curves, the historical attainment, the attrition rate, and the per-rep-per-quarter quota data. The budget is a Finance question. The capacity is a RevOps question, and pretending otherwise is how you approve plans that were never going to work.
The plan is a product of drivers, not one multiplication
Reps times quota is not a capacity model. It is a ceiling nobody hits. The real model chains four drivers, and each one discounts the ceiling.
| Driver | What it captures | Effect on the ceiling |
|---|---|---|
| Headcount, timed | when reps start selling, not the budget date | fewer productive rep-quarters |
| Ramp | partial quota during the ramp period | discount early quarters |
| Attainment | historical % of quota hit | discount every quarter |
| Attrition | reps who leave before producing | remove capacity entirely |
Run the same twelve reps through the drivers and the number moves a lot.
Naive plan: 12 reps x $1,200,000 = $14,400,000
Driver-based:
hiring lag (avg start 5 weeks late) -$1,100,000
ramp (2 quarters at 50% quota per new rep) -$3,600,000
attainment (historical 82% of quota) -$1,700,000
attrition (3 of 12 leave before producing) -$2,900,000
= defensible capacity = $5,100,000
The gap between $14.4M and $5.1M measures the four things the naive plan ignored, not pessimism. Those four cuts are the four dissolve stages above, in order: timing and ramp take the number to $9.7M, attainment to $8.0M, attrition to $5.1M. Finance cannot build this chain because Finance does not hold ramp curves or attainment history. RevOps does.
Notice the order the drivers hit in, because it changes the size of each discount. Ramp and attainment stack multiplicatively, not additively. A rep at 50 percent of quota during ramp who then hits 82 percent of quota when fully productive is not losing 18 percent and 50 percent as two separate subtractions. The ramp quarters are discounted first, then whatever production survives is discounted again by attainment. Model those as two independent haircuts on the same base and you will overstate capacity, because you double-counted the healthy quarters. The chain matters, and getting it right is exactly what a headcount spreadsheet built by cost center never does.
Watch the ceiling fall driver by driver. Each bar is what survives after applying the next discount:
View as table
| Item | Value |
|---|---|
| Naive (12 × $1.2M) | 14.4M |
| After hiring lag | 13.3M |
| After ramp | 9.7M |
| After attainment | 8M |
| After attrition | 5.1M |
The ramp data already exists, and it is per rep per quarter
The reason this usually stays a Finance spreadsheet is a belief that the ramp and attainment inputs are guesses. They are not. In our org the quota object holds a row per rep per quarter, flagged for whether it is a ramp quarter, with the attainment percent stored raw. That is the whole driver model sitting in a table nobody queries for planning.
A ramp quarter carries a lower quota by design, and the flag tells you which quarters those are. So instead of assuming “50 percent for two quarters” you can pull the actual ramped quota for every rep who has ramped in the last two years and see the real curve: quarter one attainment, quarter two, quarter three, when they cross into full productivity. Pull it straight from the quota object:
SELECT Owner.Name, Fiscal_Quarter__c, Is_Ramp_Quarter__c,
Quota_Amount__c, Attainment_Pct__c
FROM Quota__c
WHERE Fiscal_Year__c = 'FY2026'
ORDER BY Owner.Name, Fiscal_Quarter__c
Group the ramp quarters by rep tenure and you get the real ramp curve for your org: how attainment climbs from the first quarter a rep carries a bag to the quarter they hit full productivity. The raw attainment percent gives you the discount to apply to fully-ramped reps too. The model stops being assumptions and becomes a query.
The curve almost never matches the assumption in the plan, and the direction of the error is predictable. Plans tend to assume reps ramp faster than they do, because the person writing the plan is optimistic about hiring quality and onboarding. The real curve, pulled from your own quota history, usually shows a slower climb: a first quarter closer to 25 percent than 50 percent, a second quarter that has not caught up, and full productivity landing in the third or fourth quarter rather than the second. That one correction, replacing the assumed curve with the measured one, is often the single largest swing between the naive plan and the defensible one. It is also the least arguable, because it is your own reps’ history, not a benchmark from someone else’s business.
Attainment is the driver people most want to wave away, and it is the one with the hardest number attached. Across reps, average quota attainment ran 42.7 percent in Q2 2025 (RepVue). That is not a broken-team number; it is the category. Quota is set as a stretch, most reps land under it, and a handful of overperformers pull the average up while the median sits lower. If your capacity model assumes reps hit 100 percent of quota, you assumed away more than half the gap between plan and actual before accounting for ramp or attrition.
The output is a hiring plan with a delivery curve
The point of doing this is not a smaller number to depress the board. It is a plan that says when the capacity lands, so hiring can be timed to hit the number instead of hitting the headcount budget.
This timing effect is where the driver model changes a decision rather than a number. A board that sees only the annual total approves twelve hires and assumes the money shows up inside the year. The delivery curve says otherwise: hire in the back half and most of the production lands in the following fiscal year, after two ramp quarters have burned. If the plan needs the dollars this year, the model tells you to pull the hires forward by a quarter or two, which is a specific, fundable action, not a vague plea to hire faster.
If ramp is two quarters, a rep hired in Q3 does not carry full weight until Q1 of next year. So a plan that needs $14M of production in the back half cannot be built with back-half hires. The driver model surfaces that immediately: it shows the delivery curve, not only the annual total, and the delivery curve is what tells you to pull hiring forward or accept a lower number. That is a RevOps decision informed by RevOps data, handed to Finance to fund.
Here is how I build it: the five-step order
This is the model I stand up every planning cycle. Five steps, each one replacing an assumption in the naive plan with a number from your own system. Build it in order, because each step feeds the next.
- 1
1. Pull the real ramp curve
Query the quota object for every ramp quarter in the last two years. Group by rep tenure. Plot attainment from first carrying quarter to full productivity. This replaces the "50% for two quarters" guess with your org actual curve.
- 2
2. Time the headcount
Use actual start dates, or the User.CreatedDate proxy disclosed as such. A rep does not start on the budget date. Convert the hiring plan into productive rep-quarters, not headcount.
- 3
3. Apply the attainment discount
Apply historical attainment (around 42.7% average per RepVue, higher for fully-ramped reps) to every quarter. Pull it from the raw attainment percent on the quota object, not a target.
- 4
4. Remove attrition
Remove the reps who statistically leave before producing. Use your own trailing attrition rate. This is capacity that never lands, not capacity that lands late.
- 5
5. Output the delivery curve
Output capacity by quarter, not one annual total. The curve is what tells Finance when to fund hiring so production lands when the plan needs it, instead of two quarters late.
Steps one through four are the four dissolve stages from the top of this piece, and they reconcile to the same numbers: the ramp curve and timing take $14.4M to $9.7M, the attainment discount to $8.0M, the attrition line to $5.1M. Step five is the deliverable that a headcount total can never be, because it tells Finance not only how much but when.
The two plans, side by side
| Finance headcount plan | RevOps capacity model | |
|---|---|---|
| Inputs | Heads × full quota | Timed heads, ramp, attainment, attrition |
| Ramp | Ignored, full quota day one | Real curve from the quota object |
| Output | One annual total: $14.4M | Delivery curve, defensible $5.1M |
| Hiring signal | Hit the headcount budget | Pull hires forward to land the number |
| Who can build it | Finance, from the budget | RevOps, from the CRM and quota data |
Bring that curve to the next planning cycle and own the capacity number, because Finance cannot build it and the board is relying on someone who can. Capacity is the supply side of the same equation forecasting works on the demand side; for how attainment and coverage feed a number a CFO will sign, see the forecast you can defend, and for the ritual that keeps the CRM number and the board number equal month to month, see the forecast handshake.
Keep reading
One email. Every week.
One email a week: an operating problem I solved or botched, with the model, the numbers, and what I would change. No roundups, no theory, unsubscribe whenever it stops being useful.
The newsletter opens soon.
Connect a provider in src/config.ts