Clinical research
Trial matching software that a coordinator can trust
Finding candidates is a triage problem, not a decision problem. We build the worklist, and a qualified human still decides who is eligible.
What makes clinical research software different
4 things that decide this
- 01Eligibility criteria arrive at your site as one block of free text. Across 100 recruiting cancer trials we sampled from the ClinicalTrials.gov API in August 2026, the median criteria string ran 1,910 characters and the longest ran 13,506.
- 02The structured fields alone won't get you far. Age, sex and healthy-volunteer flags are available, but prior lines of therapy, biomarker status and lab thresholds live only in the prose.
- 03Matching reconciles two piles of unstructured text: trial criteria against your clinician notes. String comparison can't do this, and neither can confidence alone.
- 04You need to know which side of the regulated line each system sits on. Pre-screening and a validated records system carry different obligations, and the distinction drives your architecture and your validation effort.
Why a coordinator cannot screen fast enough
Your site has open trials and eligible patients sitting in your own clinic, and the two just don't meet. By the time your coordinator has read the chart, the patient has started another therapy and the window has closed.
The reason is mechanical. Someone has to read thousands of characters of criteria per trial, then read a pathology report and a molecular result, then hold both in mind at once. Real criteria text contains nested sub-items, escaped formatting and lab thresholds written as sentences, and a parser meets all of it on day one.
Software helps you most by narrowing: it cuts a hundred trials down to the handful worth a human look. It shouldn't be the thing that says yes.
Published studies, named
What AI matching actually achieves, and where it stops
81.8%
Sensitivity when a trial-matching framework met real EHR data at UT Health San Antonio (Syed et al., JAMIA, April 2026)
75.0%
Positive predictive value in that same study. One in four flagged patients was not eligible
26.5%
AI-generated matches that became enrolments across 514 patients screened in GI surgical oncology clinics (Verhagen et al., Surgery, March 2026)
1,910
Median characters of free-text eligibility criteria per trial, our own sample of 100 recruiting cancer trials, August 2026
The clinical research work we take
Pre-screening, matching and the software around the regulated core.
Trial matching and pre-screening
We rank candidate trials against a patient profile and explain why each ranked where it did. TrialTriage does this for oncology nurses, and a nurse finalises every result.
Criteria parsing
We turn prose criteria into something a system can reason over, while keeping the original text visible. The parse is a suggestion, never a silent replacement for what the sponsor wrote.
Registry integration
We work against the ClinicalTrials.gov API with its real limits: pagination, stale status, and structured fields that mostly aren't there. A match to a closed slot is a false positive from data, not from the model.
Batch tools for institutional users
You get CSV upload, background job queues and live progress, built for insurers and teams working in lists rather than one patient at a time.
Audit trails and access control
TrialTriage tracks 23 audit action types across four roles, with field-level encryption and multi-factor sign-in, designed in at the schema, not added for a questionnaire.
De-identified data models
We choose age bands, ZIP prefixes and stand-in patient identifiers when we draw the schema. The field you never collect can't leak.
- Registry pullTrial text, plus its staleness.
- Criteria parseProse in. Structure out, with sources.
- Candidate rankNarrow a hundred to a handful.
- Nurse reviewThe decision point. Always a person.
- ReferralRecorded with the reason it was made.
The system's job ends at the worklist. In the best published real-world deployment, roughly three in four AI-generated matches did not become enrolments, and the commonest reason was genuine ineligibility.
Benchmark accuracy is measured on the easier patients
You'll see headline numbers in this field come from synthetic patients. A widely cited 2024 framework reported criterion-level matching accuracy above 87% on generated cases. When a later team adapted the same approach to real records, performance moved, and the positive predictive value landed at 75%.
That gap is the one to ask any vendor about. A demo score measured on clean, invented patients is the easier number, so ask which corpus it came from, and whether a clinician adjudicated the answers.
There are limits no model removes. Criteria such as adequate organ function are judgement calls the protocol left undefined. Washout history and outside-hospital treatment often appear in no record the system can read.
- Ask whether an accuracy figure was measured on real charts or generated ones.
- Treat registry status as data that goes stale, not as truth.
- Never let your software issue an eligibility determination on its own.

AI reading unstructured documents, with a person deciding
Two ways to build trial matching
The claim
The pitch you usually hear
An accuracy percentage, with no corpus named.
How we build
The corpus named, and whether a clinician adjudicated it.
The output
The pitch you usually hear
An eligibility verdict per patient.
How we build
A ranked worklist with the criteria text that drove each rank.
Ambiguous criteria
The pitch you usually hear
Resolved silently by the model.
How we build
Surfaced as ambiguous, because the protocol never defined them.
Registry data
The pitch you usually hear
Treated as current.
How we build
Treated as a snapshot with an age, shown to the coordinator.
Regulated scope
The pitch you usually hear
Blurred, so everything sounds validated.
How we build
Stated. Pre-screening on one side, regulated records on the other.
What TrialTriage runs on
Application
- React
- TypeScript
- NestJS
- Vite
Data
- PostgreSQL
- Redis
- BullMQ
- AWS S3
AI
- Ranked retrieval
- Explanation traces
- Human review gates
Delivery
- Docker
- GitHub Actions
- SonarQube
- Vercel
Questions research teams ask
01Will your software decide whether a patient is eligible?+
No, and we'd argue against building it that way. Look at the best published real-world result: positive predictive value landed at 75%, meaning one in four flagged patients wasn't actually eligible. A system that issues determinations also pushes itself toward regulated device territory. We build you the prioritised worklist and leave the decision with the qualified person who already owns it.
02Does a pre-screening tool have to meet 21 CFR Part 11?+
Often not, and getting this wrong in either direction costs you. Part 11 attaches to records required by FDA regulations. A recruitment tool whose output never becomes part of a regulatory record can fall outside it. Telling a buyer that everything is Part 11 is itself a credibility failure, and so is assuming nothing is. Map your records first, then decide.
03Can you connect to our EDC or our CTMS?+
Yes, and most of the work sits in your access and data rather than the client library. These platforms gate entry through partner programmes and per-tenant credentials, so getting your approvals comes first. We've integrated many production systems against rate-limited APIs, and the same rules hold here. Expect paging limits, treat their status data as a snapshot with an age, and validate the interface as part of your system.
04How do you handle patient data during pre-screening?+
We collect as little as the matching actually needs. TrialTriage works from de-identified inputs, with age ranges and stand-in identifiers rather than full records, and field-level encryption sits underneath. Access runs through four roles with multi-factor sign-in and 23 tracked audit action types, so if you ever ask who saw what, you'll have an answer.
05What does the registry data not tell you?+
More than you'd expect. In our August 2026 sample of 100 recruiting cancer trials, the structured fields amounted to age, sex and healthy-volunteer flags, and maximum age was present in only 36 of the 100. Everything clinically decisive sat in the free text. Trial status also goes stale, so a match can point you at a slot that's already closed.
Go deeper
- Healthcare hub →The industry hub this page belongs to.
- Healthcare software development →Clinical workflow, drift, and what breaks after launch.
- HIPAA compliant software development →What HIPAA requires, which safeguards are addressable, and the order that keeps compliance cheap.
- Hallucination →Why a confident answer is not a checked one.
- RAG development →Grounding answers in your own documents, with citations.
- AI clinical trial matching →Ranking is the easy half. Defending the ranking is the build.

