TrialFinder
Browser UI for searching ClinicalTrials.gov with natural-language queries.
A web app that lets anyone search ClinicalTrials.gov in plain language. Results are ranked, plotted on a Cesium-powered map, and refinable through chat. The same data my find-trials MCP server exposes to AI assistants, but built for humans browsing on the web.
The problem
Patients searching for clinical trials face a complex, jargon-heavy government database. ClinicalTrials.gov returns thousands of results for any common condition, and few patients have the time or expertise to filter by phase, recruitment status, eligibility, or location. AI agents trying to help also need a structured, queryable surface that goes beyond raw keyword search.
The approach
A React frontend with a Cesium 3D globe, backed by a Hono worker on Cloudflare. The frontend renders trial locations on the globe with street-level zoom (50m minimum) so patients can see where trials run. Multi-turn chat keeps conversation history, prior results, and patient profile in context. The backend queries ClinicalTrials.gov API v2 and uses Cloudflare Workers AI to reason about eligibility before returning results.
Notable decisions
- Patient-profile-driven search. Accepts age, conditions, location, and prior treatments, then reasons about eligibility instead of just keyword matching.
- Match scoring. Results tagged as strong, possible, or weak with reasons, so patients and AI agents can triage quickly.
- Conversational context. Follow-ups like 'any trials closer to home?' work without re-entering profile info.
- 3D globe with Cesium. Street-level zoom and 'Open in Maps' links connect each trial to a real place rather than a list entry.
- Stateless per-request design. No logs, no analytics, no profiles stored server-side.
Status
Live at clinical-trials.davidloor.com. Recent work on Cesium camera and zoom fixes, marker rendering, and a MapLibre to Cesium migration.
Want similar work for your team?
AI-native senior engineering for AI, cloud, and web. Open to consulting engagements and full-time roles.