Tracking entry-level against senior hiring gives you an economic indicator that is written every week: the share of the roles companies open that is addressed to people starting out, beside the share that asks for experience. This guide defines the measure, sets it beside what official statistics publish about new entrants, gives two queries, on the weekly market series and on postings, and works an example on an invented industry. It ends with the tests that stop a change of labels or of company mix from passing as a change in hiring.
What does tracking entry-level against senior hiring show as an economic indicator?
It shows which levels of experience employers ask for in the roles they open. The measure is the share of postings opened in a window at entry level, beside the share at senior level, for one industry. Once labels, company mix and calendar are ruled out, a lasting shift is a change in what employers ask for.
Three measures carry the reading, and all three come from one count: the postings opened in a window.
| Measure | How it is computed | What it answers |
|---|---|---|
| Entry share | Entry-band postings opened, divided by all postings opened | How much of the new demand is open to people starting out |
| Senior share | Senior-band postings opened, divided by all postings opened | How much of it asks for experience |
| Entry-to-senior ratio | Entry-band postings opened, divided by senior-band postings opened | The balance between the two, whatever happens at the levels between |
Set the bands before the first run and keep them. On the Fokals seniority scale of nine levels, this guide takes intern and entry as the entry band and senior and lead or principal as the senior band, and reports mid and the four management levels apart. A people manager and a senior specialist are different roles, and one merged band hides which of them moved.
The reason to watch the mix comes from research on what employers ask for. The authors of a 2014 working paper of the Federal Reserve Bank of Boston studied a large database of online job postings from 2007 to 2012 and found that employers' skill requirements, a bachelor's degree and experience among them, rose when the supply of relevant job seekers was larger. A 2016 paper by the same authors found that the requirements fell as the labour market improved from 2010 to 2014. Both findings are the authors' own, on requirements stated in postings, for those years. They make the mix worth measuring, and they leave open what a shift means in any other period.
A posting records an intention to hire. The measure counts roles advertised, at the level the employer advertises them.
Is the seniority of job postings a labour market indicator? Entry-level and senior hiring data as an economic signal
The mix of entry-level and senior roles in job postings is a labour market signal of demand: it shows which levels of experience employers ask for. Official statistics report the other side: they count people looking for a first job and describe the requirements of jobs already held. Compare their direction, never their level.
Four publications from official bodies report on entry into work in the United States. Each was read on 7 October 2026.
| Publication | Who speaks, and from what | What it reports | Latest figure |
|---|---|---|---|
| Unemployed people by reason for unemployment | The Bureau of Labor Statistics, from the Current Population Survey, a monthly survey of about 60,000 eligible households | New entrants, defined as unemployed people looking for their first job, with no previous work experience | 818,000 in September 2026, seasonally adjusted, or 11.6% of the unemployed |
| The labour market for recent college graduates | The Federal Reserve Bank of New York, which states that the data are not official estimates of the Bank | Unemployment and underemployment among recent college graduates, updated quarterly | For the second quarter of 2026, unemployment of about 5.6% and underemployment of 42% |
| Occupational Requirements Survey | The Bureau of Labor Statistics, from a nationally representative survey of establishments | What jobs require: minimum formal education, prior work experience and on-the-job training | In 2025 no minimum formal education was required for 32.5% of civilian workers, a high school diploma for 39.3% and a bachelor's degree for 17.7% |
| Education and training assignments | The Bureau of Labor Statistics | For each occupation: the typical education needed for entry, work experience in a related occupation (5 years or more, less than 5 years, or none) and typical on-the-job training | A classification, with no rate |
Three differences decide how a postings reading sits beside these.
- The unit. The household survey counts people. The requirements survey describes jobs that workers hold, and its handbook gives its objective as measuring job requirements, not the characteristics of workers. A posting is a role an employer advertises and has yet to fill.
- The meaning of entry. A new entrant is an unemployed person looking for a first job, with no previous work experience. In the occupation assignments, entry is the typical path into an occupation, and the page notes that multiple paths are not captured. A seniority level places one advertised role on a provider's scale.
- The calendar. The count of new entrants is monthly, the graduates' rates are quarterly and the requirements estimates carry a reference year. A postings series is written weekly.
The Bureau's survey of job openings publishes its estimates by industry, region and state and, at the total private level, by establishment size class. On the page that sets this out we found no split by the level of the position. A level on each advertised role is what labelled postings add.
Entry-level hiring data sources: job postings with a seniority level
A data source for entry-level hiring needs every posting dated and labelled with a seniority level under a named version. Fokals delivers this in three datasets: Job Postings, with the level on each role; Hiring Activity, with open postings by seniority for each company and day; and Market Series, with weekly seniority shares by industry.
| Dataset | One row per | What it carries for this measure |
|---|---|---|
| Job Postings | Posting | The seniority level and the job function, the version of its labels, the minimum years of experience asked for, the degree, the employment type, and the dates the posting was first and last observed |
| Hiring Activity | Company and closed day | Open postings by seniority and by function, with new and closed postings |
| Market Series | Metric, dimension, window and as-of Sunday | The seniority share: the share of the postings opened in the window at each level, by industry, country and company size band, over 7, 30 and 180 days |
The first two belong to the hiring product, refreshed daily, with every role collected as the company publishes it. Market Series is written weekly, as of each Sunday, and each as-of date is written once and never revised.
Two fields describe experience in different ways. The seniority level is a label, each posting carries the version of its labels, and a posting keeps its version until it closes. The minimum years of experience is the employer's own figure. Each is a check on the other.
Reading the mix for one industry in the weekly series
The first query reads Market Series (market_series) for one industry and adds the levels of each band. Like the queries after it, it is written for PostgreSQL, and every date, industry and band is a parameter.
| Parameter | What you set |
|---|---|
:industry | The industry, by its id in the industry dimension |
:entry_subjects, :senior_subjects | The levels of each band, as subjects of the family |
:first_as_of, :last_as_of | The first and last Sunday to read |
with bands as (
select
as_of,
window_days,
sum(case when subject in (:entry_subjects) then count end) as entry_postings,
sum(case when subject in (:senior_subjects) then count end) as senior_postings,
sum(case when subject in (:entry_subjects) then previous end) as entry_previous,
sum(case when subject in (:senior_subjects) then previous end) as senior_previous,
sum(case when subject in (:entry_subjects) then rate end) as entry_share,
sum(case when subject in (:senior_subjects) then rate end) as senior_share
from market_series
where family = 'seniority_share'
and dimension_kind = 'industry'
and dimension = :industry
and window_days in (30, 180)
and as_of between :first_as_of and :last_as_of
group by as_of, window_days
)
select
as_of, window_days, entry_postings, senior_postings, entry_share, senior_share,
1.0 * entry_postings / nullif(senior_postings, 0) as entry_to_senior,
1.0 * entry_previous / nullif(senior_previous, 0) as entry_to_senior_previous
from bands
order by window_days, as_of;In a row of the seniority_share family, count is the number of postings at one level opened in the window, rate is their share of the postings opened, from 0 to 1, and previous is the same count over the window just before. A metric with a subject is written family:subject, as in seniority_share:senior, and the metric catalogue of the API lists the subjects of each family. The last two columns set the entry-to-senior ratio beside the ratio of the window before.
The share is taken over postings, so it follows the employers behind them. When one employer opens many more roles than usual, the industry's mix leans towards that employer's mix. The next query measures how much.
Holding the companies and the labels fixed in Job Postings
The second query reads Job Postings (job_postings) for a list of companies you fix in advance and pass as :company_ids: the companies you follow in the industry, by your own classification. It compares a base window, from :base_start to :split, with a current window, from :split to :current_end.
with opened as (
select
company_id,
case when first_seen_at < :split then 'base' else 'current' end as win,
labels::jsonb ->> 'seniority' as seniority,
experience_years_min
from job_postings
where company_id = any(:company_ids)
and label_version = :label_version
and found_on_first_read = false
and first_seen_at >= :base_start
and first_seen_at < :current_end
),
per_company as (
select
company_id,
count(*) filter (where win = 'base') as n0,
count(*) filter (where win = 'current') as n1,
count(*) filter (where win = 'base' and seniority in ('intern', 'entry')) as e0,
count(*) filter (where win = 'current' and seniority in ('intern', 'entry')) as e1
from opened
group by company_id
),
matched as (
select *, sum(n0) over () as total0
from per_company
where n0 >= :min_postings
and n1 >= :min_postings
)
select
count(*) as companies,
1.0 * sum(e0) / sum(n0) as entry_share_base,
1.0 * sum(e1) / sum(n1) as entry_share_current,
sum(1.0 * n0 / total0 * e1 / n1) as entry_share_fixed_mix
from matched;A posting enters by first_seen_at, the time it was first observed. The filter on found_on_first_read leaves out postings already published when a company's postings were first observed, for which first_seen_at is not the opening date. The filter on label_version keeps both windows under one version. Run the count once without it: rows that the filter removes mark a version boundary inside your windows.
The last column weights each company's current entry share by its share of base-window postings. Fixed mix minus base is the change inside companies. Current minus fixed mix is the effect of companies changing weight. An official index holds the mix fixed in the same way: the Employment Cost Index of the Bureau of Labor Statistics uses fixed employment weights, so that it measures the change in labour costs independent of employment shifts among occupations and industries.
To hold the job function mix fixed instead, group by labels::jsonb ->> 'job_function' in place of the company. For the two cross-checks, end the same query with this select.
select
win,
count(*) as opened,
count(*) filter (where coalesce(seniority, '') = '') as unlabelled,
count(experience_years_min) as stating_years,
avg(experience_years_min) as mean_years_asked
from opened
group by win;An empty level means no level was set for that posting, and the entry share above counts those postings in its denominator. The mean of experience_years_min covers the postings that state a minimum.
A worked example on an invented industry
The industry, the companies and every figure below are invented, Acme Robotics included, and the example is illustrative.
Assumptions:
- The list is four companies of one industry: Acme Robotics and companies B, C and D.
- The base and current windows are 30 days each and do not overlap.
- Every posting in both windows carries the same label version, and none has an empty level.
- The entry band is intern and entry, and the minimum is 20 postings per company and window.
| Company | Base opened | Base entry | Base share | Current opened | Current entry | Current share |
|---|---|---|---|---|---|---|
| Acme Robotics | 100 | 10 | 10.0% | 300 | 30 | 10.0% |
| B | 200 | 60 | 30.0% | 200 | 50 | 25.0% |
| C | 100 | 40 | 40.0% | 100 | 40 | 40.0% |
| D | 100 | 30 | 30.0% | 100 | 30 | 30.0% |
| All four | 500 | 140 | 28.0% | 700 | 150 | 21.4% |
- Headline. 140 / 500 = 28.0% in the base window and 150 / 700 = 21.4% in the current one: a fall of 6.6 points.
- Base weights. Acme Robotics 100 / 500 = 0.20, B 0.40, C 0.20, D 0.20.
- Fixed mix. 0.20 × 10.0% + 0.40 × 25.0% + 0.20 × 40.0% + 0.20 × 30.0% = 2.0% + 10.0% + 8.0% + 6.0% = 26.0%.
- Inside companies. 26.0% minus 28.0% is a fall of 2.0 points, all of it at company B: 0.40 × 5.0 points.
- Company mix. 21.4% minus 26.0% is a fall of 4.6 points. Acme Robotics opened three times as many roles at its usual entry share of 10.0%, and its weight went from 0.20 to 300 / 700 = 0.43.
- Counts. Entry-band postings rose from 140 to 150.
The headline describes an industry turning away from entry-level roles. The working shows something narrower: 4.6 of the 6.6 points are one employer opening more of the roles it always opens, 2.0 points are a shift at one company, and more entry-level roles were opened than before. What company B's 2.0 points mean stays open. Ten postings in 200 can be chance, a change in the functions it recruits for, or a graduate intake that fell in the base window. A second window, and the decomposition by job function, narrow it down.
What a shift can mean, and what else could explain it
A fall in the entry share beside a rise in the senior share is what you would see if employers asked for more experience in the roles they open. It is also what you would see in each case below. Run the test for each before a shift goes into a note or a model.
| What else could explain it | How it moves the mix | The test |
|---|---|---|
| Company mix | A few employers with a senior-heavy mix open more roles | The fixed-mix share over a fixed list of companies |
| A growing denominator | Senior roles are added while entry roles hold | Counts beside shares, and the entry-to-senior ratio |
| Label version | Postings on each side of a date carry labels of different versions | One version in both windows, and a count of the rows the filter removes |
| Empty labels | The share of postings left without a level changes | The unlabelled count per window |
| Wording | Roles are titled or described differently while the requirement stands | The mean minimum years of experience, among postings that state one |
| Function mix | More roles open in a function that advertises few entry roles | The same decomposition by job function |
| Calendar | An intake of graduates or interns is advertised in one part of the year | The 180-day window, and the same series over all companies |
| Channel | Entry roles are filled without a public posting, or one posting stays open for several hires | The published figures on new entrants and recent graduates for the same period, by direction |
A shift that survives every test describes what the employers on your list advertised. Why they did so is a further question. Employers may ask for more experience because they are cautious about the months ahead, or because more job seekers are available, which is what the authors of the Boston papers found for their period. Postings establish what was advertised. The reason needs other evidence. The data dictionary defines every column used here, and sector hiring trends for macro and thematic research covers the other weekly hiring series.
Frequently asked questions
What counts as an entry-level job posting?
It depends on the provider's scale, so fix the definition before you measure. On the Fokals scale of nine seniority levels, this guide counts the intern and entry levels as the entry band and the senior and lead or principal levels as the senior band. A separate field holds the minimum years of experience the employer asks for, which lets you check the label against the employer's own figure.
Does a falling share of entry-level job postings mean employers expect a weaker economy?
Not by itself. A lower entry share is what caution about hiring would look like, and it is also what a change in company mix, label version, function mix, recruiting calendar or recruiting channel would look like. Hold the companies and the label version fixed, read counts beside shares, and compare the direction with official statistics on new entrants before you draw a conclusion.
Which official statistics describe entry-level workers in the United States?
The Bureau of Labor Statistics publishes a monthly count of new entrants, meaning unemployed people looking for their first job, from the Current Population Survey. Its Occupational Requirements Survey reports the education, prior work experience and training that jobs require. The Federal Reserve Bank of New York publishes quarterly unemployment and underemployment rates for recent college graduates, and states that these are not official estimates of the Bank.
Why hold the label version fixed when tracking seniority over time?
A seniority level is a label, and a different version of the labels can place some postings at a different level. If the two windows you compare carry different versions, part of a shift may belong to the labels. In Fokals Job Postings every row carries the version of its labels, and a posting keeps its version until it closes.
How does the seniority mix of postings differ from the unemployment rate of recent graduates?
They describe different things. The seniority mix counts roles that employers advertise, at each level of experience, and is written weekly. The unemployment rate of recent graduates counts people, reflects both the roles on offer and the number of graduates looking, and is published quarterly. The two can move apart, so compare their direction over the same period and treat a disagreement as a question to investigate.
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.