The challenge
The site caps results at 150 per query, silently dropping ~85% of a large institution's data.
The solution
A Python/Playwright scraper walking all 323 GA institutions with adaptive partitioning (subdivide by last-name first-letter until under 150), outputting 18 columns/charge to offenders.csv, with progress.json for resume and rebuild_progress.py for recovery.
Results
50K+
Records
323
Institutions
100%
Coverage
Resumable
Recovery
