Hiring Velocity - Interpretation Guide

How Hiring Velocity metrics are calculated, why breakdown sums differ from totals, and how Hiring Velocity relates to Hiring Trends

How Velocity Is Calculated

The core metric is straightforward:

hiringVelocityPct = (numberOfOpenRoles / numberOfEmployees) × 100

This represents open roles as a percentage of current headcount.

What Counts as an Active Role

A job posting is included in numberOfOpenRoles only if it meets all three conditions:

ConditionRule
Not closedjob_opening_closed is false
Recently activelast_seen_at within 60 days of analysis date
Not stalefirst_seen_at within 180 days of analysis date

Jobs that fail any condition are excluded from all metrics and breakdowns.

Employee Count

Employee headcount is sourced from LinkedIn profile data (staff.total), with rounding applied based on company size. If LinkedIn data is unavailable, the midpoint of the company's reported employee range is used as a fallback.

Trend Classification

The historicalComparison object compares hiring activity across three rolling 30-day windows:

FieldWindow
rolesOpenedLast30dRoles first seen in the most recent 30 days
rolesOpenedPrev30dRoles first seen 30–60 days ago
rolesOpenedPrev60dRoles first seen 60–90 days ago

The trend field is derived from these windows:

TrendMeaning
acceleratingMore roles opened in the last 30 days than the prior 30 days
steadyRoughly flat hiring pace across windows
deceleratingFewer roles opened in the last 30 days than the prior 30 days

Takeaway Generation

The takeaway field provides a human-readable interpretation based on company size and velocity:

Company SizeHigh VelocityMedium VelocityLow Velocity
< 100 employees≥ 20% — "hyper-growth"10–20% — "rapid expansion"< 10% — "steady growth"
100–500≥ 10% — "strong growth"5–10% — "moderate expansion"< 5% — "slow hiring"
500–5,000≥ 7% — "significant expansion"3–7% — "consistent growth"< 3% — "maintaining workforce"
> 5,000≥ 5% — "large-scale expansion"1–5% — "steady hiring"< 1% — "stability"

Why Breakdown Sums Differ from Total Open Roles

You may notice that summing the count values across a breakdown dimension (departments, locations, seniority, or contracts) does not equal numberOfOpenRoles. This is expected and results from two mechanics in the underlying data.

Multi-Tagging (Sums Exceed Total)

The source job data uses multi-valued attributes. A single job posting can carry multiple department categories (e.g., ["engineering", "machine_learning"]), multiple contract types (e.g., ["full time", "remote"]), and multiple locations. When we break down open roles by dimension, each tag is counted independently — so one job can contribute to multiple categories.

Across the current dataset:

  • 28.7% of job postings carry multiple department tags
  • Department breakdown sums exceed numberOfOpenRoles for 98% of companies
  • Contract and location breakdowns show similar patterns (85–86%)

The pct field is calculated as (category_count / numberOfOpenRoles) × 100. Because of multi-tagging, individual categories can exceed 100% and the sum across categories will exceed 100%.

Top-N Truncation (Sums Fall Short of Total)

Only the top categories per dimension are included in the breakdown arrays — not every category. For companies with hiring spread across many departments or locations, the visible categories won't capture the full picture.

This causes breakdown sums to fall below numberOfOpenRoles in a smaller percentage of cases:

  • Contracts: ~7% of companies (worst cases show top-5 covering < 10% of total)
  • Locations: ~3% of companies

Summary

DimensionSum > TotalSum < TotalSum ≈ Total
Departments98%< 1%~2%
Seniority89%< 1%~11%
Locations86%3%~11%
Contracts85%7%~8%

Key takeaway: Treat breakdowns as "which categories are most represented" rather than an exhaustive partition of total open roles. The breakdowns show relative concentration, not a mutually exclusive split.


Hiring Velocity vs. Hiring Trends

These are separate signals with different classification systems. They are complementary views of hiring activity, not the same metric computed two ways.

Side-by-Side Comparison

Hiring VelocityHiring Trends
PurposeHow fast is this company hiring overall?Which departments are actively building?
Row grain1 row per company1 row per (company, department)
Department classificationProvider's native category tags on each job postingAutobound's 23-category regex matching on job titles
Freshness filtersNot closed, last_seen ≤ 60d, first_seen ≤ 180dNot closed, matched in current batch
Company filterAny company with open rolesMust exist in Autobound's company database
Breakdowns includedDepartments, seniority, locations, contract typesTop locations and sample job titles only
Refresh cadenceWeeklyWeekly

Why Numbers Won't Match

  1. Different classification systems. Hiring Velocity uses the job data provider's native categories attribute (assigned when the job is first indexed). Hiring Trends uses Autobound's own regex patterns matched against the job title text. These two systems will classify the same job differently in many cases.

  2. Different company coverage. Hiring Trends only emits signals for companies in Autobound's company database. Hiring Velocity includes any company with active job postings.

  3. Different granularity. Hiring Trends produces a separate signal for each department a company is hiring in, with open_roles_count reflecting that specific department. Hiring Velocity produces one signal per company with numberOfOpenRoles reflecting all active roles.