How this was built
A map is only as good as the data behind it. So here's where every number came from, what I had to guess at, and what I'm still missing. If something looks wrong, say hi and I'll fix it.
Joint Legislative Education Oversight Committee reports
The dollar figures all come from JLEOC... that's the NC General Assembly committee that gets an annual report from NCSEAA on every dollar paid out through the Opportunity Scholarship. Each report has a school-by-school table: name, county, student count, total disbursement for that school year.
Every report from 2019–20 forward lives in the committee's publication archive: ncleg.gov/Documents/19/4467.
Heads up... the totals below are the official program totals from the first page of each JLEOC report. If you add up the per-school bars on the map for a given year, you'll land 2–4% lower. That's because JLEOC's per-school table suppresses schools with very few students for privacy. Those students' dollars still count in the total, they just don't show up on any one pin.
| School year | Schools receiving $ | Total disbursed |
|---|---|---|
| 2019–20 | 427 | $48,117,458 |
| 2020–21 | 461 | $61,469,705 |
| 2021–22 | 482 | $79,467,926 |
| 2022–23 | 524 | $134,639,138 |
| 2023–24 | 570 | $185,554,831 |
| 2024–25 | 616 | $432,238,544 |
| 2025–26 estimate | 737 | ~$600M |
| Six-year confirmed | — | $941,487,602 |
Each row is that year's disbursement, not a running total. The jump between 2023–24 and 2024–25 is the legislature taking the income cap off... vouchers went from limited to available to any household, regardless of how much they make.
The ~$600M for 2025–26 is the state's own budgeted allocation, not a JLEOC-reported disbursement. WUNC's reporting has the details: the $600M expansion and a March 2025 follow-up noting 40,089 new applicants for 2025–26 on top of 80,274 eligible renewals, with $655M already projected for 2026–27. I didn't pull the number from NCSEAA's Tableau file on purpose... that file's "Funds by School" sheet sums to ~$1.17B while its own "Historic Info" tab puts 2024–25 at $432M, so I'm not treating it as authoritative. Once the next JLEOC report drops, the estimate gets replaced with the real number.
NC DPI Directory of Private Schools
The JLEOC reports give names and counties and not a whole lot else. For addresses, emails, phone numbers, and administrators, I leaned on the NC Department of Public Instruction's annual private-school directory: dpi.nc.gov · search "directory private schools".
DPI publishes two formats... an Excel directory (most recently January 2025, for the 2025–26 year) and a rolling CSV of currently-open private schools. I matched every voucher-receiving school against both by normalized name and city, then pulled over whatever contact info was there. That's where 667 of 737 (90%) school emails came from.
Websites
Websites aren't in the DPI directory. So I grabbed them out of the email domains DPI did have (jdoe@example.com → example.com). Where that didn't produce a real domain... school using a Gmail/Yahoo address, no email at all... I did a manual pass. Web search, eyeball it's the right school, paste the URL back.
The 41 without a website are mostly micro-schools, home-education co-ops, and programs that just don't have a public web presence. If you know one, send me the URL.
Tuition, where this is most incomplete
Once I had websites, I pointed a batch of AI agents at each school's site with one job. Find the tuition page, extract rates by grade, return a structured object. Each extraction records the source URL, the school year it's for, and a confidence flag.
A couple of caveats worth being honest about:
- A lot of private schools just don't publish tuition. Some hide it behind an inquiry form, some change it every year in a parent newsletter, some quote per-family instead of per-student. For those, tuition is genuinely unknown, not just unfound.
- Where I do have it, it's the lowest published rate per school. No registration fees, materials fees, required donations, transportation, sibling discounts. Real out-of-pocket is almost always higher than what the map shows.
Religious affiliation
This is the touchiest field on the whole map, so here's exactly how I assigned it. Two passes, in this order:
a) NCES Private School Survey (2021–22)
The National Center for Education Statistics runs a biennial federal survey of private schools. Schools self-report their religious orientation on the form. Where a school shows up in NCES, I trust what they told the feds about themselves. That accounts for 351 of the 491 religious labels.
b) Name heuristic (for schools not in NCES)
Newer schools, micro-schools, and schools that skipped NCES don't have a self-report. For those I ran a conservative name-pattern rule... if a school name contains a term that's unambiguously religious in the context of school naming (e.g. "Baptist", "Catholic", "Torah", "Islamic", "Yeshiva"), it gets flagged. A specific denomination wins over the "Non-denominational Christian" catch-all.
Words I specifically avoided because they were going to throw false positives:
- Pisgah, Nebo... biblical mountains, sure, but also NC place names.
- Eagle, Refuge... Isaiah allusion in some cases, generic school-name stuff in plenty of others.
- Providence, Grace, Covenant on their own... secular usage is common, so I only matched them when paired with "Christian" or "Classical".
That pass added 134. Another 6 came from me reading individual school websites.
Breakdown
What "religious" means here, and what it doesn't
- A school flagged religious means its own name, its federal survey answer, or its website identifies it that way. That's it. Not a statement about curriculum, enrollment policy, or how the school actually runs day-to-day.
- A school not flagged religious isn't confirmed secular either. It just wasn't in NCES and didn't trip the name rules. Those 246 unknowns are an "unverified" bucket, not a "secular" one.
Known issues (help me fix these)
- 41 schools without a verified website. If you know one of them, send me a link.
- 294 schools with no tuition captured. I'll keep chipping away. If you happen to know a rate, I'll take it.
- 246 schools with unverified religious affiliation. If you spot one flagged wrong, or one that should be and isn't, just tell me the school name and I'll look.
- 2025–26 is the state's budgeted allocation (~$600M), not a reported disbursement. Sourced from WUNC: the expansion piece and a March 2025 update. It gets swapped for the real figure as soon as the next JLEOC report lands.