CliniMatch
Inspiration
Navigating the world of medical research can be overwhelming, especially for patients and their families who are already dealing with health challenges. Clinical trials offer hope and access to cutting-edge treatments, but they are often described in dense, technical language that is difficult for a layperson to understand. We were inspired to create CliniMatch to solve this problem. We wanted to build a tool that empowers patients by making clinical trial information accessible, understandable, and actionable. Our goal was to replace confusion with clarity and connect people to the treatments that could change their lives.
What it does
CliniMatch is a smart, user-friendly web application that connects patients with relevant clinical trials. Here’s how it works:
- Create a Profile: Users create a secure profile with their basic health information, such as age, medical conditions, and location.
- Find Matches: CliniMatch takes this profile and searches the vast ClinicalTrials.gov database to find trials that are a good fit.
- AI-Powered Simplification: This is our key feature. We use the Google Gemini AI to "translate" the complex medical jargon from the official trial descriptions into simple, easy-to-understand language. It explains the purpose of the study, the eligibility requirements, and the time commitment in plain English.
- Explore and Connect: Users can browse their matched trials, view trial locations on an interactive map, and get the information they need to discuss these options with their doctor.
How we built it
CliniMatch is a full-stack application built with a modern tech stack:
Frontend: The user interface is a responsive single-page application built with React and TypeScript. We used Tailwind CSS for styling, Framer Motion for smooth animations, and React Leaflet to create the interactive map of trial locations.
Backend: The core logic lives in a Python backend powered by the Flask framework. This backend is responsible for:
- Communicating with the ClinicalTrials.gov API to search for trials.
- Using the Google Gemini API to perform the AI-powered translation of medical text.
- Providing a RESTful API for the frontend to consume.
Database and Authentication: We used Supabase for two key purposes. First, for secure user authentication and management. Second, as a PostgreSQL-based caching layer for our backend. Caching the results of trial searches significantly improves performance and reduces redundant API calls.
Challenges we ran into
- Integrating External APIs: Working with two different external APIs (ClinicalTrials.gov and Google Gemini) presented a challenge. We had to handle different response formats, implement robust error handling, and create a rate-limiting strategy for the ClinicalTrials.gov API to ensure we were using it respectfully and efficiently.
- AI Prompt Engineering: Getting the AI to produce consistently high-quality, accurate, and easy-to-understand translations required careful prompt engineering. We experimented with different prompt structures and parameters to ensure the output was both patient-friendly and medically responsible.
- Data Normalization: The data from ClinicalTrials.gov can be inconsistent. We had to write logic to parse and normalize the trial data, especially the eligibility criteria and location information, before feeding it to our application and the AI.
Accomplishments that we're proud of
- The AI Translation Feature: We are incredibly proud of the core feature of our application. Seeing the AI transform a wall of medical text into a few clear, simple sentences is a "wow" moment, and it's the heart of what makes CliniMatch so valuable.
- A Seamless User Experience: We built a polished and intuitive UI that guides the user through the process of finding and understanding clinical trials. The combination of the simplified text and the map visualization makes the information truly accessible.
- A Well-Architected Full-Stack Application: We successfully integrated a modern frontend, a robust backend, and cloud services like Supabase and Google AI into a cohesive and functional application in a short amount of time.
What we learned
- The Power of AI for Accessibility: This project was a powerful demonstration of how AI can be used to make complex information accessible to a wider audience. It's not just about chatbots; it's about breaking down barriers to understanding.
- The Importance of a Solid Backend Architecture: Building a reliable service layer that orchestrates multiple external APIs and a caching mechanism was crucial. This project reinforced the importance of backend design patterns for creating scalable and performant applications.
- Full-Stack Integration: We gained valuable experience in connecting a modern React frontend with a Python backend, including handling CORS, managing environment variables across different environments, and designing a clean API contract between the client and server.
Built by Jacob Mobin
Built With
- fastapi
- flask
- framermotion
- gemini
- google-maps
- python
- react
- supabase
- tailwind
Log in or sign up for Devpost to join the conversation.