A live tool that aggregates California fire-department news by city and county.
You choose what to track, click Run Scrape, and the app pulls fresh coverage from
Google News, auto-categorizes each story, and lets you filter, search, and export it.
Architecture at a glance
Browser UISingle-page vanilla HTML / CSS / JS — no framework
→
FastAPI · UvicornPython REST API + background scraper
→
Google News RSSPublic search feeds, queried per place
SQLiteStores articles, de-duplicated by URL
JSON configEditable city & county lists (persist across redeploys)
What happens when you scrape
1
Kick off
Clicking Run Scrape starts a background job on the server — the UI stays responsive and shows a live progress bar.
2
Query the news
For every city and county on your lists, it runs six targeted Google News searches (budget, staffing, leadership, incidents, and more).
3
Categorize
Each headline is tagged by keyword rules into Budget/Funding, Staffing/Labor, Incident/Disaster, and other categories.
4
Store
Results are de-duplicated by URL and written to SQLite, so re-running a scrape only adds genuinely new articles.
5
Explore
Switch between Cities and Counties profiles (or save your own), filter and search, sort columns, and export the current view to CSV or Excel.
The stack
FrontendVanilla HTML/CSS/JS served as static files — fast, dependency-free.
BackendFastAPI on a Uvicorn ASGI server (Python).
StorageSQLite file database + JSON config for place lists.
Data sourceGoogle News RSS — no API keys or paid services.