Mirobody
인간 건강의 표준 레지스트리, 약 2천 개 임상·생활 지표를 하나의 언어로 정리
방글라데시 모든 노인 요양원에 약사 배치, 약 스캔·중복·상호작용 확인, 임상의 최종 검토
A pharmacist for every elderly home in Bangladesh: scan every medicine, catch duplicates and interactions, and a clinician confirms every finding before the family sees it.
건강TypeScript · PythonGitHub @ProttoyDip가동 상태 재확인 필요운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
AI medicine-safety review for elderly Bangladeshis: scan the shelf, catch duplicates and interactions, clinician-confirmed results in Bangla.
README 전체를 불러오는 중입니다.
README 전문 보기 ↗A pharmacist for every elderly home in Bangladesh: we scan every medicine a parent takes, catch dangerous duplicates and interactions, and a clinician confirms every finding before the family sees it.
Live demo: link added after deploy (how) · Docs: the /docs page of the app · Demo video: YouTube link added after upload · Reviewer login: the dashboard at /review asks for a name and the REVIEWER_TOKEN from backend/.env (the quick start sets it to demo-reviewer)
An elderly patient often collects medicines from a hospital outpatient doctor, a village doctor and the local drug shop. Each sees only their own prescription, and the same molecule is sold under many brand names, so nobody notices that Napa and Ace are both paracetamol, or that two doctors have each started amlodipine.
flowchart TD
A["Family photographs<br/>every strip, box<br/>and prescription"] --> B["Vision model reads<br/>brand, strength,<br/>expiry, confidence"]
B --> C{"Brand known?"}
C -- "yes" --> D["Brand → generic<br/>(exact, then strict fuzzy)"]
C -- "no" --> W["Web lookup on Bangladeshi<br/>medicine sites (Tavily / Perplexity)<br/>must cite a source → unverified"]
W --> D
D --> E["Rules engine<br/>duplicates · same class · interactions<br/>Beers 65+ · expiry<br/><b>no AI</b>"]
E --> F["Pharmacist / doctor review<br/>confirm or dismiss, with a note"]
F --> G["Family view in plain Bangla<br/>+ weekly report<br/>+ medicine passport (QR)"]
Anything read with under 0.75 confidence, and every web-found brand match, is shown to a human for confirmation before it enters the list.
All screenshots use the invented demo household of Rahima Begum, 68, Cumilla.
AI for perception, rules and humans for judgement. Models read photos and write explanations; they never decide what is dangerous.
backend/app/rules.py. Language models never create, remove or change the severity of a flag.pending_review. The family view of the API returns only confirmed flags, enforced in the API, not just the UI, and covered by a test.These rules live in AGENTS.md and bind every coding agent that works on this repository.
flowchart TB
UI["Next.js 15 frontend<br/>family app (Bangla) · reviewer dashboard · passport · /docs · /demo"]
API["FastAPI backend<br/>family view returns confirmed flags only"]
AG["Shelf agent<br/>Pydantic-AI, typed output"]
R["LLM router<br/>cache + fall-through"]
P1["OpenRouter<br/>(free models, auto-picked)"]
P2["NARAROUTER → EXPLAB → AGENTROUTER<br/>(OpenAI-compatible fallbacks)"]
P3["Ollama qwen2.5:3b<br/>(local, Bangla explanations first)"]
BM["Brand matcher<br/>exact → fuzzy ≥ 88"]
WL["Tavily / Perplexity<br/>unknown-brand lookup"]
RE["Rules engine<br/>deterministic, no AI"]
DB[("SQLite<br/>items · flags · reviews · cache")]
N8N["n8n automations<br/>weekly report · doctor alert · refill reminder"]
MCP["MCP server<br/>read-only tools"]
UI -->|HTTPS, JSON| API
API --> AG --> R
R --> P1 & P2 & P3
API --> BM --> WL
API --> RE
API --> DB
API -->|red flag webhook| N8N
N8N -->|GET report| API
MCP -.->|calls the same modules| BM & RE
SQLite is enough for the prototype and lives on a persistent disk when deployed (render.yaml).
여기까지가 README 앞부분입니다. 나머지는 원문에서 읽을 수 있습니다. README 전문 보기 ↗