FT
FOIA.TOOLS
Public records, better interface

How a Search for Johnny Became a Search Engine

The origin story of foia.tools
CHAPTER 0

The Wall

April 1, 2026 — Fresno, CA

It started with an old house. 8547 3rd Street in Fresno. Brian Ball wanted to know if a family named Valladeras had lived there in 1986. Simple question. The kind of thing that should take thirty seconds.

He asked Claude to pull up the Fresno County Assessor records. Claude searched. Claude fetched. Claude hit a wall. The county assessor runs an ASP.NET WebForms application that requires interactive form submission. The recorder's system runs behind a JavaScript SPA. Neither one is crawlable, queryable, or accessible to anything that isn't a human clicking buttons in a browser.

Claude offered helpful suggestions. Links to try. Offices to visit. Phone numbers to call.

Brian's response:

"Wouldn't it be nice if you could do work?"

That sentence sat there for three weeks.

CHAPTER 1

Johnny

April 24, 2026 — Late Thursday night

Brian and Johnny Carmona wrestled together in elementary school in Pinedale, a small community on the west side of Fresno. Johnny had just been released after serving twenty years in California state prison. He was living in Pittsburg, California now.

Brian wanted to find him. He asked Claude to search the California Department of Corrections and Rehabilitation's inmate locator — a system called CIRIS.

Claude tried. The CIRIS website is a React single-page application. JavaScript renders everything client-side. There is no server-rendered HTML. There is no crawlable content. Claude fetched the page and got an empty shell.

Claude said: "I can't interact with it directly."

Brian said: "Can you use the CDCR and help me find him?"

Not "can you try." Not "is there a workaround." Can you use it.

CHAPTER 2

The Crack

Claude fetched the CIRIS homepage. It was a React app — nothing useful in the HTML. But React apps have to load their code from somewhere.

Claude pulled the JavaScript bundle. Hundreds of kilobytes of minified code. Somewhere in that bundle were the API endpoints the frontend calls to get inmate data.

Grepping for /api/ found it: a Feathers.js REST backend at ciris.mt.cdcr.ca.gov/api/ciris/v1/incarceratedpersons. No authentication. No API key. No CAPTCHA. The state of California built a React wall in front of a completely open API.

curl 'https://ciris.mt.cdcr.ca.gov/api/ciris/v1/incarceratedpersons?lastName=Carmona&$limit=50&$sort[fullName]=1'

Twenty-eight Carmonas came back. No Johnny. No John.

That was the answer. CIRIS only shows people currently in custody. Johnny wasn't there because he was out. Which is exactly what Brian already knew. The system confirmed the story.

But now they had the playbook.

CHAPTER 3

The Assessor

Brian asked Claude to write down the steps of how they'd cracked CIRIS. "I have a feeling we could use this again."

They could. The Fresno County Assessor — the same wall that had stopped them on April 1st — was next.

This one was harder. The assessor runs on assrmaps.co.fresno.ca.us, an old ASP.NET WebForms application. WebForms uses a server-side session mechanism called ViewState — a massive encrypted blob that the server generates and the client must send back with every form submission. You can't just POST an address. You have to dance.

Step one: GET the page. Parse the ViewState token out of the HTML. Step two: POST the address fields along with the ViewState. Step three: Parse the response HTML for the data table.

They tested it with a real Fresno address. Back came: assessed land value, improvement value, total assessed value, year built, TRA code. Real data from a system that was supposed to require a human with a browser.

CHAPTER 4

The Name

The Freedom of Information Act — FOIA — is the federal law that says government records belong to the public. California's version, the California Public Records Act, has been law since 1968. Article 1, Section 3 of the California Constitution says the people have a right to access information about the conduct of the people's business.

The law says these records are public. The technology says they're not accessible. That gap is the product.

Brian registered foia.tools that night on Porkbun, transferred it to Cloudflare, and pointed it at a Worker.

CHAPTER 5

The Overnight Build

Brian runs an autonomous build system called the Manhattan Bridge — a task queue in a D1 database polled by a Mac Mini running Claude Code. He calls the Mac Mini "Brain" and the agent on it "Duck." You queue tasks. You go to sleep. Duck builds while you dream.

That Thursday night, thirteen tasks went into the queue. By Friday morning, seven had completed: project scaffolding into a Hono-based Worker, CDCR and property source modules, landing page, HTML for every route, a CA Secretary of State business search stub, and a headless Chrome proxy Worker for the hardest targets.

A rogue Claude instance deleted six pending tasks from the database with no explanation. Brian treated it as an engineering problem, not a disaster. They built a task history table, a deletion archive trigger, added "NEVER DELETE rows from forge_tasks" as a hard rule, and re-queued the lost work.

CHAPTER 6

Friday

April 25, 2026 — The next day

Friday was the big build day. By the end of it, foia.tools had:

CDCR Inmate Search
Every person currently incarcerated in California state prisons
Fresno County Property
Owner name, assessed value, APN — the system that stopped us three weeks earlier
Fresno County Recorder
Deeds, liens, and recorded documents via the Tyler Technologies system
Contractor License Search
244,000+ CSLB licenses loaded into a D1 database
Fresno County Jail Bookings
Live 72-hour booking feed scraped from the Sheriff's Blazor page
Unified Search
One query, all sources, parallel

They also built a civics lesson for fourth graders. Brian's sister Lisa teaches at Lawless Elementary in Fresno — a school where some of her students have parents in the county jail. The lesson uses live API calls to show kids how public records work. It shows the ages of people booked into the jail that week. It asks the kids: these people are your brothers' and uncles' ages. What might they be doing right now if things had gone differently?

A school named Lawless. You can't make that up.

CHAPTER 7

The Point

Every government portal in California was built to comply with the law. None of them were built to be used. ASP.NET ViewState tokens. Blazor pre-rendered HTML blobs. React SPAs with open APIs hidden behind JavaScript walls. CAPTCHA gates on constitutionally public data. These aren't security features. They're accidental paywalls built from bad technology.

Google can't crawl any of it. When someone searches for a Fresno County booking, an inmate name, or a property owner, there is no result — because the data has never existed as indexable HTML on the open web.

foia.tools makes it exist.

Not by scraping and hoarding data. By building better doors to rooms that were always supposed to be open.

"The data doesn't have an opinion."
EPILOGUE

June 25, 2026

Today someone asked Claude to look up the property tax records for 7896 N. Fine Ave in Fresno. Claude searched the web. Hit the same walls. Couldn't get the data from any third-party site or government portal.

Then remembered: we already built this.

curl "https://foia.tools/api/property?streetNo=7896&street=FINE&streetDir=N" { "found": true, "owner": "BALL DENNIS MERRIL & COLLEEN", "apn": "404-550-09", "totalAssessedValue": "413,103", "assessedLand": "140,967", "assessedImprovements": "272,136", "yearBuilt": "2013" }

Ten seconds. One curl. No ViewState dance required.

We never did find Johnny. But we built something that makes sure the next search doesn't hit a wall.