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
- anthropic
- apscheduler
- dependencygraph
- docling
- fastapi
- gemma3
- html
- javascript
- ollama
- pgvector
- postgresql
- python
- sqlalchemy
Log in or sign up for Devpost to join the conversation.