Veteran Workforce Pulse
How veterans are doing in the job market, against everyone else — from the government’s own numbers.
This dashboard was not assembled by hand. It is the output of a program written in Kiln, a programming language I designed and built — the program calls the Bureau of Labor Statistics live, computes every figure from the response, and refuses to guess where the data has a hole.
Data through June 2026· pulled live from BLS July 12, 2026· not seasonally adjusted
Veterans
4.1%
unemployment, June 2026
Nonveterans
4.1%
unemployment, June 2026
Veteran gap
0.0
points vs nonveterans — even
Vs year ago
+0.4
points higher than June 2025
Unemployment rate, 18 and over, monthly. October 2025 is shown as a hole because BLS did not publish it (the household survey was disrupted that month) — the program leaves the gap rather than inventing a value. Hover or tap for exact figures; the full table is below.
Month by month
| Month | Veterans % | Nonveterans % | Gap (pts) |
|---|
What the numbers say
- Right now they’re even. Veteran unemployment was 4.1% in June 2026 — exactly the nonveteran rate. No gap, in either direction.
- For most of the year, veterans did better. In 10 of the 12 published months, the veteran rate ran below the nonveteran rate — as much as 1.6 points below in September 2025.
- But the year got harder for everyone, veterans included. The veteran rate is +0.4 points above June 2025 (the honest comparison for unadjusted data: same month, a year apart). Best month in the window: September 2025 at 2.6%. Hardest: January 2026 at 4.5%.
Where this comes from, exactly. U.S. Bureau of Labor Statistics, Current Population Survey, via the BLS public API v2 — series LNU04049526 (unemployment rate, veterans 18+) and LNU04049601 (nonveterans 18+), not seasonally adjusted. An official statistical agency, queried directly — no middleman dataset.
Every figure on this page was computed by the program from the live BLS response on July 12, 2026; nothing was typed in by hand. Because the series are not seasonally adjusted, month-to-month wiggles are partly seasonal — the fair comparison is the same month a year apart, and that is the one the program makes. Where BLS published no number (October 2025), this page shows the hole instead of filling it.
A glimpse of the source
The whole dashboard above is the output of one program that reads like this. Kiln is a language built so the program says what it means — and so its errors teach instead of scold.
# kiln program — Veteran Workforce Pulse (LIVE) # about: pulls veteran and nonveteran unemployment rates LIVE from the Bureau of # Labor Statistics and renders a findings dashboard. Every number is computed # from the live pull at run time; the "as of" month comes from the data itself, # never from this file. If the pull fails, the dashboard says so plainly. attempt set bls to http.post with "https://api.bls.gov/publicAPI/v2/timeseries/data/" (a record with seriesid (a list of "LNU04049526", "LNU04049601"), startyear "2024", endyear "2026") set verdict to bls's status if verdict is not "REQUEST_SUCCEEDED" then report problem "BLS answered '" + verdict + "' instead of success — usually the daily unregistered quota (25 queries). Try again later." end … the numbers — alignment by month, the gap, year-over-year — are computed here … say "Live from the Bureau of Labor Statistics — veteran vs nonveteran unemployment, 18 and over, not seasonally adjusted. As of **" + nowLabel + "** (pulled at run time)." on problem p say "**The live pull failed.** " + (p's message) + " (line " + (p's line) + ")" say "_This dashboard renders only from live data — nothing is cached into the file, so a failed pull shows this notice instead of stale numbers. The usual causes: no network, or the BLS unregistered tier's 25-queries-per-day quota._" end
How this was made
I built a programming language. It’s called Kiln, and it exists because most tools fail people at the same moment: when something goes wrong and the machine answers with a stack trace. In Kiln, every error names the line, says in plain words what it expected, and suggests a fix. A program is never allowed to pretend it succeeded when it didn’t.
This page is a working demonstration. The dashboard above is the output of one Kiln program — about two hundred lines that call the Bureau of Labor Statistics’ public API, line the veteran and nonveteran series up month by month, compute the gap and the year-over-year change, and render what you see. I didn’t type any of the numbers. I ran the program on July 12, 2026, and baked its output into this page with the date stamped on it.
The part I care most about is what the program won’t do. BLS never published October 2025 — so the chart holds the hole open instead of smoothing over it. The series aren’t seasonally adjusted — so the program compares June to last June, not June to May. And if the live pull fails, the dashboard says so in plain language rather than serving stale numbers. Honest data work is mostly a list of things you refuse to do.
Why veterans? Because it’s my community — I’m a post-9/11 Army veteran, and tracking how veterans are actually doing in the workforce is part of the advocacy work I already do. The tool and the mission share a page on purpose.
Kiln is proprietary and copyright-registered; the language, engine, and tooling stay private. What you’re seeing here is what it produces. If your team needs someone who can design a system, build it end to end, and keep it honest under real data — I’m easy to reach.
— Patrick Neil Bradley