Inspiration

In Kenya, access to timely healthcare is often limited by distance, cost, and strained medical resources. Many people rely on internet searches or informal advice, which can lead to misinformation and anxiety. I was inspired to create MedHelp as a way to empower individuals with a private, reliable tool that can provide initial health guidance without needing internet access. My goal was to make healthcare information more accessible, especially in underserved communities.

What it does

MedHelp is a privacy-focused medical symptom checker that runs entirely offline on a local machine. A user can describe their symptoms in natural language, and the system generates a structured report that includes:

  • A plain-language symptom analysis
  • Possible differential diagnoses
  • An urgency classification (routine, semi-urgent, or urgent)
  • Emergency contact information relevant to the user’s region

All analysis is done locally using an open-source LLM, which means no data is ever sent to external servers.

How I built it

I built MedHelp using Python and Flask to provide a simple, lightweight web interface. The backend integrates with gpt-oss-20b through Ollama, allowing all inference to run locally. I designed a structured prompt format that guides the model to produce consistent, clinically inspired outputs. For absolute emergencies (e.g., “not breathing,” “severe bleeding”), I implemented a small rule-based override for safety. The app also includes multilingual support, including Kiswahili, and automatically formats outputs with metadata, disclaimers, and privacy notes.

Challenges I ran into

  • Running a 20B parameter model locally required optimization and careful resource management.
  • Ensuring consistent and reliable outputs from the model meant iterating heavily on prompt design and parsing.
  • Balancing AI reasoning with rule-based safeguards to avoid both false reassurance and unnecessary alarm.
  • Writing disclaimers and ensuring users clearly understand that this tool is not a substitute for professional medical care.

Accomplishments that I’m proud of

  • Building a fully offline, privacy-preserving medical symptom checker.
  • Designing a structured triage system that feels both intuitive and medically inspired.
  • Adding Kiswahili support to make the tool more inclusive for Kenyan users.
  • Proving that open-source AI can be applied responsibly to address real human needs.

What I learned

  • Prompt engineering is just as important as the model itself for achieving consistent and safe outputs.
  • Privacy and local-first design are critical in healthcare, where trust is everything.
  • Combining rule-based logic with AI reasoning creates a safer and more reliable system.
  • Designing accessible tools requires considering local languages, regional emergency contacts, and cultural context.

What’s next for MedHelp – Privacy-Focused Symptom Checker

  • Expand language support to cover more African languages beyond Kiswahili.
  • Add a lightweight mode for devices with limited memory.
  • Localize emergency contacts dynamically depending on the user’s country.
  • Create offline storage of past analyses so users can track symptom progression.
  • Explore collaborations with community health workers in Kenya to test the tool in real-world settings.

A Simple Triage Function

To guide the model and safeguard against errors, I also thought of triage as a mathematical decision function:

[ T(s) = \begin{cases} \text{Emergency}, & \text{if critical symptoms detected (e.g., "not breathing")} \ \text{Urgent}, & \text{if severe but non-fatal symptoms are present} \ \text{Semi-Urgent}, & \text{if moderate symptoms with some risk factors} \ \text{Routine}, & \text{otherwise} \end{cases} ]

Where ( s ) represents the set of reported symptoms.

This simple mathematical framing helped me keep the AI’s responses structured and consistent while still leaving room for natural language reasoning.

Share this project:

Updates