About medMatch
Inspiration
Healthcare providers have access to enormous amounts of patient data, while pharmaceutical companies produce an equally large amount of information about medications, clinical developments, and treatment options. The problem is that connecting the two in a useful way is difficult.
Healthcare professionals don't have time to manually search through large amounts of pharmaceutical content to figure out what is most relevant to the patients they actually see. At the same time, traditional HCP engagement can overwhelm providers with information that may not reflect the needs of their patient population.
We built medMatch to bridge that gap.
Rather than showing an HCP more information, medMatch tries to surface the most relevant information by analyzing clinical patterns across their patient population and connecting those patterns with relevant pharmaceutical content.
What It Does
medMatch connects patient data from an electronic health record system with an AI-powered clinical analysis and pharmaceutical matching pipeline.
The platform analyzes patient information such as:
- Conditions
- Medications
- Clinical observations
- Encounters
- Changes in clinical measurements
medMatch then identifies meaningful clinical contexts and patterns across the HCP's patient population.
Using semantic matching, these contexts are compared against pharmaceutical content to determine which resources are most relevant.
The result is a Top 5 Opportunities view designed to give HCPs a quick, population-level picture of potentially relevant pharmaceutical information.
The ranking balances two types of opportunities:
- Population matches — content relevant across a larger portion of the HCP's patient population.
- High-relevance matches — content with particularly strong relevance to a smaller subset of patients.
Providers can then explore the underlying patient records and clinical context behind those matches rather than receiving an unexplained recommendation.
Our goal is not to replace clinical judgment or recommend treatment. medMatch acts as an information relevance layer, helping HCPs navigate large amounts of patient and pharmaceutical information more efficiently.
How We Built It
medMatch combines a simulated EHR environment, clinical data processing, AI analysis, semantic search, and a web-based dashboard.
EHR and Patient Data
We used OpenEMR to represent a hospital's electronic health record system and created synthetic patient records containing conditions, medications, observations, and encounters.
Patient information is retrieved and transformed into structured clinical data that our analysis pipeline can process.
Clinical Analysis
We built a multi-stage analysis pipeline that:
- Extracts important clinical context from patient records.
- Detects meaningful changes in patient data.
- Determines which clinical information deserves additional attention.
- Aggregates patterns across multiple patients.
- Uses those patterns to identify relevant pharmaceutical content.
This allows us to move beyond analyzing a single record and instead ask a more useful question:
What clinical patterns matter across this provider's patient population?
Pharmaceutical Matching
We represent pharmaceutical content using embeddings and compare it with clinical patient context through semantic similarity.
Instead of relying only on exact keywords, this allows medMatch to identify content that is conceptually related to the clinical situation.
The matching engine calculates patient-level relevance and then aggregates those results to generate population-level opportunities.
Frontend
We built the medMatch dashboard using React, TypeScript, TanStack Router, and TanStack Query.
The interface provides:
- A searchable patient queue
- Individual patient records
- Clinical context summaries
- AI-assisted patient ranking
- Population-level analysis
- Pharmaceutical matches
- Top pharmaceutical opportunities for the HCP
We used Supabase Edge Functions for backend AI and matching workflows and Supabase for storing and retrieving pharmaceutical content.
Challenges We Faced
One of our biggest challenges was determining what "relevant" should actually mean.
Simply choosing the medication with the highest similarity score was not enough. A resource could have an extremely strong match with one patient while having almost no relevance to the rest of the provider's population.
We therefore designed the Top 5 system to balance breadth and strength of relevance rather than relying on a single fixed threshold.
Another challenge was integrating several systems with very different responsibilities. Patient data originated in OpenEMR, clinical context had to be extracted and analyzed, embeddings had to be generated, pharmaceutical content had to be searched, and those results then had to be aggregated and presented through the frontend.
We also encountered practical engineering challenges involving TypeScript types, asynchronous ranking, Supabase Edge Functions, CORS behavior, API integrations, deployment errors, and keeping our frontend and backend data models consistent.
Debugging these integrations taught us how important observability and clear boundaries between each stage of an AI pipeline are.
What We Learned
Building medMatch taught us that adding AI to healthcare isn't just about calling a model.
The more difficult problem is deciding what information the model should receive, how results should be ranked, and how those results should be presented in a way that remains useful and interpretable to a healthcare professional.
We also learned how to work with healthcare data structures, EHR systems, semantic embeddings, population-level analysis, serverless backend functions, and modern React architecture.
Most importantly, we learned that effective healthcare technology should reduce information overload rather than create more of it.
What's Next
With more time, we would expand medMatch with richer FHIR integration, larger pharmaceutical datasets, improved population clustering, stronger explainability for each match, and more detailed HCP feedback controls.
We would also like to allow providers to drill down from each population-level opportunity into the specific clinical patterns and patient groups that co
Built With
- api
- css
- html
- javascript
- json
- openrouter
- pgvector
- postgresql
- python
- react
- sql
- supabase
- tailwindcss
- typescript
Log in or sign up for Devpost to join the conversation.