Inspiration
In early 2023, people across the U.S. used an ordinary bottle of artificial tears. By May, the CDC had linked EzriCare Artificial Tears to 81 infections in 18 states with a drug-resistant bacterium never seen in the U.S. before. Four people died, 14 lost their vision, and 4 had an eye surgically removed. The recall was public, but many patients only found out after they were already hurt.
That wasn’t a one-off. openFDA lists 765 drug recall reports in 2025, and 671 so far in 2026. Of those, 84 were Class I recalls: the FDA’s most serious category, where using the product could cause serious harm or death. Research shows the system that’s supposed to warn people has real gaps:
Health care providers get no FDA communication for about 1 in 5 drug recalls issued over serious health concerns. Pharmacies aren’t required to print lot numbers on prescription labels, so patients often can’t tell whether their bottle is affected. Up to 81% of U.S. consumers have been touched by recalls of widely used medications.
Every recall gets published. What’s missing is someone watching for it on behalf of a specific pharmacy and a specific patient. We built that.
What it does
SuperShield is one FDA safety network with two independent shields that never wait on each other:
💊 SuperShield Pharmacy: watches the live openFDA recall feed around the clock. When a recall’s product code (NDC) matches a pharmacy’s dispensing records, it automatically: creates a pharmacist alert; lights up a live U.S. map of affected pharmacies; builds a review list of affected customers, where the pharmacist marks each one contacted, lot verified or not affected; pushes an alert to the pharmacist’s phone (Telegram). 🧑⚕️ SuperShield Patient: a patient saves their medications once. A background worker matches every new recall against them by drug name, then sends a plain-language safety alert written by Claude: the FDA source, the classification, the reason, and what to check on the package.
No one clicks Scan. In our live test, a new recall was detected, matched and delivered to a phone in 12–14 seconds.
We’re honest about what a match means. A product-code match is labelled an “NDC candidate – lot not verified”, and SuperShield never tells a patient their specific bottle is recalled until the lot is checked. Customer names and phone numbers never go into an AI prompt or onto the public map.
How we built it Live FDA data: the openFDA Drug Enforcement API, which needs no key, polled every 5 minutes. Pharmacy engine: ClickHouse Cloud holds 5,000 pharmacies and 1,000,000 synthetic customer prescriptions. A ClickHouse materialized view does the matching the moment a recall is saved. On the first sync, 321 real recalls matched 136,209 customer prescriptions across all 51 states. Always-on monitor: a background loop in FastAPI that creates pharmacist alerts, sends the phone push and replays each recall on a live D3 map. Severity: a scikit-learn model classifies each recall’s reason text as Lethal, Moderate or Minor. Claude Opus writes the alert card from recall details and counts only, never customer identities. Patient engine: drug-name and synonym matching, a recurring background worker, and Claude-written patient bulletins. One shared contract: both sides use the FDA recall_number as the common ID and read the same recall data, plus a shared synthetic-recall feed for demos. Challenges we ran into Matching is not proof. An NDC or drug-name match doesn’t mean a patient holds a recalled lot. We designed the whole UI around that distinction instead of overstating it. Turning a button into a monitor. Our first version only processed recalls when someone clicked “Launch”. Making it truly continuous meant handling restarts without re-paging the pharmacist for old recalls, so earlier recalls are listed but never pushed. Real bugs at real scale. Two examples: one ClickHouse connection shared across threads caused crashes, and a timezone mix-up stored alerts 7 hours in the future. Choosing fewer tools. We tried PyAirbyte, Composio and WhatsApp relays, and cut what didn’t earn its place. The free WhatsApp bot was full, and a direct openFDA call was simpler than PyAirbyte. We ended with openFDA, ClickHouse, Claude and Telegram. Two developers, one repo, many AI agents. We wrote a coordination board and a shared data contract so the two sides never edited the same files or tables. Accomplishments that we’re proud of A real FDA recall feed matched against 1,000,000 prescriptions in under a second. Recall to pharmacist’s phone in about 12 seconds, with no human trigger. Two workflows that each protect people on their own: a patient gets warned even if their pharmacy hasn’t looked at the recall yet. Privacy and honesty built in: no customer data in AI prompts or on the map, simulated deliveries labelled as simulated, and candidate matches never presented as confirmed. What we learned The FDA already publishes everything. The life-saving part is delivery: the last mile from a public database to one person’s phone. Speed matters less than trust. One sentence, “NDC candidate – verify lot,” prevents false alarms and false reassurance. Removing tools made the system more reliable, not less. What’s next for SuperShield Lot-level verification: capture lot numbers at dispensing, so candidate matches become confirmed matches. Real pharmacy integrations: connect to pharmacy dispensing systems instead of synthetic data. Patient onboarding: scan a prescription label or pill bottle to add medications in seconds. More channels: SMS and WhatsApp for patients without Telegram, plus caregiver alerts for elderly family members. Beyond drugs:
Built With
- anthropic
- claude
- clickhouse
- clickhouse-cloud
- css3
- d3.js
- faker
- fastapi
- html5
- javascript
- node.js
- numpy
- openfda
- pandas
- python
- react
- scikit-learn
- typescript
- uvicorn
- vite
- websockets
Log in or sign up for Devpost to join the conversation.