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.