- lower cost per new contact than the vendor scrapers
- 17x
- of new contacts since launch come from the engine
- 98%
- website platforms covered by configuration
- 20+
2026 · Owner, design to production
Config-driven contact scraping engine
One engine, configured per website platform instead of coded per website, now finds almost every new government contact the platform adds, at a fraction of what vendor scrapers cost.
- Python
- BigQuery
- Cloud Run
- Postgres
- Gemini
- pytest
- 01
The problem
Decision-maker contacts came from vendor scrapers that were expensive per contact, slow to extend to a new kind of website, and silent when a site changed its layout. Thousands of agency websites, built on dozens of platforms, were out of reach.
- 02
What I built
A scraping engine where each website platform is a configuration, not a code path. Pages are fetched and parsed, candidates are matched against existing contacts through a shared deduplication library, and results land in the warehouse with their provenance.
- 03
Failing loudly
The part I care most about. When a site changes its layout, the engine detects that its configuration is stale and says so, instead of reporting success with no data. Every run shows up on the observability dashboard with its cost.