Healthcare marketplace search
Patients do not search using specialty names. They search using symptoms, in their own words. Bridging that gap is a retrieval problem with a clinical vocabulary sitting in the middle of it.
The problem
- Sector
- Healthcare marketplace
- Query type
- Symptoms, plain language
- Retrieval
- BM25 + dense, fused
- Role
- Search and AI
Someone types "chest pain when I climb stairs". Keyword search finds nothing useful, because no cardiologist profile contains that sentence. Pure semantic search does better on the phrasing but becomes unreliable the moment a query contains an exact clinical term like a named procedure.
Both failure modes are real and they pull in opposite directions, so the answer is to run both and fuse the scores, with a medical terminology layer expanding symptoms, aliases and abbreviations before either channel sees the query.
Architecture
Decisions worth defending
The vocabulary is the product
A hand-built terminology map covering specialties, symptoms and aliases does more for result quality than any embedding model choice. It is unglamorous, domain-specific work, and it is the part that cannot be bought off a shelf.
Fuse, do not choose
Picking keyword or semantic means accepting one of two failure modes. Running both and merging costs a few milliseconds and removes the choice entirely.
Suggestions where confidence is low
When a query matches weakly, the honest response is a prompt toward better terms rather than a confident list of loosely related doctors. In healthcare specifically, a wrong confident answer is worse than an admitted gap.
Stack
Search
- BM25 keyword
- Dense embeddings
- Score fusion
- Prefix expansion
Backend
- Python API
- PostgreSQL
- In-memory index
- Scheduled reindex
AI features
- Medical report analysis
- Onboarding automation
- Notification routing
Compliance
- Role-based access
- Admin audit logs
- Activity trails
- Payment records