Mirobody
The canonical registry of human health — roughly two thousand standardized indicators, clinical and lifestyle, resolved into one language.
Detector de noticias falsas de salud con IA. VeriTrust verifica afirmaciones médicas una a una y cita la literatura científica en que se basa (PubMed, Europe PMC).
Translation pending
HealthPython · TypeScriptGitHub @ldelvillarOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Medical misinformation detection system powered by a multi-agent AI system
Translation pending
Loading the full README.
Read the full README ↗AI-powered medical misinformation detection. Users submit a piece of health-related content — pasted text, a URL, or a document (PDF/TXT/MD) — and VeriTrust returns an evidence-grounded verdict: Verdadero (true), Falso (false), Parcialmente falso (partly false), or Dudoso (uncertain), with a confidence score, a per-claim breakdown, the biomedical sources consulted, and a medical report explaining the verdict in plain Spanish.
Health misinformation spreads faster than experts can debunk it. VeriTrust automates the first pass of that debunking: it extracts the verifiable medical claims from a text, cross-checks each one against real biomedical literature (Europe PMC, PubMed, openFDA, AEMPS CIMA), derives a verdict from the stance of that literature, and writes up the result — with the honesty to say "Dudoso" and lower its confidence when the literature is thin, contradictory, or silent.
Analysis is asynchronous: the pipeline chains several LLM calls and literature lookups, so it runs in a background worker instead of the HTTP request. POST /analysis returns a pending id immediately; an arq worker picks the job off Redis, runs the LangGraph pipeline, and the frontend polls GET /analysis/{id} every 2 s (showing the live pipeline stage) until the verdict is ready.
flowchart TB
UI["Next.js frontend<br/>(Clerk auth)"]
subgraph WEB["Web process — FastAPI"]
API["POST /analysis → insert 'pending' row, enqueue job<br/>GET /analysis/{id} → status + result"]
end
PG[("PostgreSQL<br/>analyses, claims, sources")]
REDIS[("Redis<br/>arq job queue")]
subgraph WORKER["Worker process — arq (python -m app.worker)"]
PREP["Prepare input<br/>URL / file text extraction"]
subgraph GRAPH["LangGraph pipeline"]
EX["1 · Extractor<br/>claims + search queries + drug terms"]
TR["2 · Translator<br/>clinical English, one batched call"]
IN["3 · Investigator<br/>evidence retrieval + relevance judge"]
HE["4 · Health Expert<br/>evidence verdict + medical report"]
EX --> TR --> IN --> HE
end
PREP --> EX
end
LLM["LLM provider<br/>Mistral API (compose) · Ollama (local default)"]
LIT["Europe PMC · PubMed · openFDA · AEMPS CIMA"]
UI -- "JWT" --> API
API --> PG
API -- "enqueue" --> REDIS
REDIS --> PREP
EX -.-> LLM
TR -.-> LLM
IN -.-> LLM
HE -.-> LLM
IN --> LIT
HE -- "verdict · claims · sources · report" --> PG
UI -- "poll every 2s" --> API
| Agent | Model | What it does |
|---|---|---|
| Extractor | llama3 | Extracts the verifiable medical claims from the input text, plus an English boolean search query and the drug name (if any) for each claim. Structured output. |
| Translator | translategemma | Translates all claims to clinical English in a single batched call — the literature sources work in English. |
| Investigator | ministral-3:14b¹ | Queries Europe PMC, PubMed, and openFDA for every claim in parallel — plus AEMPS CIMA when the claim names a drug. An LLM judge filters the hits for relevance and tags each source's stance (supports / contradicts). Computes evidence coverage: the share of claims with relevant literature. |
| Health Expert | llama3.2 | Derives each claim's fake probability from the stance of the retrieved literature (Laplace-smoothed, so thin evidence never reaches certainty), and bands each claim into true, false or uncertain — a band around the decision threshold maps to uncertain, and a claim no source speaks to is uncertain by construction, never false. The overall verdict follows from the claims' verdicts: true and false claims together make it partly false. Then it writes the medical report with llama3.2, grounded in the retrieved sources. |
¹ The ministral-3:14b judge needs ~11 GB loaded, ideally on a 16 GB GPU.
Three guardrails temper the raw verdict (app/core/verdict.py):
/r/{token} page per analysis, revocable.This is the beginning of the README. Read the rest at the original. Read the full README ↗