Dzaky Zakiyal Fawwaz

Daewoong Pharmaceutical · 2021–2022

Sano: Personal Health Assistant Chatbot

AI Engineer

Sano: Personal Health Assistant Chatbot

Problem

The project started from medication non-adherence: about half of prescriptions are not taken as prescribed, which drives chronic-disease treatment failures. The goal was an assistant that acts like a caregiver: remind, explain the medicine, and help find it.

Approach

Messages arrive from Telegram through a webhook to the Sano bot server. RASA NLU (DIETClassifier with spaCy multilingual entity extraction) detects the intent and entities, so "remind me to take a multivitamin every day at 8 am" becomes a reminder request with the medicine and schedule. A fine-tuned MobileNetV2 identifies drugs from photos, and TF-IDF with cosine similarity over medicine descriptions recommends alternatives.

Architecture

Hover a component to trace its connections · drag to pan · use + / − to zoom

  • Source
  • Processing
  • Model
  • Data store
  • Output

How It Works

  1. MessageThe user chats with Sano on Telegram; a webhook forwards each message to the bot server.
  2. UnderstandRASA NLU classifies the intent (e.g., set a reminder) and extracts entities such as the medicine and time.
  3. IdentifyA fine-tuned MobileNetV2 recognizes a drug from a photo of the pill or package.
  4. RecommendTF-IDF vectors and cosine similarity over medicine descriptions suggest similar drugs.
  5. Remind & locateReminders are stored and sent on schedule, and Sano points to a nearby pharmacy.

What I Built

  • The Telegram bot server, webhook handling, and the reminder database.
  • The RASA NLU pipeline (DIETClassifier, spaCy multilingual entity extraction) for reminders, drug questions, and recommendations.
  • A fine-tuned MobileNetV2 image classifier for drug identification.
  • A similar-drug recommender using TF-IDF and cosine similarity on medicine descriptions.

Impact

One chat interface covers four caregiver tasks: medication reminders, drug identification from text or a photo, similar-drug recommendations when stock runs out, and directions to a nearby pharmacy.

Screenshots & Figures

Sano setting a medication reminder
Setting a daily medication reminder in a conversation.
Sano finding a nearby pharmacy
Reminder confirmation and directions to the nearest pharmacy.
Sano identifying a drug from a photo
Drug identification from a package photo, with ingredients and indications.
RASA NLU and Core flow
How RASA turns a message into an intent, entities, and the next action.
TF-IDF cosine similarity example
Term matrix and cosine similarity used to recommend similar drugs.

Key Metrics

4Caregiver features in one chat
Text + photoWays to identify a drug

Tech Stack

PythonRASA NLUspaCyDIETClassifierTensorFlowMobileNetV2TF-IDFTelegram Bot API