Skip to content
Omar Abdalla
All work

Case study · 2026

Clinical Trial Matching

A spec-driven engineering exercise, not a product: a clinical-data pipeline that reads trial eligibility the way a coordinator would, and explains its matches.

FHIR
ResearchStudy export
NLP
eligibility extraction
Explainable
match results

The exercise.

I built this as an agentic, spec-driven exercise to work through a hard domain end to end. It ingests studies from ClinicalTrials.gov and turns dense eligibility text into something matchable.

Extracting eligibility.

A spaCy/SciSpaCy NLP pipeline extracts eligibility criteria from trial descriptions. Because this is clinical data, I leaned on terminology-grounding for safety and tracked provenance so every extracted fact traces back to its source.

Matching, explainably.

The system matches patient profiles to trials and returns explainable results rather than a black-box score, with FHIR ResearchStudy export for interoperability.

It's split into clean application, frontend, and data layers: FastAPI and PostgreSQL behind a Next.js and TypeScript frontend.

Stack.

FastAPIPostgreSQLspaCy / SciSpaCyNext.jsTypeScript

Let's talk.

Happy to walk through the architecture and the decisions behind it.