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:

  1. 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.

  2. 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.

  3. 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_error note 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_error instead of silently serving cached data is what makes the agent trustworthy in a regulated domain.
  • One codebase, three personas: a single --profile flag 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.

Built With

  • agent
  • agents
  • ai
  • amazon
  • bedrock
  • healthcare
  • ollama
  • python
  • regulatory
  • sdk
  • strands
Share this project:

Updates

Submission history