The published record · Methodology & sources
Methodology & sources
How this page is built, what each badge means, what is computed rather than transcribed, and every defect known to exist in the source documents.
What this is
Everything Arkansas has published about its Education Freedom Account programme, charted. The programme's entire published record is two annual reports, a series of appropriation acts, and a homeschool count series. The page draws all of it, and then records what is missing.
The five badges
Every figure declares what kind of claim it is before you read the number.
- published
- The state printed it in a report or an appropriation act. Reproduced, not recalculated. Where the source states a total, the transcription is checked against it.
- derived
- Arithmetic on published figures, with the arithmetic shown, plus an independent cross-check against a different published figure.
- obtained
- State-held records released to a named requester under freedom-of-information law and published by someone else — not published by the state.
- reported
- A figure the department stated to a journalist, appearing in no state document and in no released record. Attributed, exact, and unverifiable against anything the state has published.
- absent
- The state does not publish it. Each entry records what was checked, where, when, and what came back.
Obtained is not a concept diluting the others. It is the absence register's own “collected, not published” category seen from the other side: the register row says the state holds tuition data and will not print it, and the chart shows the number a requester got anyway. They cross-link on the page deliberately.
Reported is the third face of the same coin, and it was added on 27 July 2026 to fix a defect in this page. Until then the three 2026-27 approval counts were badged obtained. They should not have been: the article attributes them to a named department spokesperson, not to released records — and it does so in the sentence directly after the “nearly 57,000” this page refuses on the grounds that a spokesperson said it. The page was enforcing a rule against one figure and breaking it for three others, then badging the breach as records-obtained. Separating the tier fixes that, and it makes something visible that a footnote would have buried: the most current participation figures for a programme with a $309m appropriation exist only as a quote to a newspaper.
The tier list is defined in exactly one place — TIERS in
build_efa_json.py — and reaches this page through the data file. The check
script asserts that the project README, the working methodology document, this page and the main
page all state the same set, so they cannot drift apart.
Sources
Primary — the state's own publications
- 2023-24 EFA Annual Report (OSCPE) — Figures 1–3, Tables 1–3.
- 2024-25 EFA Annual Report (OSCPE) — Figures 1–5, Tables 1–8 and 11, Appendices B–D.
- Appropriation acts and ALC-PEER exhibits — the appropriation series, 2023-24 to 2026-27.
- DESE State Aid Notices; Act 909 of 2025 — foundation funding rates, used to compute the award.
- DESE annual home school reports — the 1997-98 to 2025-26 series.
- Ark. Code Ann. § 6-18-2505 — the 90% allocation rule and the fee withholding.
- DESE EFA “Information for Families” and FAQ — the net-of-fee award amounts.
Obtained — released under FOIA, published by a third party
Arkansas Advocate, “Applications show gaps between Arkansas vouchers and private school tuition rates”, Antoinette Grajeda, 1 July 2026. The article's own sourcing sentence:
Data was collected from Educational Freedom Account program applications provided by the Arkansas Department of Education through a state Freedom of Information Act request.
Eight 2026-27 figures come from this article, in two tiers — because the article itself has two kinds of sourcing in it, and the sentence quoted above describes only one of them. All eight are drawn on the page.
- Badged obtained, from the released application records: average tuition of about $9,800, and the school-application counts (176 applied, 164 approved, 2 denied, 10 under review).
- Badged reported, attributed in the article to a named department spokesperson: 51,041 applications approved — 28,096 private school, 22,945 homeschool, as of 26 June 2026.
The split is not judgement applied after the fact. Each figure carries a source kind in the data file, the badge is resolved from it mechanically, and the check script asserts that no figure is rendered under a badge its source kind does not earn.
Deliberately excluded: the article's “nearly 57,000 students applied”. The reason is precision, not provenance — it comes from the same spokesperson, in the same breath, as the approval counts the page does plot, so provenance cannot be what separates them. The speaker hedged this figure and did not hedge those. Drawing a round number the source itself qualified as a precise bar would assert a precision the source disclaims, so the 2026-27 funnel row begins at approved and the applications figure is quoted in words instead. The exclusion, its reason, and the fact that it shares a speaker with the plotted figures are all recorded in the data file, not only here.
The as-of date is derived, not stated. The article says “as of Friday” and published Wednesday 1 July 2026; the preceding Friday was 26 June 2026. It is labelled as derived from the publication date wherever it appears.
The build contract
build_efa_json.py upstream tables → data/efa.json
build_downloads.py upstream + efa.json → data/downloads/*.csv
build_xlsx.py data/downloads/*.csv → the workbook
build_vintage.py data/efa.json → data/vintage.json (LAST)
spot_check.py re-derives everything and asserts it (GATE)
No number reaches the page except through the data file. Renderers compute layout, never content. This is enforced rather than merely intended: the check script scans the renderers for data-shaped numeric literals and fails on any that is not an axis tick or a viewBox constant.
That rule exists because of a specific failure. The proof-of-concept version of this page carried four 2026-27 figures as literals inside its renderer functions, where they bypassed the data layer entirely and no check could see them. They turned out to be real and well-sourced — but the citation had been lost between the research and the artifact, and nothing in the artifact could have told you that. They are now data with provenance fields, and the class of defect is closed by a test.
The check script does not trust the data file: it reads the source tables, re-derives every quantity independently, and compares — including re-implementing the name normalisation rather than importing it, so a bug shared between builder and checker cannot pass. Current count: 383 assertions, all passing.
Derived figures, and what cross-checks them
Implied per-school dollars = a school's participants × that year's allocated award. Per-school dollars do not exist for 2023-24, so growth in money received cannot be read off the reports; this computes it from two published numbers. Cross-checked twice:
- Appendix B (spring 2025 only) against implied full-year dollars, for the 45 schools with 60 or more participants: median ratio 47.6%, against the 50% the footnote implies.
- Appendix B's total against the same report's full-year total: $43,185,261 ÷ $84,506,226 = 51.1%. This needs no reconstruction at all and is the stronger of the two.
The award series is computed, not transcribed. Each year is 0.90 × the prior year's foundation rate, and all four match the published figures exactly ($6,672 / $6,856 / $6,994 / $7,346). The chart therefore demonstrates the statute rather than restating it. The net amounts ($6,864 and $7,208) are not derivable and are carried as cited constants; no net figure was published for 2023-24 or 2024-25, so none is drawn for those years.
Matching, and why there is no fuzzy matching anywhere
Schools appear by name only — no code, no ID, no address. Matching is exact on a normalised name: case, punctuation and spacing removed, and the parenthesised city stripped. Stripping the city is what makes campuses collapse, so every use of the cross-table key reports its collision count:
- 2023-24: 97 rows → 92 keys (5 collapse, including three St. Joseph Catholic School campuses)
- 2024-25: 126 rows → 122 keys (4 collapse)
- 68 of the 126 2024-25 rows match a 2023-24 name; 58 do not
- 65 keys match, which is why the growth chart draws 65 lines while the identifier chart counts 68 rows — three matched rows share a key with another
No fuzzy matching was attempted anywhere in this project. It is known to mis-match Arkansas school names, and an earlier trial produced a documented false match (“Saline County Christian School” → “Clover Community School”). The check script asserts that no build script imports a fuzzy-matching library.
Two source defects this build surfaced
- The 2023-24 mean share does not reproduce. Averaging that report's own 97 per-school percentages gives 37.9%; the same report states 39%. Not an extraction error: the column sums to the report's own 5,548 participants exactly, and an enrolment-weighted mean gives 26.5%, so it is neither. The 2024-25 equivalent does reproduce (47.8% against a stated 48%). It appears as a failing row in the reconciliation table rather than being smoothed over.
- The 2024-25 report gives two Succeed Scholarship figures — $7,617 on p3 and $7,618 on p5. $7,618 is 100% of the prior year's foundation exactly, so p3 is a typo in the source. It is recorded as the source defect it is rather than silently corrected.
Anomalies carried from the extraction audit
- Appendix B does not reconcile to its own printed total, by $27 — in the source. 1,971 rows sum to $43,185,261 against a printed $43,185,234. The appendix prints whole dollars for cent-level values. Reproduced, not patched.
- Appendix B covers one semester only. Provider identities for autumn 2024
“could not be reliably determined”. Every row carries
period = spring_2025_only. Never sum it as a year. - The two Table 2s cover different, consecutive transitions — 2023-24→2024-25 and 2024-25→2025-26. They must never be differenced. An earlier claim that they contradict each other was withdrawn; it was an artefact of stamping one transition label on all 224 rows.
- No persistent school identifier, and the population changes between years. 58 of 126 have no prior-year name match: an upper bound on genuinely new schools and a lower bound on nothing. The state's own private-school directory cannot fix it — no stable ID, the school name truncated at 30 characters in the source database, and 15–23% of EFA schools absent from it entirely.
- Cross-table matching requires a key that collapses campuses. See above.
- Appendix B recipient names are not the same strings as Table 1 school names.
BAPTIST PREPagainstBaptist Prep. The join is exact-normalised and reports its miss rate: 103 of 122 keys matched, and 9 appendix keys merge two or more printed rows. - ATLAS percentages do not sum to 100 on 6 of 14 rows (99 or 101). The source rounds each level independently. Stored and drawn exactly as printed; rows that do not sum to 100 say so on the chart. Not normalised.
- A retention rate above 100% is printed — The Huda Academy, 105.3%. Stored as printed, not clipped.
- The 2024-25 Table 2 contains a Homeschool aggregate row among its named schools: 126 schools + 1 aggregate = 127. Flagged in the data and excluded from every school-level chart.
- Per-school dollars for 2023-24 do not exist in the published record at all.
Completeness
All 27 numbered tables, figures and appendices in both reports are accounted for on the main page's completeness audit, which is enumerated programmatically from the documents rather than from their contents pages. Of those, 13 were missed by the first pass and found by a later sweep, and 4 are deliberately unused: Figure 6 restates the programme's cost against the DESE budget, Tables 9 and 10 disaggregate Table 8 by sector and add no instrument not already present, and Appendix A is definitional prose.
Scope
One page. No drill-down, no map, no per-school view. If a chart needed data we do not hold, the chart was cut rather than the data estimated. The ProPublica and Delta Institute material on this programme is journalism, not this project's data, and is not republished here.
Licence and citation
CC BY-NC 4.0. The published CSVs and the workbook carry the same grant.
Rush, Joel. Arkansas EFA — the published record. Sidetown Labs, 2026. https://arkansas-efa.sidetownlabs.com/.