Principles
- Nothing is estimated or interpolated. A value missing at the source is missing on the dashboard, and the reason is recorded.
- Published and computed values are labeled. When an agency publishes a rate, that rate is shown. When it publishes only the components, the dashboard divides them and labels the result "computed". Third-party calculations are labeled as such.
- Every series records its definition. What counts as a vacancy, which positions are covered, when it is measured, and what the denominator is. These differ across sources, and the dashboard shows them side by side.
- Verification is recorded point by point. Each state's entry says which figures were checked against the agency's own publication (not secondary reports), which could only be confirmed indirectly, and which were carried over from the October 2026 baseline workbook without re-checking.
How data flow
| Data | File | How it is updated | If the update fails |
|---|---|---|---|
| BLS JOLTS and employment series | data/national.json, data/national_monthly.csv | Automatically: scripts/fetch_national.py, run by a GitHub Action every Tuesday and Friday. It re-downloads the full history each time (JOLTS revises past months) and commits only if a value changed. | The script exits without writing; the site keeps the last good data. GitHub emails the repository owner about the failed run. |
| NCES School Pulse Panel | data/spp.json | Automatically: scripts/fetch_spp.py, same schedule. The survey's last staffing wave was October 2024; the step picks up new waves if NCES resumes. | Same: existing file kept. This step cannot block the BLS update. |
| State vacancy data | data/states.json | By hand, once states publish (most between December and April). States publish PDFs, spreadsheets, and dashboards whose links and layouts change, and figures need checking by a person (see the Iowa correction below). | Not applicable. |
| 50-state inventory | data/state_inventory.json | By hand, about once a year, following the checking protocol below. The Learning Policy Institute's annual summer scan is a useful cross-check. Watch especially for Ohio and Texas, whose new laws require vacancy collections starting in 2026-27. | Not applicable. |
National series (BLS)
All from the U.S. Bureau of Labor Statistics. Every series is retrieved directly from the BLS Public Data API v2. (The series keys below, such as JTSJOR and PAYEMS, are the familiar FRED names, kept so the downloadable files stay stable; the values are BLS's own.) Seasonally adjusted unless noted.
Request: POST https://api.bls.gov/publicAPI/v2/timeseries/data/ with series IDs of the form JTS + 6-digit industry code + 000000000 + element (JOL level, JOR openings rate, HIR hires, QUR quits, LDR layoffs & discharges). The industry table uses the latest month for 21 industries; mining & logging and transportation, warehousing & utilities are not returned by the API and are omitted.
NCES School Pulse Panel
Publisher. National Center for Education Statistics (NCES), Institute of Education Sciences; data collected by the U.S. Census Bureau.
File. StaffVac.xlsx ("Staff Vacancies" workbook, linked from nces.ed.gov/surveys/spp/results.asp). Rows used: sheet SVaverage, "All public schools", variables PCTVAC1_*_oct (teaching roles), PCTVAC2_*_oct (non-teaching roles), PCTVAC1TOT_oct and PCTVAC2TOT_oct (totals), each with its standard error; sheet All Schools, variable StaffVac1_TOT_CAT1 (share of schools with one, or more than one, teaching vacancy).
Question. From the October 2024 questionnaire: for each role, principals entered "Total number of positions at my school (filled + vacant)" and "Number of vacancies", counting each part-time position as 1. NCES reports vacancies as a percent of positions.
Transformations. None to the values. October waves are mapped to school years (October 2024 → 2024-25). 95% confidence intervals in tooltips are ±1.96 × the published standard error.
Caveats. NCES calls SPP results "experimental data." Estimates are rounded to whole percents. The sample is about 4,000 public schools. The 2024-25 survey cycle ended in July 2025, after NCES staff cuts, and no further staffing wave has been announced.
State data
Each state below: who publishes the data, exactly what it counts, every data point with its basis and source note, and the documents it came from. Rendered directly from data/states.json, the same file the dashboard reads.
50-state inventory
How each state is checked
Derived figures
| Figure on the dashboard | How it is computed |
|---|---|
| Openings per unemployed person | JOLTS openings level (JTSJOL) ÷ unemployed persons (UNEMPLOY), same month. Months missing at the source are left blank. |
| Education relative to the whole market | State & local education rate ÷ all-sector rate × 100, same month and measure. |
| 3-month average (optional) | Mean of the current and two previous months; blank if any of the three is missing. |
| Employment index | Each series ÷ its February 2020 value × 100. |
| 2015–19 averages, peaks | Simple means of monthly values January 2015 through December 2019; peaks are the maximum since December 2000. |
| October benchmarks on state panels | Not-seasonally-adjusted JOLTS openings rates for October (series JTU923000000000000JOR and JTU000000000000000JOR), mapped to the school year starting that fall. |
| Computed state rates | Unfilled ÷ (filled + unfilled), or unfilled ÷ total positions, from the components the agency published. Each computed point is labeled. |
| Illinois rates by position category | Unfilled ÷ (filled + unfilled) from ISBE/IWERC Table 5 (SY23–SY25) and the archived SY22 data set. "All staff" sums the four categories. |
| Rough split of education openings | A model. State & local education openings (JOLTS) × the local-government share of state & local education employment (CES9093161101 ÷ [CES9093161101 + CES9092161101]) gives "K-12"; that × the teacher share of public K-12 staff FTE gives "K-12 teachers". Teacher share = 3,228,895 ÷ 6,795,470 FTE (NCES Common Core of Data, fall 2022). These two NCES constants were carried over from the original October 2026 workbook and have not been re-verified against NCES. Assumes every group has the same vacancy rate. |
Known issues and open questions
- Iowa's earlier years. Iowa documents its 12-month posting window (August 20 to August 20) only for its latest release. The dashboard assumes the earlier releases used the same window when placing them on the school-year axis. Iowa's own dashboard labels the figures the same way.
- Virginia 2022-23 is a third-party calculation (SwailLandis, March 2023) from VDOE's Build-a-Table data, with a denominator labeled "FTE Teachers". The same brief also cites 2.6%. VDOE's own published series starts in 2023-24 (3.9%). VDOE's site blocks automated access, so the Board presentation's 2024-25 figure (3.4%) and rate definition were confirmed through a summary of that document.
- Illinois SY22 uses a same-year filled count; ISBE's convention from SY23 on uses the prior year's. The SY22 point is not strictly comparable.
- Colorado 2024-25 has no rate: CDE's workbook for that year has no total-positions field.
- Nebraska response among nonpublic schools was 57.8% in 2025-26; totals combine public and nonpublic schools. A different total (107 vacant, public districts only) appears in the Learning Policy Institute's scan.
- South Carolina reporting coverage varies from 71 to 83 entities across years.
- JOLTS figures are revised: the latest month is preliminary, and annual benchmark revisions can change the whole history.
- School Pulse Panel has no data after October 2024 and may not resume.
Corrections log
| Date | Change |
|---|---|
| 2026-10-10 | 50-state inventory re-verified directly. It previously relied on the Learning Policy Institute's scan for 37 states. Each state was re-checked against its own agency's publications and every classification now carries evidence links. Changes: Rhode Island (publishes counts), Wisconsin and California (publish different measures), and Ohio, Texas, Maine, New Jersey, New York, New Hampshire and Indiana (collect vacancy data but publish no statewide figures) were previously listed as publishing nothing; Florida and Montana reclassified as job-posting counts; Alaska added as a candidate (first-day vacancy dashboard with rates); Mississippi's five-year series noted. |
| 2026-10-10 | Data retrieval: economy-wide and employment series now come directly from the BLS Public Data API instead of FRED, which does not answer requests from GitHub's servers. Values were compared month by month before the switch: identical in all 309 months of all 21 series. |
| 2026-10-09 | Iowa: latest rate corrected from 1.12% (a figure from news coverage) to 1.15% (Iowa DOE). The apparent "conflict" between two Iowa releases resolved: both describe the same 434 positions; one labels it by collection year (2025-26), the other by the year the postings cover (2024-25). Iowa's measure reclassified as a 12-month flow of postings (not a fall snapshot), with a denominator of employed teachers; points re-plotted at the school year they cover. |
| 2026-10-09 | Virginia 2022-23 relabeled as a third-party calculation, not a VDOE publication. |
| 2026-10-09 | South Carolina relabeled to include service staff; coverage range corrected to 71–83 entities. Nebraska relabeled from "teaching FTE" to teaching and specialist positions, public and nonpublic. Illinois described as a survey with 92% response, not a census. |
| 2026-10-09 | State chart changed to one panel per state, grouped by comparability; state table ordered alphabetically rather than by rate. NCES School Pulse Panel added. |