Use case

Early indicators of an industry-wide hiring slowdown

Three readings of job postings across an industry: the flow of new roles, how widely it falls and how long roles stay open. With the queries, what else moves each reading, and the official rates that report on the same months.

11 min read

Job postings let you detect an industry-wide hiring slowdown early: a role is published before anyone is hired into it, and a weekly series is written days after its week closes, while a month's official rates follow weeks after the month ends. This guide gives three indicators, each read across the companies of one industry: the flow of new postings, the breadth of any fall and the age of the roles that stay open. It sets out the queries on the weekly market series and daily hiring counts, the official job openings, hires and quits rates, and a worked example that tells one employer's freeze from an industry-wide slowdown.

Which indicators detect an industry-wide hiring slowdown early?

Three indicators, read across the companies of one industry, detect a hiring slowdown early: the flow of new postings against the window before, the breadth of the fall, meaning the share of companies posting less than four weeks earlier, and the age of the open stock. Read a slowdown as industry-wide only when all three move together.

ReadingMeasureThe question it answers
FlowNew postings in the latest 28 days against the 28 days beforeAre fewer roles being opened?
BreadthThe share of companies whose new postings fell, and a diffusion indexIs the fall shared by most employers?
AgeOpen postings divided by new postings per day, in daysAre open roles standing longer against the inflow?

Flow alone can be one employer: in a pooled count, one large company that stops opening roles can outweigh many small ones, so breadth gives every company one vote. Breadth borrows its construction from the Bureau of Labor Statistics, whose diffusion index of employment change gives each industry a value of 0, 50 or 100 for a decrease, no change or an increase over the span, and takes the mean. Applied to companies, 50 means as many posted more as posted less, and a reading below 50 means more of them posted less.

For age, open postings summed over a window's days, divided by the new postings in it, is the average stock over the average daily inflow, and in a steady state it approximates how many days a role stays open. It rises when the inflow falls while the stock holds, which is the slowdown pattern, and also when roles take longer to fill while the inflow holds, which is not. Read it with flow.

Leading indicators of a labour market slowdown in job postings data

Job postings lead because a role is advertised before anyone fills it, and the official hires count records a worker only once added to the payroll. In postings data the leading indicators of a labour market slowdown are fewer new roles, a fall shared by most employers, and open roles standing longer against the inflow.

A posting and an official job opening are related measures, not one measure. The Bureau's job openings survey is an establishment survey that collects its data directly from the sampled establishments, and that article, from the Bureau's Monthly Labor Review of August 2026, notes that a vacancy posting can stay online after the position has been filled. The author of a Federal Reserve Board staff note of 30 September 2026 reads online job postings as a timely indicator of hiring demand rather than a direct measure of job openings.

The order of events gives postings their lead. An employer decides to hire, publishes the role, interviews, and then adds a worker to the payroll, which is when the Bureau counts a hire. A decision to hire less therefore shows first as roles that are never published, and we found no official estimate of how long that lead lasts. Postings record what employers advertise, and reading postings at the source explains why the company's own board is the record to read.

Reading the flow in the weekly market series

The market series dataset holds weekly series, hiring among them, for industries, countries, size bands and markets, as of each Sunday, over 7, 30 and 180 days. Each rate is taken over a same-store cohort, the companies covered since before the window began and still covered at its end, and the previous window is counted over the same companies, so a fall in a series is a fall in what those companies did.

For flow, read the family of new postings for one industry beside the same family over all companies. The query reads Market Series (market_series) for the twelve Sundays up to :as_of, for the industry you pass as :industry, and sets each row's growth beside the growth over all companies on the same Sunday and window. Like the other query here, it is written for PostgreSQL.

select
  s.as_of,
  s.window_days,
  s.cohort,
  s.count,
  s.previous,
  s.growth,
  a.growth            as growth_all,
  s.growth - a.growth as growth_gap
from market_series s
join market_series a
  on  a.metric         = s.metric
  and a.as_of          = s.as_of
  and a.window_days    = s.window_days
  and a.dimension_kind = 'all'
where s.metric = 'hiring_new'
  and s.dimension_kind = 'industry'
  and s.dimension = :industry
  and s.window_days in (30, 180)
  and s.as_of >  cast(:as_of as date) - 84
  and s.as_of <= cast(:as_of as date)
order by s.window_days, s.as_of;

In each row growth is count minus previous, divided by previous, both counted on the same cohort. A negative growth_gap that persists says the industry's flow is weaker than that of companies as a whole, which separates an industry move from a calendar effect that touches everyone. The industry dimension is the industry label of the company website; set dimension_kind to sector to cut by the company's sector instead, and keep one of the two for a whole study.

Two 30-day windows that end a week apart share 23 days, so the 30-day growth changes slowly from one Sunday to the next. Compare Sundays five weeks apart for windows that do not overlap, and read the 180-day row for direction. The guide to sector hiring trends explains the main columns of a row, including the index.

Breadth and age across the companies you follow

Breadth and age need company rows. Hiring Activity (company_hiring_daily) holds one row per company and closed UTC day: open_postings at the end of the day, new_postings seen opening that day and closed_postings closed that day. A posting already on a board when it is first observed is a baseline, never counted as new, so a company added to the data brings no false burst of new roles.

Pass the companies you follow in the industry, by your own classification, as the array :company_ids. Mapping alternative data to a security master shows how to reach them from ISINs. The query computes all three readings for each of twelve Sundays back from :as_of, each over the latest 28 days and the 28 days before.

with dates as (
  select cast(:as_of as date) - 7 * k as as_of
  from generate_series(0, 11) as k
),
per_company as (
  select
    d.as_of,
    h.company_id,
    count(*) as days,
    sum(case when h.day >  d.as_of - 28 then h.new_postings  else 0 end) as new_latest,
    sum(case when h.day <= d.as_of - 28 then h.new_postings  else 0 end) as new_before,
    sum(case when h.day >  d.as_of - 28 then h.open_postings else 0 end) as open_days_latest,
    sum(case when h.day <= d.as_of - 28 then h.open_postings else 0 end) as open_days_before
  from dates d
  join company_hiring_daily h
    on  h.day >  d.as_of - 56
    and h.day <= d.as_of
  where h.company_id = any(:company_ids)
  group by d.as_of, h.company_id
)
select
  as_of,
  count(*)                                                 as companies,
  sum(new_latest)                                          as new_latest,
  sum(new_before)                                          as new_before,
  1.0 * sum(new_latest) / nullif(sum(new_before), 0) - 1   as flow_growth,
  avg(case when new_latest < new_before then 1.0 else 0.0 end)
    filter (where new_latest + new_before >= 3)            as share_falling,
  avg(case when new_latest > new_before then 100.0
           when new_latest = new_before then 50.0
           else 0.0 end)
    filter (where new_latest + new_before >= 3)            as diffusion_index,
  1.0 * sum(open_days_latest) / nullif(sum(new_latest), 0) as stock_to_flow_days,
  1.0 * sum(open_days_before) / nullif(sum(new_before), 0) as stock_to_flow_days_before
from per_company
where days = 56
group by as_of
order by as_of;

The filter days = 56 keeps the companies with a row for every day of both windows, the same-store rule of the weekly series applied to your list. Breadth counts a company only when it opened at least three postings across the two windows, because a move from one posting to none says little; three is a starting point to tune. Set :as_of to a Sunday already written in Market Series, so that the two queries describe the same weeks.

To test whether one employer carries the flow, run the query again with the largest company by new_before left out of :company_ids. A slowdown that belongs to the industry survives the removal; a freeze at one company does not.

Are the BLS JOLTS hires rate, job openings rate and quits rate leading indicators of a hiring slowdown?

They are the official record of a slowdown rather than its first sign, because each month's rates are published weeks after the month ends. The Bureau of Labor Statistics divides job openings by employment plus openings, and hires or quits by employment, times 100. Weekly postings readings come first, and the rates confirm or contradict them.

The Job Openings and Labor Turnover Survey defines each count and computes each rate as follows.

RateWhat it countsHow the Bureau computes itA fall says
Job openings ratePositions not yet filled on the month's last business dayOpenings divided by employment plus openings, times 100Fewer unfilled positions against all jobs, filled and unfilled
Hires rateWorkers added to the payroll at any time in the monthHires divided by employment, times 100Fewer workers added
Quits rateVoluntary departures, leaving out retirements and transfers to other locationsQuits divided by employment, times 100Fewer workers leaving by their own choice

The survey is a stratified random sample of about 21,000 establishments, as the technical note to the August 2026 release describes it, and covers private nonfarm establishments and civilian federal, state and local government in the 50 states and the District of Columbia. National estimates are published for NAICS sectors and subsectors and by region, and by establishment size at the total private level; state estimates cover total nonfarm. A month's estimates are preliminary and revised the following month, and at the end of each year the estimates of the five previous years are revised.

The estimates for August 2026 were published on 29 September 2026, and those for September are scheduled for 3 November 2026, while each weekly series is written as of its Sunday. The readings above follow the companies you chose, while the rates follow NAICS industries, so compare the direction of the two, not their levels. To test a postings reading against the rates, use each month's first published estimate, which is what was known on the day.

Job openings and the hiring rate in 2026, and early indicators of a labour market slowdown

In August 2026, the latest month published, the Bureau of Labor Statistics put the US job openings rate at 4.3 percent, the hires rate at 3.3 percent and the quits rate at 1.9 percent, for total nonfarm, seasonally adjusted and preliminary. Its release of 29 September described openings and hires as little changed.

These are national figures, from the August 2026 release, its table of openings and hires by industry and its table of quits, which carry the same measures for each published industry. Those tables are where a postings reading for an industry finds its official counterpart, for the month the reading covered, once the month is published.

What each reading shows and what else could cause it

The last column is the test that separates each reading from its ordinary explanation.

ReadingWhat it showsWhat else could cause itHow to tell them apart
New postings fall against the window beforeFewer roles opened across the companies you followA freeze at one large employerRun again without the largest employer, and read breadth
Most companies post less, with a diffusion index below 50The fall is shared by most employersA holiday or a season common to every industryThe industry's growth against all companies in Market Series
Stock to flow risesOpen roles are large against the inflowRoles harder to fill while the inflow holds, or postings left online after the role is filledRead with flow: age rising and flow steady is slow filling
Industry growth below all companies for several SundaysThe move belongs to the industryA calendar of the industry's own, such as an annual intakeThe 180-day window, which spans more than one season
The job openings rate fallsFewer unfilled positions against all jobsPositions filled fasterThe hires rate for the same month
The hires and quits rates fall togetherFewer workers added and fewer leaving by choiceA preliminary estimate that the next release revisesThe revised estimate a month later

A worked example: one employer or the whole industry?

The figures are illustrative, and Acme Robotics is an invented company. The example shows how the three readings separate one employer's freeze from a slowdown across its industry.

Assumptions:

  • You follow 40 companies in the industry, and Acme Robotics opens the most postings among them.
  • All 40 have a Hiring Activity row on every day of three consecutive 28-day windows, W1, W2 and W3, and each opened at least three postings across each pair of windows.
  • You run the second query as of the last day of W2 (date A) and as of the last day of W3 (date B).
  • As of date A, 15 companies posted less than in the window before, 4 the same and 21 more. As of date B, 27 posted less, 3 the same and 10 more. Acme Robotics posted less on both dates.
  • The open postings of the 40 companies together, averaged over the days of each window, are 1,000 in W1, 1,050 in W2 and 1,080 in W3.
WindowAcme Robotics, newOther 39, newAll 40, newAverage open
W11202804001,000
W2402663061,050
W3382102481,080

The working, as of date A:

  1. Flow. 306 new postings against 400 is a fall of 94, or 23.5%. Without Acme Robotics, 266 against 280 is a fall of 14, or 5.0%.
  2. Breadth. 15 of 40 companies posted less, a share of 37.5%. The diffusion index is 4 times 50 plus 21 times 100, or 2,300, divided by 40: 57.5.
  3. Age. Stock to flow is 1,050 times 28, or 29,400, divided by 306: 96.1 days, against 1,000 times 28 divided by 400, or 70.0 days, in W1.

The pooled flow fell by almost a quarter, yet more companies posted more than posted less, and the other 39 fell by 5%. The rise in age follows the fall in pooled inflow, and Acme Robotics accounts for 80 of the 94 postings lost. As of date A this is one employer's story, a question for a screen of that company.

The working, as of date B:

  1. Flow. 248 against 306 is a fall of 58, or 19.0%. Without Acme Robotics, 210 against 266 is a fall of 56, or 21.1%.
  2. Breadth. 27 of 40 posted less, a share of 67.5%. The diffusion index is 3 times 50 plus 10 times 100, or 1,150, divided by 40: 28.75.
  3. Age. Stock to flow is 1,080 times 28, or 30,240, divided by 248: 121.9 days.

As of date B the readings agree. The flow fell further without the largest employer than with it, two companies in three posted less, and the open stock grew against a shrinking inflow. The next checks are the industry's growth_gap in Market Series on the same Sundays, then the official rates for the matching NAICS industry once the month is published.

How Fokals delivers it

Hiring Activity belongs to the hiring product, refreshed daily: open, new and closed postings for each company and closed day. Market Series is written weekly, as of each Sunday, on same-store cohorts. Both are delivered by REST API or as bulk files. Each daily and weekly row is written once after its period closes and never revised, so the readings for a past Sunday come out the same whenever you run the queries: point-in-time data, which a test against first published official estimates needs. The data dictionary defines every column used here, and section 9 of the methodology sets out the cohorts and windows of the weekly series.

Frequently asked questions

What is the earliest sign of an industry-wide hiring slowdown in job postings?

A fall in new postings that most companies in the industry share. A pooled count can fall because one large employer stops opening roles, so read it beside the share of companies whose new postings fell against the four weeks before, and a diffusion index that gives each company one vote. When both point down and the open roles age against a shrinking inflow, the slowdown is spread across the industry.

How is an industry-wide hiring slowdown different from a hiring freeze at one company?

A freeze is one employer's decision: its new postings stop while its open roles stay up. An industry-wide slowdown is many employers opening fewer roles at once. In postings data the difference shows in breadth. Remove the largest employer and recompute: a freeze disappears from the industry reading, while a slowdown survives because most companies posted less than in the weeks before.

What is a diffusion index of job postings?

It counts each company as 0 when its new postings fell against the window before, 50 when they were unchanged and 100 when they rose, then takes the mean. A reading of 50 means as many companies posted more as posted less, and a reading below 50 means more posted less. The construction follows the diffusion index of employment change that the Bureau of Labor Statistics computes across industries.

How do job postings relate to the JOLTS job openings rate?

They measure related things in different ways. The job openings survey asks a sample of establishments for the positions open on the last business day of each month and divides them by employment plus openings. Postings record the roles employers advertise, counted day by day. Postings come first in time, and the official rate reports on the same month weeks later, so compare the direction of the two.

When are the official job openings, hires and quits rates published?

Monthly. The estimates for August 2026 were published on 29 September 2026, and those for September 2026 are scheduled for 3 November 2026. National estimates appear in the first week of a month or the last week of the month before, and each month's figures are preliminary until the following release revises them, with a revision of the previous five years at the end of each year.

The queries and code on this page are examples to adapt. Test them in your own environment before you rely on them.

What this page says about the products it names was checked against their public documentation on 7 October 2026. Product and company names are trademarks of their owners. Fokals is not affiliated with them or endorsed by them.