{"id":104,"date":"2026-08-21T18:42:52","date_gmt":"2026-08-21T18:42:52","guid":{"rendered":"http:\/\/localhost:8080\/smallhrtools\/blog\/?p=71"},"modified":"2026-08-21T18:42:52","modified_gmt":"2026-08-21T18:42:52","slug":"headcount-planning-model-startup","status":"publish","type":"post","link":"https:\/\/smallhrtools.com\/blog\/headcount-planning-model-startup\/","title":{"rendered":"Headcount Planning for a Growing Startup: A Quarterly Model You Can Copy"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\"><strong>Short answer:<\/strong> headcount planning has exactly two drivers &#8211; <strong>growth<\/strong> (new seats the plan requires) and <strong>backfill<\/strong> (seats attrition will empty) &#8211; and one timing rule that trips up every fast-growing team: <strong>open the requisition one time-to-fill ahead of the need, not when the need arrives.<\/strong> The model below is a quarterly spreadsheet you can copy, sized from demand drivers rather than gut feel, with the attrition and fill-time numbers wired in.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">The two-driver formula<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">For any team, next period&#8217;s hiring need is:<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p><strong>New hires = Growth hires + Backfill hires<\/strong><\/p><\/blockquote>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p>Growth hires = current headcount \u00d7 growth rate<\/p><\/blockquote>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p>Backfill hires = current headcount \u00d7 attrition rate<\/p><\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\">That&#8217;s the entire engine (it&#8217;s exactly what the <a href=\"https:\/\/smallhrtools.com\/tools\/headcount-planning-calculator\/\">Headcount Planning Calculator<\/a> computes per department). The sophistication isn&#8217;t in the formula &#8211; it&#8217;s in sizing the two rates from evidence instead of optimism.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Step 1 &#8211; Size growth from demand drivers, not vibes<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">&#8220;We&#8217;ll grow the team 20%&#8221; is a wish. Tie each team&#8217;s size to the thing that actually creates its work:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Team<\/th><th>Demand driver<\/th><th>Sizing ratio<\/th><\/tr><\/thead><tbody><tr><td>Customer support<\/td><td>Tickets \/ active customers<\/td><td>Agents = monthly tickets \u00f7 tickets-per-agent capacity<\/td><\/tr><tr><td>Sales<\/td><td>Pipeline \/ quota<\/td><td>Reps = revenue target \u00f7 quota per rep<\/td><\/tr><tr><td>Delivery \/ services<\/td><td>Billable demand<\/td><td>People = forecast billable hours \u00f7 hours per head (<a href=\"https:\/\/smallhrtools.com\/tools\/revenue-per-employee-calculator\/\">revenue-per-employee<\/a> sanity-checks this)<\/td><\/tr><tr><td>Engineering<\/td><td>Roadmap scope<\/td><td>Hardest to ratio &#8211; size from committed roadmap, not headcount envy<\/td><\/tr><tr><td>Ops \/ G&amp;A<\/td><td>Total company size<\/td><td>Ratio to total headcount (e.g. 1 ops per 25 staff)<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Now &#8220;20% growth&#8221; becomes &#8220;support handles 4,000 tickets\/month next quarter at 800 tickets\/agent capacity \u2192 5 agents needed \u2192 we have 4 \u2192 +1 growth hire.&#8221; That&#8217;s a number you can defend, and it self-corrects: if the ticket forecast is wrong, the headcount ask is visibly wrong too.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Step 2 &#8211; Size backfill from your real attrition rate<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Backfill is the seat you&#8217;ll refill because someone left &#8211; invisible in optimistic plans and the reason teams that &#8220;only planned to grow by 6&#8221; end up hiring 11. Use your actual <a href=\"https:\/\/smallhrtools.com\/tools\/employee-turnover-calculator\/\">turnover rate<\/a>, not a benchmark, and segment it: a support team at 25% attrition and an ops team at 8% need very different backfill provisions even at the same headcount.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Two refinements:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>Use regrettable + non-regrettable both<\/strong> for backfill (the seat empties either way), but plan the <em>replacement quality<\/em> differently.<\/li><li><strong>Front-load known departures<\/strong> &#8211; a notice already given, a maternity leave, a fixed-term end &#8211; into the specific quarter, rather than smearing the annual rate evenly.<\/li><\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Step 3 &#8211; The worked model: 40-person company, one year<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Current headcount 40, split across departments. Blended growth target ~15%, blended attrition ~13%. Partial hires are <strong>rounded up<\/strong> &#8211; you can&#8217;t half-staff a need, and under-planning a seat is more expensive than over-planning one.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Department<\/th><th>Current<\/th><th>Growth rate<\/th><th>Growth hires<\/th><th>Attrition<\/th><th>Backfill hires<\/th><th>Total hires<\/th><th>End headcount<\/th><\/tr><\/thead><tbody><tr><td>Support<\/td><td>12<\/td><td>20%<\/td><td>2.4 \u2192 3<\/td><td>25%<\/td><td>3.0 \u2192 3<\/td><td>6<\/td><td>15<\/td><\/tr><tr><td>Sales<\/td><td>8<\/td><td>25%<\/td><td>2.0 \u2192 2<\/td><td>20%<\/td><td>1.6 \u2192 2<\/td><td>4<\/td><td>10<\/td><\/tr><tr><td>Delivery<\/td><td>10<\/td><td>10%<\/td><td>1.0 \u2192 1<\/td><td>12%<\/td><td>1.2 \u2192 2<\/td><td>3<\/td><td>11<\/td><\/tr><tr><td>Engineering<\/td><td>6<\/td><td>15%<\/td><td>0.9 \u2192 1<\/td><td>8%<\/td><td>0.5 \u2192 1<\/td><td>2<\/td><td>7<\/td><\/tr><tr><td>Ops \/ G&amp;A<\/td><td>4<\/td><td>0%<\/td><td>0<\/td><td>10%<\/td><td>0.4 \u2192 1<\/td><td>1<\/td><td>4<\/td><\/tr><tr><td><strong>Total<\/strong><\/td><td><strong>40<\/strong><\/td><td><\/td><td><strong>7<\/strong><\/td><td><\/td><td><strong>9<\/strong><\/td><td><strong>16<\/strong><\/td><td><strong>47<\/strong><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">The headline every founder should sit with: to grow <strong>net +7<\/strong> (40\u219247), you must <strong>hire 16<\/strong> &#8211; because backfill <em>more than doubles<\/em> the recruiting workload. Plan, budget, and staff recruiting for the <em>gross<\/em> number, not the net. (At a <a href=\"https:\/\/smallhrtools.com\/blog\/cost-per-hire-formula-shrm-worked-example\/\">cost per hire<\/a> of ~$4,500, that&#8217;s a ~$72,000 recruiting spend line the &#8220;we&#8217;re adding 7 people&#8221; framing completely hides.)<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Step 4 &#8211; The timing rule (where plans meet reality)<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">A headcount plan that says <em>what<\/em> to hire but not <em>when to start<\/em> is half a plan. The rule:<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p><strong>Open the requisition (time-to-fill) before the seat is needed.<\/strong><\/p><\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\">If your <a href=\"https:\/\/smallhrtools.com\/blog\/time-to-fill-vs-time-to-hire\/\">time to fill<\/a> for an engineer is 55 days and you need them productive for a Q3 project launch on 1 July, the req opens in <strong>early May<\/strong>, not July. Build a quarterly roadmap that back-dates every hire by its role&#8217;s fill time:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Need-productive date<\/th><th>Role<\/th><th>Fill time<\/th><th>Open req by<\/th><th>Ramp buffer<\/th><\/tr><\/thead><tbody><tr><td>1 Jul<\/td><td>Senior engineer<\/td><td>55 days<\/td><td>~1 May<\/td><td>+90 days to full productivity<\/td><\/tr><tr><td>1 Aug<\/td><td>Support agent \u00d72<\/td><td>25 days<\/td><td>~5 Jul<\/td><td>+30 days ramp<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Add the ramp period on top for anything where &#8220;productive&#8221; matters (see the <a href=\"https:\/\/smallhrtools.com\/blog\/90-day-onboarding-plan-template\/\">90-day onboarding<\/a> curve) &#8211; a role needed <em>productive<\/em> in July that also needs 90 days to ramp really has an April req date. This is why fast-growing teams feel permanently behind on hiring: they plan headcount by quarter but forget that each hire&#8217;s clock started a quarter earlier.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Step 5 &#8211; Stress-test before you commit<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Three checks before the plan goes to the board:<\/p>\n\n\n\n<ol class=\"wp-block-list\"><li><strong>Recruiter capacity:<\/strong> 16 hires \u00f7 your recruiter&#8217;s throughput &#8211; can they actually run that many searches? If not, the plan needs a recruiter before it needs anyone else (<a href=\"https:\/\/smallhrtools.com\/tools\/recruiter-capacity-calculator\/\">Recruiter Capacity Calculator<\/a>).<\/li><li><strong>Revenue per head:<\/strong> does the end-state 47 still clear your <a href=\"https:\/\/smallhrtools.com\/tools\/revenue-per-employee-calculator\/\">revenue-per-employee<\/a> floor, or are you hiring ahead of revenue? A dropping ratio across the plan is the early-warning that you&#8217;re over-hiring.<\/li><li><strong>The downside case:<\/strong> re-run with growth halved and attrition +5 points. If that scenario breaks cash, the plan is too aggressive &#8211; build in requisition &#8220;trigger dates&#8221; that only fire if the demand driver actually materialises.<\/li><\/ol>\n\n\n\n<h2 class=\"wp-block-heading\">FAQ<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Quarterly or annual planning?<\/strong> Plan the year, revise quarterly. The demand drivers (pipeline, tickets, roadmap) move every quarter, and a fixed annual plan is stale by Q2 in a growing company.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>How do I handle a hiring freeze mid-plan?<\/strong> Freeze <em>growth<\/em> hires; think hard before freezing <em>backfill<\/em>, because an unfilled backfill seat quietly overloads the remaining team and accelerates the next departure &#8211; the freeze that saves one salary can trigger two exits.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>What attrition rate should I assume for a brand-new team with no history?<\/strong> Start from your industry benchmark (the <a href=\"https:\/\/smallhrtools.com\/tools\/headcount-planning-calculator\/\">tool page<\/a> lists them), then correct toward your actual number as soon as you have two quarters of data. New teams often run <em>higher<\/em> early attrition (fit mismatches surface fast).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Does this work below 20 people?<\/strong> Yes, and the timing rule matters more &#8211; at 12 people one unplanned departure is 8% of the company, and a two-month fill gap is genuinely painful. Small teams should hold a slightly larger backfill buffer, not a smaller one.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<p class=\"wp-block-paragraph\"><em>Calculators referenced: <a href=\"https:\/\/smallhrtools.com\/tools\/headcount-planning-calculator\/\">Headcount Planning<\/a> \u00b7 <a href=\"https:\/\/smallhrtools.com\/tools\/employee-turnover-calculator\/\">Employee Turnover<\/a> \u00b7 <a href=\"https:\/\/smallhrtools.com\/tools\/recruiter-capacity-calculator\/\">Recruiter Capacity<\/a> \u00b7 <a href=\"https:\/\/smallhrtools.com\/tools\/time-to-fill-calculator\/\">Time to Fill<\/a> \u00b7 <a href=\"https:\/\/smallhrtools.com\/tools\/revenue-per-employee-calculator\/\">Revenue Per Employee<\/a> \u00b7 <a href=\"https:\/\/smallhrtools.com\/tools\/cost-per-hire-calculator\/\">Cost Per Hire<\/a>. Size the drivers from your own data; benchmarks are only the starting estimate before your numbers exist.<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>A copyable quarterly headcount model: growth hires + backfill for attrition, demand-driver sizing, and how time-to-fill decides when you open reqs.<\/p>\n","protected":false},"author":1,"featured_media":115,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-104","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-guides"],"_links":{"self":[{"href":"https:\/\/smallhrtools.com\/blog\/wp-json\/wp\/v2\/posts\/104","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/smallhrtools.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/smallhrtools.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/smallhrtools.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/smallhrtools.com\/blog\/wp-json\/wp\/v2\/comments?post=104"}],"version-history":[{"count":1,"href":"https:\/\/smallhrtools.com\/blog\/wp-json\/wp\/v2\/posts\/104\/revisions"}],"predecessor-version":[{"id":114,"href":"https:\/\/smallhrtools.com\/blog\/wp-json\/wp\/v2\/posts\/104\/revisions\/114"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/smallhrtools.com\/blog\/wp-json\/wp\/v2\/media\/115"}],"wp:attachment":[{"href":"https:\/\/smallhrtools.com\/blog\/wp-json\/wp\/v2\/media?parent=104"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/smallhrtools.com\/blog\/wp-json\/wp\/v2\/categories?post=104"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/smallhrtools.com\/blog\/wp-json\/wp\/v2\/tags?post=104"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}