The Peer Spans-and-Layers Playbook: Public Profiles to a Dated Range
Starting from one peer and one function, produce dated low-high ranges for manager share, IC:manager, and layers, plus your own HRIS figures restated on the same rules.
Key takeaways
- In Refolk's index, US profiles with software engineering in the headline split 42,622 at Director or Manager seniority to 46,525 at Senior or Entry, a raw ratio of 1.09 against the roughly 5 to 6 implied by Bain's average span of 6 to 7.
- Raw public-profile counts over-represent managers by roughly 5x in that illustrative comparison, so every peer looks top-heavy unless you calibrate a coverage factor separately for each band.
- Only 38% of sampled US sales manager-band titles in Refolk's index were unambiguous people managers, against 93% in software engineering, so title-coding rules have to be written per function.
- At an observed manager share of 15%, a Wilson 95% range on 100 coded profiles gives IC:manager of 3.3 to 9.7, which covers both Bain's average and best-in-class bands; around 400 coded profiles narrows it to 4.3 to 7.5.
- Average span equals (N-1)/M, roughly IC:manager plus 1, so comparing a peer's announced IC:manager ratio with a Bain-style span creates a phantom gap of about one report per manager.
- Restate your own HRIS figures using title coding, the same function boundary, and the same snapshot date, not the HRIS 'manages others' flag, or the side-by-side compares two different counting systems.
This playbook is for strategy, research, and talent-intelligence analysts who have been asked how lean one of their functions is next to a named peer, and who have public profiles rather than the peer's org chart. It takes you from one peer and one function to a dated estimate of people-manager share, IC-to-manager ratio, and layers from function head to frontline, each as a low-high range, with your own HRIS figures restated on identical counting rules. Plan on six to seven working days per peer-function pair; the stage durations below are planning estimates, not measured times.
What does a peer spans-and-layers benchmark actually measure?
A peer benchmark produces three numbers for one function at one date: the share of people who manage people, the number of individual contributors per manager, and the number of distinct reporting levels from function head to frontline. Each needs a fixed definition before any external org design benchmarking from public data can mean anything.
Define the terms once and use them everywhere:
- People manager: someone with at least one direct report. A title containing "Manager" is not enough.
- Individual contributor (IC): anyone in the function who is not a people manager.
- Manager share (p): people managers divided by total function headcount, M / N.
- IC:manager ratio: ICs per manager, which is (1 - p) / p.
- Average span: (N - 1) / M. Because managers report to managers, this is roughly IC:manager + 1.
- Layers: the count of distinct reporting levels between the top of the unit and the frontline.
The last identity matters more than it looks. Peers announce IC:manager figures; consultancies publish spans. Amazon's CEO asked each s-team organisation "to increase the ratio of individual contributors to managers by at least 15%", which is an IC:manager target, while Bain's benchmarks are spans. Put one beside the other without converting and you invent a gap of about one report per manager.
What the published benchmarks say
These are the context lines for your chart. None of them is function-specific with a stated sample size, and that gap is why you are building your own.
| Source | Avg span | Layers | Sample |
|---|---|---|---|
| Bain average | 6 to 7 | 8 to 9 | 125+ companies |
| Bain best in class | 10 to 15 | 7 or fewer | same |
| Bain skills-based (engineers) | 6 to 8 | n/a | not stated |
| Gallup US median | 6 | n/a | n=8,795 |
| McKinsey player/coach to coordinator | 3 to 5, up to 15+ | n/a | not stated |
Three limits to state in any deck that uses this table:
- Bain's benchmark is old, though still widely cited. Treat it as a reference frame, not a current norm.
- Bain's layer counts are company-wide. Your function-level count, from function head to frontline, will be smaller and cannot be set against 8 to 9 directly.
- Bain's function guidance is by work type: skills-based roles such as engineers at six to eight, task-based roles such as call-centre supervisors at 15 or more. Support teams may sit in either bucket depending on the work, so do not assume.
For calibration of expectations: Bain reports that companies in its database improved spans by 24 percent and cut layers by 14 percent on average, Intel moved manager spans from six or seven to eight or nine, and AT&T cut management layers by half to seven. Those are the sizes of change leadership will have in mind when they ask "how lean is the peer".
Why do raw public profiles make every peer look top-heavy?
Managers are heavily over-represented on public profiles, so a raw count of manager titles against IC titles understates span by a large factor. In Refolk's index, the raw IC-to-manager-band ratio for US software engineering is 1.09, against the roughly 5 to 6 implied by Bain's average span.
The mechanism is how people write headlines. Managers tend to write their function into the title ("Director of Software Engineering"), while ICs often do not. A keyword search on the function name therefore catches a larger fraction of managers than of ICs. The table below shows the raw cohorts and how clean the manager band actually is.
| Cohort (US, headline keyword) | Profiles | Title check on visible sample |
|---|---|---|
| Software engineering, manager bands | 42,622 | 13 of 14 unambiguous managers (93%) |
| Software engineering, Senior/Entry bands | 46,525 | 4 of 14 are executives (29% leakage) |
| Sales, manager bands | 1,152,823 | 5 of 13 unambiguous managers (38%) |
Read this table with its limits in view. The 5x figure is illustrative: it is confounded by headline-keyword matching, and the title samples are 25 per query with only the top 10 visible. What it proves is direction and rough magnitude: uncorrected, any peer will look top-heavy. What it cannot give you is a correction factor to apply. That has to be calibrated locally (step 5).
External evidence points the same way without quantifying it. A World Bank and LinkedIn methodology study found that young, skilled people with at least a bachelor's degree are more likely to be on LinkedIn than those with less education. A separate study of job-ad data found a significantly higher share of management, computer, and mathematical occupations than the labour market as a whole; that is about ads, not profiles, so treat it as an analogy. No published coverage rate by seniority exists.
Which counting rules must be fixed before collecting anything?
Write a one-page rule sheet covering the manager definition, the function boundary, contractor treatment, and the snapshot date, and get it signed by the analyst and an HRBP before the first profile is pulled. Rules chosen after you have seen the numbers will drift toward the answer leadership expects.
The most common HRIS convention is to count anyone with at least one direct report as a manager. Use it, because it is the definition you can apply to both sides. On contractors and vendors there is no published counting standard for external spans benchmarks, so the choice is yours; what matters is that it is written down and applied identically to the peer column and your own.
Peer: Function: Snapshot date (pull date for peer, effective date for HRIS): Prepared by (analyst): Signed off by (HRBP): 1. People manager = at least one direct report, inferred from title coding (Appendix B) 2. Function boundary = titles in Appendix A include list; everything on the exclude list is out Adjacent roles decided: TPM [in/out], SRE [in/out], enablement/ops [in/out] 3. Contractors and vendors = [in/out]; profiles where status cannot be read = [rule] 4. Stale profiles = drop if no update in more than [N] months (state threshold; it is a judgement call) 5. Layers = distinct rungs from function head to frontline; a rung needs [N] evidencing profiles 6. Sample floor = do not publish manager share or IC:manager below [N] coded profiles 7. Coverage factor source = [own firm vs HRIS / UK organogram], calibrated per band 8. Second-coder sample = 10% of rows; agreement recorded in the coding log
Fill every line before pulling profiles; attach the include/exclude list and the coding rule as appendices.
What a defensible peer figure rests on
- Dated rule sheetManager definition, contractors, snapshot date, signed before collection
- Function boundaryInclude and exclude title list for adjacent roles
- Title codingPeople manager, ambiguous, or IC, with a second coder on 10%
- Per-band coverage correctionObserved-to-true factors calibrated on a known structure
- Range and floorWilson interval, IC:manager conversion, no publication below the floor
The procedure, step by step
Run these eight steps in order for each peer-function pair; steps 1 and 2 are shared across peers if you benchmark several against the same function.
Peer spans-and-layers estimate
- Fix the counting rulesWrite and sign the one-page rule sheet with the HRBP: manager means at least one direct report, contractors in or out, snapshot date. About half a day.
- Define the function boundaryProduce an include and exclude title list, deciding adjacent roles such as TPMs and SRE for engineering. About two hours.
- Pull and date-stamp current profilesPull current profiles for the peer and function, deduplicate to one row per person, and stamp the pull date and each profile's last-activity date. About one day.
- Code every titleCode each title as people manager, ambiguous, or IC with the function's token rule, hand-review the ambiguous list, and have a second coder do 10% with agreement recorded. One to two days.
- Apply a per-band coverage correctionCalibrate observed-to-true headcount per band on your own firm against HRIS or on a UK organogram, then divide each peer band count by its factor. About one day.
- Build the layer ladderOrder coded titles from function head to frontline, count distinct rungs, and record the evidence count on each rung. About half a day.
- Compute share, IC:manager, and the rangeCompute corrected manager share, convert with (1-p)/p, attach a Wilson 95% range, and stop if below the floor. About half a day.
- Restate your HRIS on the same rulesRebuild your own figures by title coding, same boundary, same date, not the manages-others flag. About one day for the HRIS analyst.
There is a genuine disagreement about direction. Bain works top-down from leadership to the frontline. A practitioner deck argues the opposite: start with the frontline "doer" layer, work out what they do and how many managers there should be above them, and work up. For an external estimate I combine them: build the ladder top-down, because senior rungs are the best-evidenced on public profiles, but size the function bottom-up, because the frontline is where the headcount and the coverage gap both live.
How do you code titles as people manager, ambiguous, or IC?
Code from the title text itself with a rule written for that function, send every "Manager" title without a team noun to an ambiguous list for hand review, and never use a platform's automated seniority label as a proxy for managing people. Title coding is where most of the error enters, and no one has published an error rate for title-based manager classification checked against known org charts.
| Title pattern | Default code | When it lies |
|---|---|---|
| Engineering Manager, Director of Engineering, Support Manager | People manager | Rarely in engineering (13 of 14 clean in the sample) |
| Product Manager, Account Manager | IC | IC product managers have no direct reports; only a "Group" or "Director" prefix changes that |
| Program Manager | Ambiguous | At Microsoft, read it as Product Manager; one open-source classifier mapping all program managers to product logged it as a bug |
| Tech Lead, Team Lead | Ambiguous | Leads may or may not carry reports; review each one |
| Managing Director, VP (banking, sales) | Ambiguous | Often a rank, not a span; check the industry's grade convention |
Three coding rules carry most of the weight:
- Code the head noun, not any token. Refolk's sales sample included "Sales Enablement Product Manager" and "Executive Sales Assistant to Director of Sales". Both contain manager-sounding words; neither is a people manager.
- Write the rule per function. In Refolk's index, 93% of sampled engineering manager-band titles were unambiguous people managers, against 38% in sales. Sales titles encode territory and rank rather than reports, so a rule tuned on engineering will badly inflate sales manager share.
- Recode from the title, ignoring seniority bands. The automated Senior/Entry band for US software engineering contained a CTO, a VP of Engineering, two of them in one case, and a Head of Engineering. Seniority describes level, not reports.
Have a second coder independently code 10% of rows and log the agreement rate. No published threshold exists for acceptable agreement, so set yours in the rule sheet and report it in the appendix; a steering committee will trust a number with a visible agreement rate more than one without.
Much of the ambiguity can be removed at retrieval rather than at coding. Asking Refolk in plain English for "sales managers with direct reports, not account managers, at HubSpot in North America" returns people rather than keyword hits, which shrinks the ambiguous pile you have to hand-review. You still code every row, but you start from a cleaner list.
How do you correct for coverage and count layers?
Calibrate a ratio of observed public profiles to true headcount for each band on an organisation whose structure you know, divide each peer band count by its own factor, then build the layer ladder from coded titles with an evidence count on every rung. Without the correction, the manager-heavy skew described above flows straight into the peer's span.
Calibrating the coverage factor
You need a known structure to calibrate against. Two work:
- Your own firm. Run steps 3 and 4 on your own company's public profiles for the same function, then compare each band with your HRIS. This is the best source because it is the same function and a similar labour market.
- UK government organograms. UK departments publish junior data in CSV format giving the number of full-time-equivalent junior staff reporting to each senior post, a series that started in October 2010 and is still released. Profiles of a department's staff can be set against it.
For each band (at minimum, people manager and IC; better, each rung), compute:
- factor for band = observed profiles in band / true headcount in band
- corrected peer band count = observed peer profiles in band / factor for band
If your two calibration sources give different factors, keep both. Run the estimate once with each and carry the outer bounds into the published range. A single point factor hides the largest uncertainty in the whole exercise.
Building the ladder
Order the coded people-manager titles from function head down to frontline and count distinct rungs. Note how many profiles support each rung. Report layers as a low-high pair: the low end counts only well-evidenced rungs, the high end includes rungs supported by one or two profiles.
Hold three limits in view:
- Nobody has published a procedure for this or measured how far a title-ladder count diverges from true reporting depth. The UK organogram files let you test that divergence yourself; do it once and note the result in the method appendix.
- Rank titles add phantom rungs. A sales ladder that runs Account Executive, Senior AE, Regional VP, Managing Director may be one reporting level dressed in four titles.
- Use the current snapshot only. Retro-edits are concentrated in tech and among workers under 30, so a historical ladder reconstructed from profiles drifts more in engineering than elsewhere.
For orientation, peers in one people-analytics practitioner forum reported company-wide layer counts of 8, 9, and 12. Your function-level count should be well below those, and if it is not, suspect rank titles before you suspect bureaucracy.
How many coded profiles before you can publish?
Treat roughly 400 coded profiles in the function as the floor for publishing manager share and IC:manager. Below it, the 95% range on IC:manager is wide enough to cover both Bain's average and best-in-class companies, so the number cannot answer the question leadership asked.
The method is a Wilson interval on manager share, converted to IC:manager with (1 - p) / p. Wilson behaves better than the normal approximation when manager counts are under 20, which is exactly where small peers land: 100 coded profiles at a 15% share is only 15 managers. The table shows how the range tightens around a point estimate of 5.7 ICs per manager.
| Coded profiles (n) | Manager share range | IC:manager range |
|---|---|---|
| 50 | 7.6% to 27.4% | 2.7 to 12.1 |
| 100 | 9.3% to 23.3% | 3.3 to 9.7 |
| 400 | 11.8% to 18.8% | 4.3 to 7.5 |
All values are computed with the standard formula at an observed share of 15%; neither the floor nor the method is a sourced industry benchmark. Use n = coded profiles, the actual evidence, rather than the corrected headcount when you compute the interval; inflating n with corrected counts makes the range look tighter than the evidence allows.
Publish, qualify, or hold
How this goes wrong: failure modes and false positives
Most failed peer benchmarks are wrong in the same direction: they make the peer look more manager-heavy than it is, because manager-sounding titles, rank titles, and profile coverage all push manager share up. Check each mode below before a number leaves your desk.
- The "Manager" token. Product, Account, and Program Managers get coded as people managers and inflate manager share. Looks like: a sales function with a span near 2. Check: hand-review every "Manager" title without a team noun; only 38% of sampled sales manager-band titles in Refolk's index were unambiguous.
- Rank titles. "Managing Director" and "VP" in banking and many sales orgs are ranks, not spans; three MDs appeared in Refolk's sales sample. Looks like: extra layers and a top-heavy ratio. Check: look up the industry's grade convention and code ranks as ambiguous until confirmed.
- Vendor seniority labels. The automated Senior band for software engineering held CTO and VP titles, a 29% executive leakage in the visible sample. Looks like: ICs counted as executives or the reverse. Check: recode every row from the title itself.
- Coverage skew. Raw profile ratios understate span by roughly 5x in the illustrative comparison. Looks like: every peer, and your own firm, looks top-heavy. Check: apply a calibrated per-band factor; if your own uncorrected profile ratio looks absurd against your HRIS, the peer's does too.
- Stale and edited profiles. Leavers still show as current. In NBER working paper 35546, roughly one in five established US users goes back and edits the title or description of a job they have already left, rising to 38.1% among users under 30. Looks like: a peer that still "has" managers it let go. Check: drop profiles with no update in more than 12 months; that threshold is a judgement call, not a sourced standard, so state it.
- Span versus IC:manager. Span is roughly IC:manager + 1. Looks like: a peer's announced ratio sitting one below Bain's span and read as "leaner than average". Check: convert everything to one metric before charting.
- Small n. At 100 coded profiles the IC:manager range is 3.3 to 9.7, which covers Bain's average and best-in-class values at once. Looks like: a confident point estimate on a thin sample. Check: apply the floor and show the range, never the point alone.
- HRIS flag versus title coding. A "manages others" flag counts player/coaches that title coding misses. Looks like: your own firm appears more manager-heavy than the peer for reasons of method. Check: restate HRIS by titles (next section).
A peer that looks dramatically top-heavy is usually a coding problem before it is a finding.
Restating your own numbers and keeping the benchmark current
Rebuild your own column from HRIS using the same title coding, the same function boundary, and the same snapshot date as the peer, not the HRIS "manages others" flag, and then re-pull the peer on a fixed cadence because profile changes surface with a lag. A comparison holds up in a steering committee only when both columns were counted the same way.
Restating the HRIS column
HRIS systems may classify managers by job title, job level, or a "manages others" flag. For this comparison, export titles and run them through the exact coding rule you used on the peer, including the ambiguous list and how you resolved it. Then compute share, IC:manager, span, and layers with the same formulas. Show the flag-based figure as a reconciliation line beneath, so anyone who knows your internal number can see where the difference comes from.
Convert any announced peer targets before comparing. As illustrative arithmetic: if a function's IC:manager is 5.7, a 15% increase takes it to about 6.6, which moves average span from about 6.7 to 7.6, an increase of roughly 13%, not 15%. Amazon later said it had reached its target, according to secondary reporting; even with that, you know the direction of a peer's change, not its level.
Peer spans-and-layers benchmark: [Function], [Peer] vs [Own org] Peer snapshot: profiles pulled [date] | Own org: HRIS effective [same date] Rules: rule sheet v[N], signed [analyst], [HRBP] Metric | Peer (low to high) | Own org (title-coded) | Own org (HRIS flag, reference) Manager share | [x% to y%] | [z%] | [z%] IC:manager | [a to b] | [c] | [c] Average span | [a+1 to b+1] | [c+1] | [c+1] Layers, head to front | [low to high] | [n] | n/a Evidence: [n] coded profiles; second-coder agreement [x%]; coverage factors per band [list] from [source] Context only: Bain average span 6 to 7, best in class 10 to 15 (company-wide, not function-specific) Not established: function-specific published spans; title-ladder vs true-depth divergence (tested on [organogram], result [x])
Keep the method line and the ranges; leadership will quote whatever you put in the first table, so never put a point estimate there alone.
Keeping it current
One modelled study puts the lag between a real job change and its appearance in aggregated profile data at 0 to 120+ days. Three practical consequences:
- Date-stamp every pull and compare only like-dated snapshots.
- Do not snapshot right after a peer announces a restructure; the profiles will not reflect it yet.
- Re-pull on a fixed cadence and keep the rule sheet versioned, so a change in the number is a change in the peer, not a change in method.
The re-pull is where the time goes on repeat runs. Saving the exact plain-English request in Refolk, for example "Customer support team leads and support managers at Zendesk in Europe", lets you rerun the same population on the next snapshot date instead of rebuilding the pull, and keeps the boundary identical across runs.
Before the benchmark goes to the steering committee
- The rule sheet is signed by the analyst and HRBP and dated before the first pull
- The function boundary list names every adjacent role decided in or out
- Every row carries a pull date and a last-activity date, and stale rows are dropped by the stated threshold
- Every "Manager", "Lead", "VP", and "Managing Director" title without a team noun was hand-reviewed
- A second coder coded 10% of rows and the agreement rate is in the appendix
- Coverage factors are calibrated per band on a known structure and the source is named
- Coded profiles clear the floor of roughly 400, or the figure is labelled directional
- Peer and own-org figures use the same metric, with IC:manager and span not mixed
- The own-org column was restated by title coding, with the HRIS flag figure shown only as reconciliation
- Every peer figure appears as a low-high range with the snapshot date beside it
Questions practitioners ask
Can I estimate a competitor's manager to IC ratio from LinkedIn profiles alone?
Yes, but only as a range, and only after two corrections. Raw public profiles over-represent managers, so you need a per-band coverage factor calibrated on an organisation whose structure you know, and you need to recode titles so that Product, Account, and Program Managers are not counted as people managers. Below roughly 400 coded profiles in the function, the range is too wide to tell an average company from a best-in-class one, so do not publish it.
What is the difference between span of control and IC-to-manager ratio?
Average span is total headcount minus one, divided by the number of managers, so it counts managers who report to other managers. IC-to-manager ratio counts only individual contributors per manager. Span is roughly IC:manager plus 1. Bain publishes spans while peers such as Amazon announce IC:manager targets, so convert one to the other before comparing or you will report a gap of about one that does not exist.
How many layers does a typical company have?
In Bain's database of more than 125 companies, the average organisation has eight to nine layers and best-in-class companies have no more than seven. Those are company-wide counts from the top to the frontline. A function-level count from function head to frontline will be smaller and is not directly comparable, so present it next to your own function-level count built on the same ladder rules, not next to Bain's figure.
Is there a published span benchmark for engineering, sales, or support specifically?
No. Nobody has published function-specific span ranges with sample sizes. The closest guidance is by work type: Bain suggests skills-based roles such as engineers are usually well served by a span of six to eight, and task-based roles such as call-centre supervisors can run at 15 or more. Treat those as context lines on the chart, not as the benchmark itself.
Why shouldn't I use the HRIS 'manages others' flag for my own numbers?
Because the peer side is built from title coding, and the flag counts player/coaches whose titles would code as individual contributors. Using the flag for your own column and titles for the peer's makes your organisation look more manager-heavy for reasons that have nothing to do with structure. Restate your figures by title coding, and show the flag-based figure only as a reconciliation line.
How often should I refresh a peer spans-and-layers benchmark?
Re-pull on a fixed cadence and always date-stamp the snapshot. One modelled study puts the lag between a real job change and its appearance in aggregated profile data at 0 to 120+ days, so a peer reorganisation will not show up in full for months. Avoid taking a snapshot right after a peer announces a restructure, and compare like-dated pulls only.
Try it on the search you came here for
Stop building boolean strings. Just describe the person.
Type one sentence. I plan the search, read GitHub, public LinkedIn and Crunchbase records, and the open web as it is right now, and hand back a ranked list with the reason next to every name.
01Describe them
One plain sentence. Role, city, stack, stage, whatever matters to you.
02I read the web live
GitHub, public LinkedIn and Crunchbase records, the open web. Not a database that went stale last quarter.
03You read the shortlist
Ranked, with the reasoning under every name. Open a profile, ask a follow-up, narrow it down.
- Staff backend engineers in NYC who shipped Rust in production
- Series A fintechs in SF under 50 people, growing headcount this year
- Maintainers of fast-growing Rust web frameworks on GitHub
- No boolean, no filters, no seat to buy. One box.
- Read at search time, so a profile updated yesterday counts today.
- Every step visible as it runs, every name with its reason.
500 free credits on sign-up. No card, no demo call. See real searches.