feat: courtlistener local bulk import for keyless US caselaw
Add fetch_courtlistener_bulk.py: downloads CourtListener's official, no-auth bulk CSVs (citations 127 MB, opinion-clusters 2.46 GB in full) and a deterministic HTTP-Range prefix of the 54.6 GB opinions file, cut at the last complete CSV record with a quote/escape-aware scanner. The existing import_courtlistener_bulk.py loads the slice unchanged. Measured: 2.68 GB downloaded, 30m26s import, 5.87 GB SQLite with 18.1M citations, 10.07M clusters, 17,343 full-text opinions; citation lookup, case-name search, and opinion retrieval all serve locally with no COURTLISTENER_API_TOKEN. Test drives the slicer over a truncated multi-stream bz2 fixture via file:// and the real importer, proving slicer, importer, and reader agree on schema. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016yXxuitxX5h4wm1v88hnga
| Repository | eliziff/Beaver |
|---|---|
| Author | Eli Ziff <eliasziff@gmail.com> |
| Authored | |
| Parents | c3928839 |
| Stats | 3 files changed , +253 |
| Part of | A2AJ / CourtListener Canadian legal-source integration |
Capture this commit into my fork
Download a Markdown prompt that tells Claude how to port this
exact commit into your working tree. Run it via
claude -p < capture-commit-a78e30c2.md
from inside the repo you want the change in.