Inspiration

St. Louis County publicly releases every restaurant inspection—but the data lives in an old portal few people know exists. We wanted to make that information open, trustworthy, and easy to explore.

What it does

STL Food Agent converts raw inspection pages into structured, verifiable “receipts.” Users can browse by school or restaurant, see historical scores, and verify the official county source with one click.

How we built it

We scraped and normalized inspection data into a common Civic Receipt schema, generated JSON and Markdown records, and served them through a Next.js + TypeScript frontend deployed on Vercel.

Challenges we ran into

The county site had no API, just static HTML with embedded scripts, so parsing and normalizing dozens of edge cases took time (2 hours). Getting consistent source links and handling missing data was another hurdle (1-2 hour fix).

Accomplishments that we're proud of

We turned messy, hidden public data into a working civic product in under 48 hours and less than 12 hours of work. Every record now links back to its original source and can be easily extended to other regions.

What we learned

Civic data isn’t the problem—access is. A little structure and design can turn bureaucracy into usable infrastructure.

What's next for STL Food Agent

Add the rest of WashU dining, build citywide coverage, and open the ingestion pipeline so any county can plug in.

Built With

Share this project:

Updates