About Project 1960

Mission

We track and analyze Department of Justice prosecutions under 18 U.S.C. § 1960 (money transmission without a license), with a particular focus on cryptocurrency-related cases.

This project creates an open dataset for researchers, journalists, and policymakers to understand how federal authorities are enforcing money transmission laws in the digital age.

Independent research disclaimer

Project 1960 is an independent research project. It is not affiliated with, endorsed by, or operated by the U.S. Department of Justice or any other government agency.

Press-release text and classifications are provided for research and journalism. Do not treat extracted enrichment fields as official court findings. Verify primary sources (DOJ releases, dockets, counsel) before relying on any record for legal, commercial, or enforcement decisions.

What we do

Data collection
  • Scrape DOJ press releases (2009–present)
  • Filter for 18 USC 1960 or cryptocurrency mentions
  • Store structured data in a searchable database
  • Idempotent scraping to avoid duplicates
AI-powered extraction
  • LLM parsing of press releases
  • Structured rows in a relational schema
  • Participants, agencies, charges, and more
  • Tables suited for deep analysis

Methodology

Pipeline
  1. Scraping — collect press releases from the DOJ API.
  2. Filtering — keyword identification of relevant cases.
  3. AI extraction — LLM analysis into structured entities.
  4. Storage — relational SQLite with enrichment tables.

Targeted prompts ask the model to act as a legal analyst reading each release and filling normalized tables. Unstructured text becomes a queryable dataset.

Relational schema

cases (primary)
   ├─ case_metadata
   ├─ participants
   ├─ case_agencies
   ├─ charges
   ├─ financial_actions
   ├─ victims
   ├─ quotes
   └─ themes

Hosted explorer: project1960.rizzn.net (PHP). Source: GitHub.

Current status

18289

Total cases

4310

18 USC 1960 mentions

14695

Crypto mentions

JSON API

  • GET /api/stats/ — dashboard statistics
  • GET /api/cases/ — recent cases (limit 100)
  • GET /api/enrichment/?id=… — enrichment tables for a case
  • GET /health/ — liveness