Mirobody
The canonical registry of human health — roughly two thousand standardized indicators, clinical and lifestyle, resolved into one language.
翻訳待ち
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オンライン所有者未確認
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
AI medicine-safety review for elderly Bangladeshis: scan the shelf, catch duplicates and interactions, clinician-confirmed results in Bangla.
翻訳待ち
Loading the full README.
Read the full 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).
This is the beginning of the README. Read the rest at the original. Read the full README ↗