记忆

food-recall-radar

试用

Use when you want to check whether food you actually bought is affected by an active recall, after hearing news of an outbreak or a brand recall, when organizing the pantry, after a grocery run, or on a schedule (weekly recall audit) — builds a personal pantry inventory of brands/products/UPCs, queries openFDA's live food-enforcement recall database, fuzzy-matches your items against ongoing Class I/II/III recalls with lot-code pattern extraction, and outputs a risk-ranked action list (check / discard / return-for-refund).

它能做什么

Food recalls happen constantly — thousands per year in the US alone — but almost nobody hears about the one that affects *their* pantry. News covers outbreaks (Listeria in ice cream, Salmonella in eggs, undeclared peanuts in a cookie), not the 200 quieter recalls of store-brand products. The FDA's…

技能文档

Food Recall Radar

Overview

Food recalls happen constantly — thousands per year in the US alone — but almost nobody hears about the one that affects their pantry. News covers outbreaks (Listeria in ice cream, Salmonella in eggs, undeclared peanuts in a cookie), not the 200 quieter recalls of store-brand products. The FDA's own estimate is that recalls reach consumers only a fraction of the time, and contaminated lots sit in kitchens for weeks. The gap isn't data — recalls are public within days — it's matching: nobody has the patience to cross-reference a scrolling recall list against their own groceries.

This skill closes that gap with a personal pantry inventory + live recall matching:

  1. Pantry inventory — record what you buy (brand + product, optionally UPC and lot). A one-time 15-minute pantry scan, then 20 seconds per grocery run.
  2. Live matching — pulls ongoing recalls from openFDA's food enforcement database (no API key required for light use) and fuzzy-matches against your items: brand containment, product-token overlap, sequence similarity.
  3. Lot intelligence — extracts lot/code/date patterns from the recall notice and tells you exactly where to look on your package, instead of making you re-read the whole notice.
  4. Ranked actions — Class I (reasonable probability of serious harm) first: check the package / discard / return for refund.

Everything is offline-first: pantry is local JSON, recall data can be cached with --offline, and the script is pure stdlib.

When to Use

  • Heard about a recall/outbreak — "wasn't there a spinach recall? did we buy that brand?" → match
  • Weekly household audit — 30 seconds, catches the recalls you never heard of → audit
  • After a grocery run — add new items in one command → import-receipt
  • Pantry reorganization / moving — build the initial inventory → add
  • Vulnerable household — pregnant, elderly, under-5, immunocompromised, allergies: undeclared allergen recalls are Class I for you even when rated II for the general public
  • Don't use for: pet food (FDA maintains a separate animal-food enforcement file), drugs, or devices — different openFDA endpoints; and never for diagnosing illness — that's a doctor.

Commands

# Record what you own (UPC optional but makes matching near-exact)
python3 scripts/recall_radar.py add --brand "Pillsbury" --product "Golden Layer Biscuits" \
    --upc 018000000000 --lot "K1234" --notes "bought 2026-08-30, fridge"
python3 scripts/recall_radar.py add --brand "Simple Truth" --product "Organic Baby Spinach 5oz"

# Paste a whole receipt / shopping list at once: "Brand Product" per line
python3 scripts/recall_radar.py import-receipt
Pillsbury Golden Layer Biscuits
Simple Truth Organic Baby Spinach 5oz
^D

# Check your pantry against LIVE ongoing recalls (openFDA)
python3 scripts/recall_radar.py match

# Broad weekly audit — active recalls + category heuristics even without brand hits
python3 scripts/recall_radar.py audit

# Use a cached JSON file instead of the network (offline / rate-limited)
python3 scripts/recall_radar.py match --offline --data references/sample-recalls.json

# Manage inventory
python3 scripts/recall_radar.py list
python3 scripts/recall_radar.py remove --brand "Simple Truth" --product "Organic Baby Spinach 5oz"
python3 scripts/recall_radar.py report          # full history of matched recalls

Pantry lives at ~/.pantry.json (--file to override). An openFDA API key is optional (--api-key or OPENFDA_API_KEY env) — without one you get a lower rate limit, which a weekly household audit never approaches.

How Matching Works (so you can trust or override it)

Every ongoing recall is scored against every pantry item on three signals:

SignalMeaningWeight
Brand containmentyour brand appears in the recall's recalling-firm or product description (fuzzy)high
Product token overlapshared meaningful words ("golden layer biscuits" vs "biscuits southern style")medium
Sequence similaritySequenceMatcher ratio on normalized stringstie-breaker

Scores above the threshold print with a VERIFY marker — a human looks at the package. UPC equality alone (when both sides have one) is a near-exact hit marked MATCH. The tool deliberately over-notifies: a false "go check the fridge" costs 10 seconds; a missed Class I Listeria exposure costs a lot more. Never discard food purely on the script's say-so — confirm against the linked recall notice, which is printed with every hit.

Reading a Hit

[RISK 1] Class I  ── brand: Pillsbury / product: biscuits
  recall:     Soft biscuits recalled over Listeria monocytogenes
  firm:       Generic Foods Co.
  reason:     Listeria monocytogenes
  dates:      2026-08-01 → ongoing
  lot intel:  look for: lot codes starting 'K1', best-by 09/2026
  action:     DO NOT EAT — check package; return for refund or discard
  notice:     https://www.fda.gov/safety/recalls/...

Class I = reasonable probability of serious adverse health consequences (act now, especially for vulnerable household members). Class II = remote probability / temporary harm. Class III = unlikely to cause harm. Distribution dates tell you whether your purchase window overlaps.

Common Pitfalls

  1. Trusting brand names literally. Store brands are manufactured by third parties: "Simple Truth" spinach may be recalled under the co-packer's name. That's why audit also runs category heuristics (product-type words without a brand hit → WATCH).
  2. Ignoring UPC check digits. If you type a UPC by hand and get a MATCH on a wrong-digit variant, verify the full 12-digit string against the package before discarding anything.
  3. Treating "no results" as "safe forever." Recalls are matched against ongoing enforcement reports. Run audit weekly; newly announced recalls appear within days.
  4. Discarding without reading the notice. Many recalls affect specific lots/plants/dates only. The printed notice URL states exactly which packages are affected — read it before throwing food away or demanding refunds.
  5. Rate limits. Without an API key openFDA allows modest request volumes; a household runs 1–2 requests per week. If you script this hourly, get the free key and set OPENFDA_API_KEY.
  6. Allergen recalls and severity ratings. A Class II "undeclared milk" is Class I for your household if someone is anaphylactic. Severity flags are population-level, not personal.

Verification Checklist

  • Pantry has at least the staples you'd be upset to hear were recalled (produce, dairy, frozen, pantry goods)
  • match runs clean against live openFDA (or --offline with cached data)
  • Every VERIFY/MATCH hit checked against the printed FDA notice URL
  • audit scheduled weekly (add it to whatever runs your household chores)
  • New grocery trips appended via import-receipt — 20 seconds, not a re-scan

One-Shot Recipes

"There was a recall on the news about ice cream"

python3 scripts/recall_radar.py add --brand "Nice!" --product "Vanilla Ice Cream 48oz"
python3 scripts/recall_radar.py match

Weekly Sunday audit (offline-first)

python3 scripts/recall_radar.py audit --api-key "$OPENFDA_API_KEY"

Testing the matcher without network

python3 scripts/recall_radar.py add --brand "Tasty Blend" --product "Frozen Strawberries 12oz"
python3 scripts/recall_radar.py match --offline --data references/sample-recalls.json

Vulnerable household member (pregnancy / chemo / toddler)

python3 scripts/recall_radar.py audit   # weekly, minimum — Class I Listeria hits matter most

相关技能

在本地磁盘以分类纯 Markdown 文件保存需要长期留存的事实,与智能体内置记忆并存。

作者 Iván559 次安装18 星标

把自然语言描述转为结构化 JSON,并由 mcp-diagram-generator MCP 服务生成 Draw.io、Mermaid 或 Excalidraw 图表文件。

作者 nssa.io1.0k 次安装47 星标

诊断生产力系统反复失效的根因,给出最小干预——容量测算、瓶颈定位、可靠的本地记录。

作者 Iván855 次安装69 星标

以 AI 机器人身份加入视频会议,提供语音、虚拟形象与屏幕共享四种模式。

作者 johnpatternai22 次安装8 星标

从 AdMapix API 拉取广告创意、应用、榜单和收入预估等数据,原样返回结构化 JSON。

作者 fly0pants4.3k 次安装296 星标

voronindenis5 的更多技能

浏览全部技能

Prepare salary negotiations with a structured toolkit: market-rate anchoring math, walk-away floor calculation, total-compensation evaluation (equity, bonuses, benefits), negotiation scripts for offers, raises, and counter-offers, and BATNA analysis. Use when the user has a job offer, is preparing a raise conversation, wants to know if their pay is competitive, or needs scripts and a strategy for negotiating compensation.

作者 voronindenis51 次安装

Use when your calendar is eating your week and you want to know exactly where the time goes, when planning recurring meetings for a team, before proposing a new recurring meeting, when someone says 'we should sync weekly' and you want data, or when auditing which meetings to kill — imports ICS calendar files, measures meeting hours per week/person/meeting-series (including double-bookings and fragmentation), computes focus-time destruction from meeting placement, scores the true cost of each series (hours × attendees × frequency), flags specific meetings to kill/shorten/make-async using explicit rules, and simulates the recovered hours before anyone has to argue about it.

作者 voronindenis52 次安装

Audit password vault exports (Bitwarden, 1Password, KeePass, Chrome, Firefox) for reuse, weakness, staleness, breach exposure, and 2FA gaps without ever storing or transmitting a plaintext password. Use when the user asks to audit passwords, check password strength/reuse, review vault health, or verify whether credentials appeared in breaches.

作者 voronindenis51 次安装

Turn flat resume bullets ('Responsible for X') into quantified STAR-method achievement narratives, score resumes against job descriptions for ATS keyword coverage and weak-phrase hazards, and expand each bullet into interview-ready stories with likely follow-up questions. Use when the user is writing or updating a resume/CV, preparing bullets for a job application, tailoring a resume to a specific job posting, or preparing interview stories from their experience.

作者 voronindenis51 次安装

Agent self-awareness of cognitive states — context fatigue, attention drift, memory debt, confidence erosion, and skill staleness. Detect, report, and mitigate degrading conditions before they cause failures.

作者 voronindenis5