CourtListener is a comprehensive legal research platform operated by Free Law Project. It aggregates U.S. court opinions, dockets, oral arguments, and judge profiles from multiple sources including PACER/RECAP, Harvard Caselaw, Columbia, state courts (Florida, Texas, New York), and SCOTUS. The system provides full-text search via Elasticsearch, real-time and scheduled alerts, REST API with OAuth2, webhook notifications, citation analysis, and audio transcription. It also includes tools for bulk data import, data cleaning, and embedding generation for LLM training. Architecturally, it is a Django 6.0+ monolith with a Celery task queue (Redis broker), PostgreSQL database, Elasticsearch search engine, and S3-compatible storage. The frontend uses Django templates with Alpine.js and some React components, built via Webpack. The system runs as multiple Docker containers (web, Celery workers, scrapers, daemons). Key data flows include nightly PACER scraping, email-based RECAP document ingestion, citation extraction using eyecite, and state-specific docket merging pipelines. The system is heavily event-driven with pgtrigger-based audit trails and Redis-based throttling. While primarily an application, it has a strong data research character: extensive ETL pipelines, machine learning integration (LLMs for text extraction, OpenAI Whisper for transcription), citation network analysis, and state court data modeling. The codebase demonstrates high craftsmanship in reusable patterns like the CeleryThrottle, tiered caching, and generic merger classes, but also carries some technical debt from many SQL migrations and tightly coupled scrapers.
This repository provides the official documentation, OpenAPI specification, and client libraries for the Congress.gov API (v3), a public REST API that exposes U.S. federal legislative data including bills, amendments, members, committees, hearings, nominations, treaties, and Congressional Record content. The repo is primarily a supporting asset for the API, containing detailed endpoint documentation in Markdown, a machine-readable OpenAPI spec (openapi.yaml/json), and example client implementations in Java and Python. The Python client (cdg_client.py) demonstrates a reusable pattern with dynamic HTTP method dispatch, session management, and optional keyring-based API key storage. The Java client (CDGClient.java) uses java.net.http.HttpClient and a config file reader. The repository does not contain the actual API server implementation; it is a companion repository for developers integrating with the Congress.gov API. The codebase is well-structured, actively maintained (as evidenced by the changelog), and the documentation is comprehensive, though some minor typos exist. The duplicate client directories (java/ and api_client/java/, python/ and api_client/python/) suggest some organizational drift, but the core components are solid.