Inspiration

80% of clinical trials miss enrollment targets, not from a lack of eligible patients, but because finding them is a slow, manual process that costs the industry millions per day in delays.

What it does

Uploads patient PDFs, parses them with Docling, runs a six-agent dependency-driven pipeline that scores eligibility, resolves data gaps, eliminates bias through blind assessment, and delivers a prioritised recruiter recommendation in under 60 seconds.

How we built it

FastAPI backend with a PostgreSQL adjacency list dependency graph where each agent reads its resolved input nodes and writes results back, triggering automatic downstream propagation via a propagate_resolution function, all orchestrated by Anthropic Claude with prompt caching and fixed-temperature inference.

Challenges we ran into

Eliminating anchoring bias between agents required structurally preventing the Blind Assessor from accessing prior scores at the database level, not just through prompt instructions.

Accomplishments that we're proud of

Replacing a hardcoded sequential pipeline with a fully dependency-driven orchestrator where the graph itself determines agent execution order, making the system extensible without touching orchestration logic.

What we learned

Modelling clinical eligibility as a DAG with resolution semantics is a fundamentally better fit than a linear pipeline; it surfaces exactly which missing data is blocking a decision and makes the reasoning auditable at every node.

What's next for BetterAhead Clinical Research

Federated multi-site deployment with privacy-preserving recruiter memory, and a reinforcement loop where coordinator override decisions continuously refine the scoring weights over time.

Built With

Share this project:

Updates