CalmSignal — Mental Health Chatbot
Streamlit + Python app: (1) PHQ-9 on signup, chatbot replies based on condition; (2) Chat with friends—upload screenshots, analyze conversation, provide contextual replies. NLP for mental health support.

Mental-health tooling carries real responsibility — responses need to be empathetic and contextually appropriate, not generic chatbot output. CalmSignal is a Streamlit + Python support app built around two flows: a PHQ-9 depression screener that shapes how the chatbot responds, and a "chat with friends" tool that analyzes uploaded conversation screenshots to suggest contextual replies. That meant building a condition-aware response layer on top of standard NLP, informed by the user's PHQ-9 result rather than treating every user identically.
What I Built
- PHQ-9 screening on signup — a standard depression screening questionnaire that sets the tone for chatbot interactions
- Condition-aware chatbot — responses adapted based on the user's screening score
- Screenshot-based conversation analysis — OCR extracts text from uploaded chat screenshots
- Contextual reply suggestions — the AI proposes empathetic, situation-aware responses for difficult conversations
- NLP pipeline combining sentiment analysis and intent detection tuned for mental-health-aware processing
Tech Stack
- Frontend: Streamlit
- Backend: Python
- AI/NLP: LLMs, sentiment analysis, intent detection
- OCR: Text extraction from conversation screenshots
Key Decisions
- Used the PHQ-9 screening result to shape chatbot tone and response style rather than treating every user identically, since generic chatbot output is a poor fit for mental-health-sensitive contexts
- Added OCR-based screenshot analysis as a separate flow from the main chatbot rather than merging them, since analyzing a friend's conversation needed different context handling than a direct PHQ-9-informed chat
- Kept the NLP pipeline focused on sentiment and intent rather than attempting diagnosis, staying within the bounds of what a supportive tool should responsibly attempt
Outcome / Impact
A supportive tool that personalizes chatbot interactions per user and helps people navigate difficult conversations with better-informed replies, grounded in a real screening instrument rather than generic chat.