Structured gates
structured field resolutionThe registry publishes these as fields, not prose, so they decide exactly and instantly. Most of a result set dies here, before a parser is involved at all.
Age: 9 Years to 17 Years · you gave 12 · passes
A neuro symbolic screening engine: a constraint compiler, a conformal multi label classifier and a quantised sentence transformer, reading every recruiting study in the ClinicalTrials.gov registry. All three run on device. Only the symbolic layer may decide anything, and only when it can quote the characters it read.
Live v2 registry Patient profile stays in your browser No account, no cost
What the engine read
Participant has bodyweight ≤50 kg.
weight lte 50kg · conf 0.95 · decidable
Already published? Open your dashboard · How each one works
The aperture
Sex, age bounds and site countries arrive from the registry as structured fields, so they decide exactly and instantly. That is the gate. The narrow channel is everything left over, which is where a human still belongs.
What it reads
Real eligibility text from a live study, verbatim. The compiler segments each criterion into clauses, matches a 35 concept lexicon inside each one, resolves negation against the clause rather than the line, and extracts the number with its unit. Hover or tap a marked phrase for the predicate, the confidence, the deductions behind it, and the byte offsets it came from.
Readinghover or tap a marked phrase
A wrong reading is visible in the quoted words, not merely suspected.
The problem
The registry hands you a wall of prose per study. Most of it does not apply to you, some of it rules you out in one line, and the only way to know is to read all of it.
growth in the median unique word count of NCI affiliated trial eligibility criteria, from 214 words in 2008 to 416 in 2018.
accrual failure rate across deciles of criteria length, shortest to longest. Of 1,197 trials studied, 231 failed to accrue.
Reads the prose, produces a confident paragraph, and gives you no way to check it.
Compiles what is compilable, quotes the rest, and carries the character offsets behind every verdict.
What it can do
Symbolic, statistical and neural, in that order of authority. Every pass is a named, inspectable step with its output attached, and none of the learned ones is permitted to decide anything on your behalf.
The registry publishes these as fields, not prose, so they decide exactly and instantly. Most of a result set dies here, before a parser is involved at all.
Age: 9 Years to 17 Years · you gave 12 · passes
Segments each criterion into clauses, matches a 35 concept lexicon inside each, and scopes negation to the clause so a compound like non invasive is not read as a negative.
NOT ambulatory · conf 0.95 · cue “Non-”
A criterion that turns on investigator judgement is marked and never machine decided, at any confidence. Below 0.70 the engine stops and prints the deductions that got it there.
abstained · unit “mg” is not the expected “kg”
A calibrated linear model over word and character n grams says which concept an uncompiled line is about, and returns a set with a stated coverage rather than a single guess.
weight · p 0.91 over q̂ 0.39 · in the 90% set
Phrasing the lexicon has never seen, matched against a prototype per concept with a floor taken from the data. Off by default, and labelled as itself wherever it appears.
nearest psych · cos 0.61 over floor 0.48
Scores every unanswered concept across the whole surviving set by how many still open studies it would close, asks that one, then reranks against what is left.
asks: genetic diagnosis? · settles 23 of 41
Every result prints what fraction of criteria compiled, split into decidable, investigator judgement and unread. The number moves with the condition and is never rounded up.
370 decidable · 45 judgement · 461 unread
Exports carry the NCT number, the verdict, the predicate that produced it and the quoted line, so a coordinator can check the tool rather than trust it.
NCT07160634,ruled-out,age lt 18,“adults only”
What you get
Sex, age bounds and site countries arrive as structured registry fields, so they decide exactly and need no parser at all. A search for cystic fibrosis drops from 153 studies to the ones that can actually take you, before a single line of prose is read.
Every predicate carries the character span of its concept, the span of its number, the negation cue that fired, and a confidence with the deductions itemised. You can disagree with it line by line, which is the point.
A greedy max coverage solver ranks every unanswered concept across the whole result set by how many still open studies it would settle, then asks only that one and reranks. Three answers usually resolve more than an hour of reading.
Age, sex and country never leave the tab, because the models come to the text rather than the other way round. The only outbound request carries the condition name, sent to the public registry exactly as a search box would send it.
Eighteen hedge patterns catch the criteria that turn on investigator judgement, and those are never machine decided at any confidence. Every search prints its own coverage, split into decidable, judgement and unread, rather than claiming a number.
You arrive with NCT numbers and the quoted lines that still need a human, instead of a question that starts from zero.
A screening tool that guesses is worse than no screening tool at all. So this one refuses, out loud, every single time it cannot decide.
How it works
You type a condition
It pages the ClinicalTrials.gov v2 API up to 400 studies, pulls the full eligibility section for each, splits it into inclusion and exclusion lines, and compiles every line as it arrives.
You answer three or four questions
Age, sex and country settle the structured gates outright. The solver then scores every unanswered concept by how many open studies it would close, asks the highest one, and reranks against what is left.
You leave with NCT numbers
Open any study for the predicates that decided it, the ones that abstained and why, the concepts each model layer flagged, and the lines left for a human. Then call the site on the record.
Under the hood
A hybrid neuro symbolic architecture: deterministic constraint solving underneath, statistical and neural inference layered on top of it for recall, and a hard rule that the learned layers may never produce a verdict. All three run on device, so no criterion and no profile is ever sent to a model somewhere else. Each layer reads what the one below it could not, and says so on the line where it did.
Layer one
A compiler over the eligibility prose. It segments each criterion into clauses, matches a 35 concept lexicon inside each clause, scopes negation to that clause so “non invasive” is not read as a negative, extracts numbers across four unit families, and returns byte offsets for every span it used. Confidence opens at 0.95 and is docked per named reason: 0.20 for two concepts crowded into one clause, 0.25 for a negation cue more than forty characters from its concept, 0.35 for a unit that does not match, 0.10 for no unit at all. Under 0.70 it abstains and prints the arithmetic. Nothing else in the stack may produce a pass or a fail, because nothing else parses a number or a “not”. This is the symbolic half of the architecture, and it is the only half with authority.
100.0% precision · 95.7% recall · 46 hand labelled criteria
Layer two
Distant supervision: the symbolic layer labels 32,628 criteria, and a one vs rest multi label classifier learns to generalise past its lexicon. L1 regularised logistic regression over a 21,000 dimensional word and character n gram space, fitted on the first of three disjoint folds. The second fold fits an isotonic regression per concept, which turns an uncalibrated margin into a probability. The third fixes a split conformal threshold per concept, giving distribution free coverage: the returned prediction set contains the true concept at a stated rate regardless of the underlying distribution. That is what lets the tool abstain with a number attached rather than a cutoff chosen by feel.
0.0065 → 0.0008 expected calibration error · 92.9% coverage against human labels at a 90% target · 0.89 concepts per set, of 32
Layer three
Nearest centroid classification in embedding space. A six layer sentence transformer, int8 quantised and executed through ONNX Runtime on WebAssembly in the tab, encodes each unread criterion into 384 dimensions. Each concept carries a prototype: the mean unit vector of its rule matched positives, which makes this a few shot classifier built from the symbolic layer's own output. Cosine similarity against a per concept floor set at that concept's 5th percentile, so the threshold comes from the data rather than from a guess. It is the least certain layer, off by default, and labelled as itself wherever it appears.
95.6% precision · recovers the criteria the first two layers both missed · decides nothing
The specification
Stated in full, because a system that asks you to trust its abstentions should be checkable down to the constant. Each figure below is printed by a command in the repository, not written by hand.
Corpus, feature and fold figures are printed by train.py.
Every accuracy figure comes from evaluate.mjs and evaluate-semantic.html,
scored against 46 criteria labelled by hand, by one rater. That is a development harness, not a
validation study, and it is stated here rather than left for you to find.
The line
Not a policy you have to trust. An architecture you can check in about thirty seconds with your own network tab, which is why it is drawn rather than described.
Your browser
The network
No account. No analytics. No telemetry. No server of ours in the screening path at all.
Two exception, on the other side of the product. The study board stores a researcher-written listing, its public contact address, and three counters keyed to the listing rather than a person. A reader emails the study team from their own inbox. There is no patient form and no patient data reaches Inclusion Health.
Stated up front
It does not diagnose, it does not advise, and it reports no probability of enrolment. A study that is not ruled out is not a study you are eligible for. A coordinator screens against the full protocol, which holds criteria the registry never publishes.
Precision and recall are computed against 46 criteria labelled by one person, the author. That is enough to catch a regression and nowhere near enough to validate a tool. A real number needs several raters and thousands of lines.
Every search prints what fraction of criteria compiled, what was decidable, and what was left to judgement. The number moves with the condition you search.
Sponsors write these records themselves and update them late. A site listed as recruiting may have closed. Always confirm on the phone.
Access
Every feature is open, with no account and no card. Screening for yourself or someone you care for stays free permanently, and that is not a launch offer. Everything else stays free until a proper validation study says the tool has earned the right to charge, and that study has not happened yet. Finding someone to run it is the current priority.
Patients and caregivers
Screening for yourself, a child, a parent, or anyone you care for.
Clinicians and coordinators
Anyone screening patients as part of the job.
Researchers and sites
Anyone who could help find out whether it actually works.
Nothing is charged per patient screened, and no sponsor can buy a higher position in a result list. Order comes from the registry and from what the engine could decide. If money ever enters this, it comes from recruitment budgets and never from a patient.
Questions
No. Inclusion Health is not a medical device and gives no diagnosis, recommendation or probability. It reports what a public registry publishes and what a rule engine could and could not decide from it. Every decision about care stays with your clinician.
The ClinicalTrials.gov v2 API, queried live from your browser at the moment you search. Nothing is cached, so what you see is what the registry published that minute.
No. There is no account and no analytics. Age, sex and country stay in the page and are compared against registry fields locally. The only outbound request from the tool carries the condition name, which is what any search box would send. The study board stores each public listing and three aggregate counters keyed to that listing, never to a person.
100.0% precision and 95.7% recall against 46 criteria labelled by hand. One rater, the author, so treat it as a regression harness rather than a validation study. A clinician labelled set does not exist yet. What the tool does instead is show its work, so a wrong extraction is visible in the quoted characters rather than hidden behind a score.
No, and the architecture is the opposite of one. There is no prompt anywhere in this product, no generative model, and no API call to anybody's model. It is a hybrid neuro symbolic system: a deterministic constraint compiler, a multi label classifier trained by distant supervision on 32,628 criteria under split conformal prediction, and a quantised sentence transformer for dense retrieval. All three execute on device. Nothing can hallucinate because nothing generates text, and only the symbolic layer is permitted to decide anything, which it does by quoting the characters it read.
A way of turning a model score into a guarantee. Rather than picking a cutoff and hoping, the threshold for each concept is fitted on data the model never saw, so the returned set contains the right concept a stated fraction of the time. Here the target is 90% and the measured figure against hand labels is 92.9%, with a mean set size under one concept out of 32. It is what lets the tool say nothing when it knows nothing.
Because it costs a 23 MB download and it is the layer most likely to be wrong. Turn it on in the rail and it reads the lines the other two left unread, at 95.6% precision, labelled as its own layer on every line it touches. It never produces a verdict.
Only that nothing the tool could decide has excluded you yet. It is a shortlist for a phone call, never a statement of eligibility.
Because guessing is the failure mode this tool exists to avoid. Roughly half of registry criteria are prose that no deterministic rule can safely parse, so they are shown verbatim and handed to you rather than compressed into a verdict.
It starts at 0.95 and drops for each named reason: several concepts crowded into one clause, a negation cue sitting far from the concept, a unit that does not match. Below 0.70 the engine abstains and prints the deductions that got it there.
Yes. Enter their age, sex at birth and country. Caregivers searching rare disease trials are the reason the free text is quoted rather than summarised.
Yes, everything in the registry, which includes most of Europe, Japan, Australia and Canada. Filter by country in the left panel, or leave it as anywhere.
Everything is free right now, for everyone, with no account and no cap. Screening for yourself or someone you care for is free permanently. Professional and site use will be paid eventually, but not while the tool is still looking for clinical partners to validate it. See pricing.
No, and nothing is behind a wall to begin with. The engine, the thresholds and the ordering will be identical on every plan, and no sponsor can buy a higher position in a result list. Order comes from the registry and from what the engine could decide. Nothing is charged per patient screened.
For researchers
Every number on this page is measured and reproducible, and every one of them is scored against a set too small to validate anything. What is missing is a clinician labelled corpus, which is the one input that cannot be generated without people who screen patients. If that is your field, there is a written protocol and a specific ask waiting.
Free, in your browser
Type a condition, answer three questions, and see what is left with the reasoning attached to every cut.
No account · nothing stored · close the tab and it is gone