Method
Finding places
The search instrument is the Google Places API, the index behind Google Maps. The lower 48 and DC were covered with a grid of equal-area hexagonal tiles, each about 50 km across, and every tile was searched with a ladder of terms: county jail, correctional facility, detention center, and so on. Results were ordered by distance from the tile center rather than by Google’s idea of relevance, because relevance ranking kept padding empty prairie tiles with famous prisons hundreds of miles away. Any tile that returned a full page of results was split into smaller tiles and searched again, so dense cities got a finer net.
The sweep is deliberately greedy. It picks up sheriff’s offices, courthouses, and youth bureaus along with jails, because a wide net filtered later by evidence beats a narrow net filtered by guesswork.
Telling records apart
One facility often shows up as several map records: the jail, its parking lot, its visitation entrance. Records were merged under a fixed set of rules that errs on the side of keeping things separate. Merging two real facilities into one destroys information invisibly; leaving a duplicate behind is a mistake you can find and count later. Every merge is recorded and reversible.
Judging names
Every captured place was asked one question: does the name alone say that people are held here? The allowed answers are yes, no, and unsure, and unsure is a respectable answer. A sheriff’s office usually runs the county jail. That is exactly why it is unsure and not yes; the name does not say that anyone is held at that address.
Rosters
The strongest evidence is an agency’s own list. Dozens of roster families were collected, each with its own scraper built for the source: the federal prison bureau, all fifty state corrections systems, state jail inspection boards, juvenile justice agencies, the federal survey of tribal jails, military confinement lists, and county jail pages recovered from web archives. Scanned inspection reports were converted to text. One federal domain that forbids automated visits was read only from public archives and never contacted directly. The fetching itself ran through a small crew of workers, each behind its own VPN tunnel (gluetun) driving a hardened browser (Camoufox), slowly and politely.
Guessing addresses on the web
For places no roster names, the pipeline guesses what an official website would be called, then checks those guesses against Common Crawl, a public archive of the web. Several snapshots of that archive were searched, not the whole thing; the full archive is far beyond this project’s storage and bandwidth.
Reading the evidence
Retrieved pages were searched for the facility’s name or street address, and every custody claim was judged under a strict rule: no verbatim quote, no entry. A page failing to mention something is never proof of anything. Custody pages on non-government sites turned out to be a swamp; of the hundreds reviewed, not one was a genuine agency source, so they count for nothing in either direction.
What the web would not say
Tens of thousands of county government pages were also retrieved. Most of the unresolved places are named somewhere on their own county’s website. Almost none of those pages say that anyone is held at the address. The pages exist and name the facilities; they do not describe custody. That is the wall any web-based census hits, it is why rosters come first, and it is why the unconfirmed records sit in a candidate queue instead of the trash.
Details and coordinates
Capacity, population, operator, and security level come from rosters and quoted text; a bed count on some page never promotes a record by itself. Addresses were turned into coordinates offline using the Census Bureau’s own street files (TIGER), so anyone can rerun the geocoding without an account anywhere.
Photographs from above
Every mappable record carries a recent aerial photograph from the USDA’s public-domain NAIP program, with its acquisition year. The photographs are there so a person can look. Nothing in the census is decided by software reading an image.
Checking the work
Two checks that share no machinery. First, a blind audit: an auditor re-examined the whole list without being shown the evidence grades, and its false-alarm rate was measured on the roster-confirmed records where the truth is known. Second, an outside dataset of scraped jail listings, located entirely from Census street files, was compared against the census; it agrees with the strong tiers more often than the weak ones, which is what you want to see.
The federal map
Finally the census was compared, blind, against HIFLD Prison Boundaries, the federal government’s map of prison sites. Most of the apparent disagreement dissolves on inspection: closed facilities, naming habits (“Sheriff’s Office” versus “County Jail”), and small coordinate differences. Below the county level the two simply measure different worlds; municipal lockups and tribal jails are largely outside HIFLD’s scope, and blandly named facilities are invisible to a name search. Each method is blind where the other sees. The match rate against HIFLD falls step by step down our own evidence grades, though the grades were never tuned to HIFLD. The federal map acts as an outside examiner, and the grades pass.
The grades in this build
| evidence tier | meaning | mappable, in published census |
|---|---|---|
operator_confirmed | a government or operator roster names it | 2263 |
evidence_confirmed | a verbatim quote ties custody to this address | 1522 |
classifier_yes | two independent name-only passes agreed; no document | 1193 |
roster_only | on a roster, never matched to a captured place | 0 |
name_tag_inferred | judged from name and address alone; a candidate list, never "confirmed" | 159 |
Mappable published-census records only, from the build named in the footer. Records without site-level coordinates are absent from the map, left blank rather than placed falsely. The grades are never collapsed into a single yes or no; they mean different things.