Inspiration
Medical-device regulatory teams must track four or more jurisdictions (NMPA, FDA, EU MDR, PMDA) at once. A single missed change — a tighter endotoxin threshold, a new UDI requirement — can stall a product launch for months. Small manufacturers and clinics have no dedicated intelligence function; monitoring is done by hand, in spreadsheets, after work hours. We built the agent we wished existed: one command, auditable output, every region covered.
What it does
MedReg Agent is a professional agent built on the Strands Agents SDK that automates the repetitive, high-judgment work of medical-device regulatory monitoring:
Regulatory Watchdog (reg-watch) — fetches the latest regulatory updates across NMPA / FDA / EU MDR / PMDA, classifies each update's business impact (HIGH / MEDIUM / LOW) using region-aware keyword rules, and drafts a follow-up memo for the highest-impact item with recommended actions, owner, and due date.
Submission Readiness (submission-ready) — checks a device submission package against a required checklist (IFU, label, test report, UDI, cybersecurity), reports coverage percentage, and lists exactly what is missing and how to fix it.
Clinic Compliance (clinic-compliance) — alerts clinics on equipment inventory approaching sterilization / revalidation thresholds, so small clinics without a compliance officer stay safe.
All three personas share one Strands codebase and switch via a single --profile flag. The agent autonomously chains tool calls (fetch → classify → draft) and produces auditable, structured output.
How we built it
- Strands Agents SDK for the agent loop, tool decoration (
@tool), and model abstraction. - LIVE data: FDA device recalls are fetched in real time from the openFDA public API (no API key), with automatic window widening when recall posting lags and a transparent
live_source_errornote whenever the bundled demo corpus is served instead — no fake data posing as live data, no silent failures. - Pluggable model backends via Strands: architected to run on Amazon Bedrock (Claude) in production, and running today on a local Ollama model for zero-cost development and offline demos — the same code paths serve both.
- Pure-Python deterministic tools:
fetch_regulatory_updates,classify_impact,draft_followup_memo,check_submission_readiness,clinic_inventory_alert— every tool returns structured JSON so the agent's decisions are auditable. - Profile system: one codebase, three personas, selected at runtime (
--profile reg-watch | submission-ready | clinic-compliance). - MIT-licensed public repo with architecture diagram and a runnable demo:
python src/agent.py --profile reg-watch --demo.
Challenges we ran into
Keeping the agent's judgment auditable — we solved it by making every tool deterministic and returning structured JSON, so a human reviewer can trace exactly why an update was classified HIGH.
Accomplishments that we're proud of
One codebase serving three distinct professional personas, and a model-agnostic design architected for Amazon Bedrock in production while running fully offline on local Ollama for privacy-sensitive clinics.
What we learned
- Deterministic tools beat prompt-only agents for compliance work: because every tool returns structured JSON, a human reviewer can audit exactly why an update was classified HIGH — no black-box reasoning.
- "Honest failure" is a feature, not a bug: surfacing
live_source_errorinstead of silently serving cached data is what makes the agent trustworthy in a regulated domain. - One codebase, three personas: a single
--profileflag covers regulatory watch, submission readiness, and clinic compliance — far less to maintain than three separate agents.
What's next for MedReg Agent
- Deploy the agent on Amazon Bedrock AgentCore for always-on, scheduled monitoring with managed runtime and memory.
- Add region adapters beyond the current four (Health Canada, TGA, ANVISA) behind the same deterministic-tool contract.
- Ship a human-in-the-loop review queue so a regulatory lead can approve or reject each drafted memo before it is filed.
Log in or sign up for Devpost to join the conversation.