Inspiration Quick health tasks are annoying: “What’s in this meal?”, “Should I worry about this symptom?”, “Where’s the nearest place to get help?” I built HealthStack AI to bundle three tiny, practical tools into one simple page that works in a demo without logins or paid APIs.

What it does Calorie Estimator (photo → nutrition): Detects the dish, splits into items, estimates grams + kcal/100g, totals kcals, and shows sources. Symptom Checker (guided Q&A): Asks targeted follow-ups and returns a plain-English summary with self-care tips and red-flag guidance. Medical Map (postcode → nearby care): Finds pharmacies/clinics/hospitals/blood banks around a UK postcode—no API keys.

Fast examples Example 1 — Food (worked): Upload a pic of chicken caesar salad. Output table (abridged): Chicken (120 g × ~165 kcal/100g) → ~198 kcal Romaine (80 g × ~17) → ~14 kcal Caesar dressing (30 g × ~480) → ~144 kcal Croutons (25 g × ~407) → ~102 kcal Total ≈ 458 kcal + source links.

Example 2 — Symptom (worked): Input “throbbing headache after long screen time.” Q&A covers duration, hydration, light/noise sensitivity. Output: “Likely tension headache vs dehydration. Try water, breaks, OTC analgesic if suitable. Seek help if sudden ‘worst ever’, neuro deficits, fever, head injury.”

Example 3 — Map (worked): Search BR6 9EG, Pharmacy → pins within ~3 km with names on click.

How I built it Frontend: Single-file Flask templates with a minimal dark glassmorphism theme. No JS build tools. Backend: Python Flask. File upload for food photos. Session state for symptom flows. AI/NLP: Pluggable LLM via health.py (detect_food_description, estimate_calories_from_desc, Q&A engine). I strip code fences and parse JSON into tables. Data/Maps: OpenStreetMap: Nominatim (geocoding) + Overpass (POIs). folium renders the interactive map. UX: No sign-ups, no keys, fast demo path. Results include sources and a medical disclaimer. Challenges I ran into LLM JSON drift: Sometimes prose instead of JSON → added a fence stripper and schema checks. Calorie realism: Mapping free-text dishes to grams per item → added transparent “assumed_mass_g”. Open data limits: Overpass/Nominatim throttling → user-agent, timeouts, small result sets. Multi-turn state: Keeping symptom questions consistent → simple session state machine.

Accomplishments that I’m proud of Three useful mini-apps in one file that anyone can run. Clear, source-linked nutrition breakdowns (not just one kcal number). A guided symptom flow that stays compassionate and safe with red-flag messaging. A no-keys Medical Map using open data that looks clean on first load.

What I learned Small, focused tools beat one giant app for hackathons. “Explainable outputs” (tables, sources, assumptions) build trust fast. Open data stacks (OSM + folium) are perfect for demos and judges.

What's next for HealthStack AI Export & share: One-click PDF/CSV for calorie tables and symptom summaries. Personalization: Local storage of dietary prefs/allergies and symptom history (opt-in).

Built With

Share this project:

Updates