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:
| Condition | Rule |
|---|---|
| Not closed | job_opening_closed is false |
| Recently active | last_seen_at within 60 days of analysis date |
| Not stale | first_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:
| Field | Window |
|---|---|
rolesOpenedLast30d | Roles first seen in the most recent 30 days |
rolesOpenedPrev30d | Roles first seen 30–60 days ago |
rolesOpenedPrev60d | Roles first seen 60–90 days ago |
The trend field is derived from these windows:
| Trend | Meaning |
|---|---|
accelerating | More roles opened in the last 30 days than the prior 30 days |
steady | Roughly flat hiring pace across windows |
decelerating | Fewer 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 Size | High Velocity | Medium Velocity | Low 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
numberOfOpenRolesfor 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
| Dimension | Sum > Total | Sum < Total | Sum ≈ Total |
|---|---|---|---|
| Departments | 98% | < 1% | ~2% |
| Seniority | 89% | < 1% | ~11% |
| Locations | 86% | 3% | ~11% |
| Contracts | 85% | 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 Velocity | Hiring Trends | |
|---|---|---|
| Purpose | How fast is this company hiring overall? | Which departments are actively building? |
| Row grain | 1 row per company | 1 row per (company, department) |
| Department classification | Provider's native category tags on each job posting | Autobound's 23-category regex matching on job titles |
| Freshness filters | Not closed, last_seen ≤ 60d, first_seen ≤ 180d | Not closed, matched in current batch |
| Company filter | Any company with open roles | Must exist in Autobound's company database |
| Breakdowns included | Departments, seniority, locations, contract types | Top locations and sample job titles only |
| Refresh cadence | Weekly | Weekly |
Why Numbers Won't Match
-
Different classification systems. Hiring Velocity uses the job data provider's native
categoriesattribute (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. -
Different company coverage. Hiring Trends only emits signals for companies in Autobound's company database. Hiring Velocity includes any company with active job postings.
-
Different granularity. Hiring Trends produces a separate signal for each department a company is hiring in, with
open_roles_countreflecting that specific department. Hiring Velocity produces one signal per company withnumberOfOpenRolesreflecting all active roles.
Updated 1 day ago
