The evidence gate
A model may say anything. It may not claim anything it has not earned.
A clinical AI emits claims: a phenotype term for a referral note, an alert for a patient, a finding in a consultation note. The gate decides each claim on its own, against the evidence that existed when it was made.
- RELEASENo rule fired. Not “this is correct”, only “nothing caught it”.
- HOLDSupported, but qualified. A person sees it before it counts.
- SUPPRESSA rule was violated. It does not reach the next system.
There is no PASS. The gate never certifies a model, and it says so on every call it answers.
What it does to a note
Each example below is a note, the terms a phenotype mapper returned for it, and what the gate did with each term. The highlighted words are the evidence the gate found. Notes are written the way they are written in Indian clinics, with English phenotype names inside English, Hindi, Tamil sentences.
a relative's findingEnglish
Proband evaluated for Abnormality of the liver; pedigree chart reveals a maternal first cousin with Neurodevelopmental delay.
- RELEASEAbnormality of the liver HP:0001392earned by “abnormality of the liver”
- SUPPRESSNeurodevelopmental delay HP:0012758stopped by
scope.attribution
a finding the note deniesHindi
Patient ko Thrombocytopenia present hai, lekin Blindness ki koi history nahi mili.
- SUPPRESSBlindness HP:0000618stopped by
scope.negation - RELEASEThrombocytopenia HP:0001873earned by “thrombocytopenia”
a finding only being consideredTamil
Patient-ukku Apnea irukku. Recurrent respiratory infections irukka nu next review-la rule out pannanum.
- RELEASEApnea HP:0002104earned by “apnea”
- HOLDRecurrent respiratory infections HP:0002205stopped by
scope.hypothetical
a relative's findingTamil
Patient-ukku Skin rash irukku, ivarudaiya mother-ukku Intellectual disability iruppathaaga family history-il therivithullaargal.
- RELEASESkin rash HP:0000988earned by “skin rash”
- SUPPRESSIntellectual disability HP:0001249stopped by
scope.attribution
a finding the note deniesEnglish
Child presented for genetic evaluation with no history of Fever; dysmorphic assessment reveals distinct Hypertelorism.
- RELEASEHypertelorism HP:0000316earned by “hypertelorism”
- SUPPRESSFever HP:0001945stopped by
scope.negation
a finding only being consideredEnglish
Child brought with complaints of Headache; advised USG abdomen to rule out any suspected Abnormality of the liver.
- HOLDAbnormality of the liver HP:0001392stopped by
scope.hypothetical - RELEASEHeadache HP:0002315earned by “headache”
an ordinary note, nothing wrongEnglish
Child reviewed in paediatric genetics clinic with prominent Growth delay noted on physical examination.
- RELEASEGrowth delay HP:0001510earned by “growth delay”
a term with nothing behind itEnglish
The quick brown fox jumps over the lazy dog.
- SUPPRESSJumping HP:5200134stopped by
evidence.span
The rules, and who says so
Every rule came from a defect we measured in a commercial mapper, and each one carries the finding it came from. A customer can ask one question about any decision: which rule stopped this, and on whose authority. The gate makes no model call, so the same note and the same terms always give the same answer, and it cannot invent its own justification.
What it changes, and what it costs
Measured on 125 adversarial notes and 60 ordinary ones, every term resolved against the published ontology release (20,413 terms). A violation is a term the note does not support. The last column is the price: terms the note does assert that the gate did not let through. We never publish the first column without it, because a gate that suppresses everything would win it outright.
On a competent mapper the gate raises accuracy, because the terms it removes were the wrong ones. The keyword mapper is what a rule-based extractor looks like; its accuracy is low before and after, and the gate does not pretend to fix that.
The API
The gate runs in front of a model, so it ships as an endpoint rather than a report. What we publish is public and needs no account: the rules above, the measured numbers, and the gate running on these cases.
GET /v1/rules every rule, with its source and authority
GET /v1/benchmarks the table above
GET /v1/demo/cases these published cases
POST /v1/demo/gate runs the gate on one of them, by case_id
Your own notes need a key. The demo endpoint takes a case id and not free text, so patient data has nowhere to land on an endpoint with no account behind it.
curl -X POST $BASE/v1/gate/phenotype \
-H "Authorization: Bearer ghk_..." \
-H "Content-Type: application/json" \
-d '{"text": "...the note...", "terms": ["HP:0000252", "HP:0001250"]}'Each decision comes back with the rule, the authority behind it, and the span of text that earned or condemned the term. People sign in to a console to mint and revoke keys and to read their usage; machines send a key and never touch it. We record counts. We do not store the text you send.
What this does not do
- The gate reads what the system had when it made the claim. It does not know the patient. A true finding stated nowhere in the note is suppressed, and that shows up as cost in the table above rather than being hidden.
- The cases are synthetic: written to a fixed template of failure classes, then checked. They are not real referral notes.
- Surface forms come from the ontology. A term whose everyday phrasing is absent from it is suppressed, which is a recall cost rather than a safety one.
- We audit systems and we also sell this. The defence is that the rules are published rather than hidden in a model, and a customer can rerun the evaluation without us.