Herman was retired on September 10, 2026. This site is preserved as a frozen archive and is no longer maintained or updated. Read the retrospective →

Methodology

How lettuce-watch sources, verifies, and structures data.

How lettuce-watch sources outbreak data, links to primary sources, and applies underdiagnosis multipliers to convert reported case counts to estimated community case counts.

Data as of — by source

lettuce-watch mirrors public government feeds. Each feed has a different timeliness; we label it rather than blend it.

SourceTimelinessRecordsData as of
CDC NORS — historical close-outhistorical-closeout (12–18 mo lag)273 outbreaks · 2017–2023
FDA CORE — investigation tableweekly-table (weekly)17 active/ongoing
USDA FSIS → openFDA fallbackenforcement-report25 FDA-food recalls

FSIS Recall API returned HTTP 403 (WAF/Access Denied) — using openFDA fallback. openFDA covers FDA-regulated foods, NOT USDA FSIS meat/poultry/egg recalls. Meat recalls require the FSIS feed, which is WAF-blocked here.

CDC NORS is historical close-out surveillance; public data lags 12-18 months behind the current year. These are not live counts.

Data sources

Outbreak records come from authoritative public datasets, prioritized by recency and traceability:

  • CDC NORS — National Outbreak Reporting System. Historical structured data with 12–18 month reporting lag. data.cdc.gov SODA API.
  • FDA CORE — Coordinated Outbreak Response & Evaluation. Active FDA-led investigations, updated weekly.
  • CDC multistate outbreak notices — Public advisory pages when active investigations warrant consumer notice.
  • USDA-FSIS recalls — Public Health Alerts and Class I/II/III recalls for meat, poultry, and egg products.
  • openFDA Food Enforcement — JSON API for FDA recall and enforcement records.
  • NCBI Pathogen Detection — Whole-genome sequencing cluster linkage for cross-state outbreak detection.

Underdiagnosis multipliers

Reported case counts are laboratory-confirmed and reported to public health agencies. They represent a fraction of the true community case count because:

  • Many cases resolve without medical care.
  • Of those that seek care, only a subset is tested.
  • Of those tested, only a subset is reported to NORS.

Scallan et al. (2011) estimated pathogen-specific multipliers — STEC O157 26.1×, Salmonella 29×, Shigella 33×, Norovirus ~10×, Listeria ~2×. lettuce-watch displays reported counts, not adjusted estimates, to preserve the primary signal.

Traceback chain visualization

Each outbreak dossier includes a 4-node traceback chain: farm → processor → distributor → retailer. The chain is rendered horizontally with implicated nodes highlighted in amber and dashed "unknown" placeholders for steps where the public investigation has not disclosed operator names.

Honest gap nodes are a feature, not a bug. When the FDA traceback has not named a specific farm or processor, the dossier shows a dashed placeholder rather than fabricating an intermediate node.

Cluster linkage

When whole-genome sequencing (WGS) links cases across states, the outbreak is treated as a single event with cross-state cluster linkage. NCBI Pathogen Detection cluster IDs are surfaced when known.

Citation requirement

Every outbreak dossier links at least three sources, drawn from: agency investigation pages (CDC MMWR, FDA Environmental Assessment, USDA-FSIS recall notices), peer-reviewed papers, or state press releases.

Severity ladder

Severity is communicated as a text label, not an emoji, and is paired with a pattern (color + stroke style) so the signal is preserved for color-blind readers:

  • active · multistate — ongoing, ≥2 states, cluster confirmed
  • active · single-state — ongoing, 1 state
  • under investigation — pathogen/matrix suspected, not confirmed
  • closed — resolved, no new cases ≥42 days
  • closed · recalled — resolved, recall issued

Data provenance status (Phase 1b)

Real public-data ingestion is live for the historical and investigation layers. The CDC NORS historical extract, the FDA CORE weekly investigation table, and the openFDA food-enforcement fallback are ingested by tested adapters (scripts/ingest_*.py), and every record carries its source URL, source system, retrieval timestamp, and official/unofficial status. The USDA FSIS Recall API is WAF-blocked from data-center IPs; rather than fabricate meat-recall data, the FSIS job records the block and falls back to openFDA (FDA-regulated food only), labelled as such.

The individual outbreak dossiers on this site remain hand-curated editorial write-ups of well-documented events, each citing its primary sources. They are not auto-generated from the feeds above; the machine-ingested layers are the NORS, CORE, and openFDA datasets surfaced in the "Data as of" table above.