About Iatronix
Iatronix is an evidence-based clinical reference built for medical professionals. It searches real-time data from FDA, PubMed, NICE, and other authoritative sources, formats them with AI, and grades every claim by the evidence behind it. Your API key. Your data. Your control.
Started in March 2026 as a personal side project by Kayomarz — built for his own clinical use and made public. More at kayomarz.com.
How a search works
Every question follows the same path: it is understood, branched to the right strategy, searched across trusted sources in parallel, merged into one evidence set, grounded to real citations, then written and delivered. No AI token is spent until real evidence has been retrieved and quality-checked.
A clinician asks a question
Type it in plain language — no special syntax needed.
free-text clinical query captured verbatim
Understand the question
The app works out what you are really asking and pulls out the key medical terms.
classify into 1 of 6 types · extract key terms · rewrite neutrally to strip leading phrasing
Not a clinical question
No drug, disease, symptom or procedure is found, so the app declines politely and does not search the medical literature.
non-medical guard · no medical entities extracted → out_of_scope
A clinical question
A medical entity is detected, so the query flows on to the six strategies below.
medical entity extracted → in_scope, continue
Rank, then merge into one evidence set
Everything found is scored for quality, then pooled into a single body of evidence — the strongest studies rise to the top.
score by study type · relevance · recency · citations → combine into one evidence set
If it looks thin, it tries harder before answering
It rewords the search, borrows a complementary strategy, follows citation trails, and broadens step by step — looping back to re-check each time — rather than answering on weak evidence.
same-strategy 2nd pass → cross-strategy borrow → iCite citation-chase → up to 5 progressive broadenings → re-evaluate
No strong evidence
If every attempt still comes up short, the app returns an honest “not enough evidence” card and never writes an answer.
evidence floor unmet after escalation → DegradedResponse, no generation
Strong enough
Enough distinct, on-topic evidence is in hand, so the query flows on to grounding and writing.
≥ unique-article floor of distinct sources → proceed
Ground every claim
Each fact is tied to a real, cited article. Anything that can't be backed up is flagged, never stated as fact.
per-claim citation binding · unbackable claims marked low-confidence
Write the answer
The bottom line comes first, then each section is written and streamed to you live.
bottom-line-up-front, then per-section parallel generation, streamed
Deliver
You get a clear, structured answer with confidence badges and links to the real sources.
structured, cited answer with confidence badges and source links
How hallucinations are prevented
The pipeline is designed so the LLM cannot invent clinical facts. Five mechanisms enforce this:
Tested for safety
We put the pipeline through RAGnosis — 120 MRCP-style clinical questions and deliberate trap questions — end to end through the real retrieval layer, and scored every answer on whether it was correct and, above all, whether it was faithful (never asserting anything the retrieved evidence doesn't support).
On 120 clinical questions Iatronix never fabricated a fact. It answered roughly half correctly and returned an honest “insufficient evidence” card for the rest — because it is fail-closed by design. Correctness tracks evidence coverage almost exactly (60% when a reference chapter is retrieved, 9% when only abstracts are), so the gap is honest abstentions, not wrong guesses — which, for a clinical tool, is the failure mode you want.
How to read this: generation and grading used a stand-in model (Claude) for the production engine, so the accuracy figures are indicative, not a live production metric — but retrieval was the real pipeline. The run was offline (no user API tokens spent), n = 120, and directional rather than a powered clinical trial. What holds regardless of the model is the faithfulness result: the system abstains instead of guessing.
Evidence grading
Every claim is assigned a Level of Evidence and Class of Recommendation based on its source type — not inferred from phrasing:
Data sources
All data is fetched in real time from these authoritative sources before any AI processing:
Lessons learnt building this
Quantity vs. quality is a harder trade-off than it looks
Fetching more sources always sounds better on paper. In practice, a noisy PubMed result set with 20 weakly-relevant abstracts produces worse LLM output than 5 high-quality ones. We built evidence scoring precisely because raw retrieval count is a bad proxy for answer quality. More data causes the model to hedge, bury the key point, or invent a consensus that doesn't exist in the sources.
Medical research is behind paywalls — and that matters
Most impactful RCTs and meta-analyses are published in journals that don't offer open access. PubMed gives titles and abstracts; the actual trial data is paywalled. Unpaywall helps for open-access articles, but institutional guideline PDFs — NICE, ACC/AHA, ESC — are not consistently machine-readable. This means a query about a rare disease or a recent trial update will frequently hit the evidence quality floor and return a DegradedResponse, not because the answer doesn't exist, but because it exists behind a paywall.
LLMs are good editors, not good researchers
The pipeline treats the LLM purely as a formatter. Give it structured evidence and a schema to fill, and it produces clean, graded, citable output. Ask it to 'find information about X' without grounded sources and it will confabulate confidently. The fail-closed evidence gate exists because we learned early that the model will fill gaps with plausible-sounding but unsourced content if you let it.
Not every question is a clinical question
Early on the pipeline would dutifully search PubMed for anything typed into it, including questions with no drug, disease, symptom, or procedure in them. That wastes retrieval and invites confidently-worded answers to questions the literature can't speak to. A scope guard now runs first: if no medical entities are extracted, the app declines honestly and never searches — a plain 'this isn't a clinical question' is safer and more useful than a padded non-answer.
A feature can be live and still do nothing
We shipped a new retrieval fallback meant to rescue thin result sets — code merged, unit tests green, feature 'live'. It also did nothing. It sat behind an early return with such a low trigger bar that the escalation path it guarded almost never ran on the queries it was built for. The helper worked perfectly in isolation; the feature never fired in practice. The lesson: test that a feature actually triggers on its target case, not just that its internals return the right value when you call them directly.
One run can lie; three runs tell the truth
Live PubMed does not return identical results run to run — ranking and availability shift with load. A single before/after comparison once showed a dramatic 'rescue': the new path looked like it doubled the evidence found. Re-running it, the effect was network noise, not the change. Taking the median of three runs collapsed the improvement to roughly nothing. The lesson: any metric measured against a noisy external system has to be sampled more than once before a delta is trustworthy.
The right amount of evidence is a dial, not a maximum
It is tempting to treat retrieval as 'more is better' and keep widening the net. We raised a relevance threshold to pull in more articles and answer quality got worse, not better — the extra results were mostly off-topic and dragged the model toward hedging and false consensus. A tighter setting produced cleaner, more decisive answers. The lesson: retrieval breadth is a precision/recall trade-off to tune for the task, not a number to maximise.
A size budget is not a count cap
One clinical search returned over 4,000 citations and crashed the response. The citation list was built from every fetched article with no count limit, and a broad query had pulled in thousands of unique papers (PubMed + Semantic Scholar + textbooks). The internal cap only measured characters, so title-only entries slipped through uncounted. The fix caps the list by count — every source the answer actually cites is kept, and the retrieved-but-uncited extras are limited. The lesson: bound what the user sees by count, not just by size.
Relevance needs a floor, not just a ranking
Asked 'does paracetamol cause fever', the app once surfaced an unrelated post-operative arthroplasty fever guideline — it matched the word 'fever' and scored well on study quality, and nothing dropped it, because ranking only reorders. The fix adds a relevance floor that drops articles which never mention the drug, plus adverse-effect query framing so a causation question retrieves 'drug-induced' evidence rather than 'drug used to treat' evidence. Chosen by testing every combination and measuring off-topic rate: together they cut off-topic results sharply and kept more of the right ones.
BYOK — Your Key, Your Data
All LLM calls use your own API key. Nothing is sent to Iatronix servers for generation. Keys are encrypted at rest and in transit. Switch providers anytime from Settings.
Cerebras (GPT-OSS 120B)Default
Default AI provider — powers evidence formatting, query classification, and section generation.
Anthropic (Claude)Optional · Required for Waves
Alternative AI provider for users who prefer Claude. Required for Waves (medical image analysis via Claude vision).