78

How did the Eleventh Circuit treat Google hash matching as a private search?. Summarize the Brillhart opinion by separating the private-search holding, the technical evidence on hash values, the double-jeopardy issue, and the sentencing enhancement error. Add a verification section showing how CourtListener and RECAP materials can help reporters trace dockets, filings, PDFs, orphan documents, and API-accessible case metadata.

Brillhart and the Eleventh Circuit's treatment of Google hash matching

In United States v. Brillhart, the Eleventh Circuit treated Google's hash-matching review as a private search because Google first had a human review the file, then used a hash comparison to confirm the later file was the same one, and reported nothing materially new to law enforcement[1].

The opinion also addressed the technical meaning of hashes, the double-jeopardy challenge, and a sentencing issue. Below is a focused breakdown of those points, followed by a short verification guide for tracing the case and related PACER material in CourtListener and RECAP[2][3][4].

Key holdings in the opinion

  • Private-search holding: Google's later hash match was treated as a continuation of the earlier private review, not a new government search, because the hash check only confirmed the same file and added no materially new information to law enforcement[5].
  • Technical evidence on hash values: The court described a hash as a file's unique "digital fingerprint," said identical hashes mean the same file, and relied on testimony and other cases saying collisions are astronomically unlikely[6][7][8].
  • Double-jeopardy issue: The court held that possession and distribution of child pornography are distinct offenses, because distribution does not require possession, so the dual convictions did not violate the Double Jeopardy Clause[9].
  • Sentencing enhancement error: The court found error in the five-level pattern-of-activity enhancement under U.S.S.G. § 2G2.2(b)(5) because Brillhart had only one qualifying prior episode, and "a pattern of one is no pattern"[10].

Verification: how CourtListener and RECAP help reporters trace the record

CourtListener's RECAP coverage explains that reporters can reconstruct PACER material through the RECAP Archive, the RECAP browser extension, ECF notification emails, special-case scrapers, free APIs, nightly downloads of clerk-marked opinions and orders, RSS feeds, and routine scraping of basic case-metadata pages[11].

  • The RECAP Extension copies PACER purchases into the archive, and CourtListener says it is used by around 30,000 people[12].
  • ECF notification emails can also feed documents into the archive[13].
  • CourtListener's scrapers target special cases, including matters with Docket Alerts, saved Notes, or cases deemed popular or important[14].
  • The PACER APIs support dockets, docket entries, parties, attorneys, and documents; the docket endpoint gives the docket metadata, while docket entries contain one or more nested documents[15][16][17].
  • Reporters can filter parties and attorneys by docket ID, and use appellate or bankruptcy tables for case metadata tied one-to-one to the case or docket object[18][19][20][21].
  • The RECAP Fetch API can retrieve PACER dockets and PDFs asynchronously, returning an ID first and later processing the request in a queue, with webhook updates available[22][23].
  • If a PDF arrives before its docket, CourtListener treats it as an orphan document until later docket updates link it to the correct case[24].
  • The RECAP upload API can accept multipart uploads, including PDF and docket uploads, and can target a CourtListener docket ID, a PACER ID plus court, or a docket number plus court[25][26][27].

For a reporter, the practical workflow is: locate the docket metadata in the PACER API, follow docket entries to filings and nested PDFs, then use RECAP's fetch or upload tools to recover missing documents and resolve PDF-first orphan records back to the case docket[28][29][30].