Methodology

Where the data comes from, what we do to it, and the receipts.

Sources
TTB COLA registry
Every beer on hopgrail starts as a federal label filing — a Certificate of Label Approval from the Alcohol and Tobacco Tax and Trade Bureau. We read the public registry daily and keep the filing ID on every record, so any beer page can be checked against the government original. TTB publishes approvals a few days behind; our daily pass re-scans a trailing window so late arrivals still land.
Label art
The label images are the actual art filed with TTB, shown as filed. We extract style, ABV, hops, and the label's own words from the art, then verify extracted fields against the filing. Extraction is machine-read; the source line under every label names the filing it came from.
Brewery register
The brewery graph joins TTB permit lists with a snapshot of the Open Brewery DB project, reconciled into one canonical record per brewery. Where sources disagree, the government record wins on identity; the community record wins on what's actually pouring. Independent-brewer seals come from the Brewers Association certification mark.
Community signals
Ratings, sightings, and barcode links come from hopgrail readers. Community averages only appear past a minimum sample (n ≥ 15, enforced in the database). Scanned barcodes start as probable links and are promoted to verified only after distinct readers confirm them.
How label art is served

Label filings are immutable — a changed label is a new filing — so the art is served like the permanent record it is. Every image gets two pre-generated WebP derivatives (400px and 1200px long edge) cut once at ingest; pages request the size they need via srcset with explicit dimensions, and the original full-resolution scan loads only behind the zoom tap on a beer page. Everything ships with a one-year immutable cache. No per-request image optimizer sits in the path.

The receipt, measured with PageSpeed Insights (mobile) on the front page before and after the July 2026 delivery repair:

Before (Jul 16, 2026)After
Largest Contentful Paint6.4 s4.0 s
Cumulative Layout Shift0.140
Performance score6686

Full working notes live in the repository under perf/.

Corrections

When a source is wrong, we correct the record and keep the provenance. Spotted an error? The filing ID on any beer page is the fastest way to point at it — reply to any Docket issue and it reaches the editor.