Inspiration

Mental health struggles don't announce themselves with sirens. They creep in through restless nights, skipped meals, and the quiet feeling that something's off — but most people don't realize they're in a downward spiral until they're already deep in it.

I've watched friends and classmates smile through burnout, saying "I'm fine" while their grades slipped and their sleep suffered. Traditional mental health apps ask for too much commitment — download, sign up, fill out lengthy questionnaires, set reminders. When you're already overwhelmed, that barrier feels insurmountable.

The breaking point came when a close friend told me, "I knew I was struggling for months, but I didn't have the energy to even open a wellness app." That hit hard. We don't need more apps — we need tools that meet people where they already are.

MindMate was born from one simple question: What if checking in on your mental health took less time than scrolling through Instagram?

What it does

MindMate is an anonymous emotional check-in bot that lives on WhatsApp.Every day at a time users choose, the bot sends exactly two questions:

"How are you feeling right now? (1–5)" — a quick emotional temperature check. "What's one word to describe your day?" — a low-effort reflection prompt. That's it. 30 seconds. No app store. No password. No journaling marathon. But the magic happens behind the scenes:

📊 Mood Heatmap — A visual calendar showing daily mood colors (green = good, red = low) so users can spot patterns at a glance. 📈 Trend Tracker — 7-day and 30-day mood lines that reveal emotional trajectories. ☁️ Word Cloud — The most frequent "one word" responses, showing what's really on users' minds. 🧘 Coping Suggestions — When someone's mood drops below 2 for three consecutive days, MindMate gently offers a grounding exercise (box breathing, 5-4-3-2-1 senses, etc.). 🔗 Share with a Friend — Optional weekly summary link users can send to a trusted person for support. 🔒 100% Anonymous — No names, no emails, no personal data. Just a random user ID.

MindMate isn't therapy — it's a gentle mirror that helps people notice their own patterns before they spiral.

How we built it

MindMate's backend is built with Python and Flask, handling all bot logic and conversation state management. Supabase serves as our PostgreSQL database, securely storing anonymous user responses. Twilio's WhatsApp API handles the messaging layer, forwarding user messages to our Flask webhook. The frontend dashboard uses pure HTML, CSS, and JavaScript with Chart.js for beautiful mood visualizations, all deployed on Vercel. The entire backend runs on Render with Gunicorn as the production server. We managed our code and deployments through GitHub, ensuring smooth integration across all services.

Challenges we ran into

  1. 🕒 Timezone Hell The Problem: Users in different time zones were getting check-ins at weird hours. The Fix: We added a timezone selector during onboarding and stored it in the database. Daily check-ins are now triggered based on each user's local time.

  2. 🔄 State Management Without Accounts The Problem: Since users don't log in, we had to track where they were in the conversation (waiting for mood input vs. word input) without any session cookies. The Fix: We used an in-memory dictionary keyed by their WhatsApp number. This stores their current "step" and any temporary data like their mood score before they type the word.

  3. 📦 Python Package Conflicts The Problem: Both Twilio and Supabase export a class called Client, causing a name collision. The Fix: We used import aliases: from twilio.rest import Client as TwilioClient and from supabase import create_client, Client as SupabaseClient.

  4. 📱 Twilio Sandbox Limitations The Problem: Twilio's free sandbox has strict limitations:

Users must send a unique join code to connect (expires every 72 hours) Only 5 verified numbers can receive messages Users get confused by the join process The Fix: We clearly documented the join process and created a fallback plan. For production, we would switch to Africa's Talking (which has better African carrier relationships) or self-host with MultiWA (open-source WhatsApp gateway).

  1. 🗄️ Data Privacy Anxiety The Problem: Even though we said "anonymous," beta testers were still worried about their data being stored. The Fix: We added a one-click "Delete My Data" button in the dashboard and wrote a clear, simple privacy policy explaining exactly what's stored and why.

Accomplishments that we're proud of

🏆 Zero-Friction Onboarding We built a mental health tool that takes under 30 seconds to start using. No app downloads, no email verification, no lengthy questionnaires. Just type a join code on WhatsApp and you're in.

📊 Beautiful Data Visualization The mood heatmap and trend line turn raw numbers into something users can actually understand and act on. Beta testers told us, "Seeing the red days in a row made me realize I needed to reach out."

🧘 Context-Aware Interventions MindMate doesn't just collect data — it acts on it. When someone's mood stays low for three days, the bot sends a tailored coping exercise. One tester said, "I was about to spiral, and then MindMate sent me the breathing exercise. It actually helped."

🔐 Privacy-First Design We built anonymity into the core of the product — no PII, no tracking, no data selling. Users feel safe opening up because they know it's truly private.

🔧 Solved Critical Import Bug We discovered and fixed a major issue where Twilio and Supabase both exported a Client class, causing conflicts. Using import aliases solved it cleanly.

🌍 Full Stack Deployment Successfully deployed: Backend on Render (https://mindmate-73ah.onrender.com) Frontend on Vercel (https://mindmate-eight-khaki.vercel.app) Database on Supabase WhatsApp bot on Twilio

What we learned

📚 Technical Lessons Messaging APIs are powerful but finicky. Twilio's webhooks require careful debugging — we learned to log everything and use ngrok for local testing.

Import aliases save the day. When two packages export the same class name, aliases (Client as TwilioClient) prevent conflicts.

Simple > Complex. Our first design had mood tracking, journaling, AI-generated insights, and social features. We stripped it down to two questions and a dashboard. Adoption skyrocketed.

Data visualization matters. Users engage way more with a colorful heatmap than a CSV export. Investing in Chart.js was worth it.

Always check your PORT. Render uses port 10000 by default, not 5000. We learned to either remove PORT from .env or set it correctly.

💡 Design Lessons Mental health tools must be gentle. We learned to avoid clinical language, use warm emojis, and never make users feel guilty for missing a check-in.

"Anonymous" isn't just a checkbox. It's a promise. We built privacy into every decision — from data storage to deletion policies.

🌍 Human Lessons People want to help themselves, but they need a nudge. Most users told us, "I knew I was feeling off, but seeing it in the heatmap made it real."

Small, consistent actions win. 30 seconds a day is sustainable. 10-minute journaling is not. We learned that impact isn't about intensity — it's about consistency.

Build with users, not for them. Our best features came from beta tester feedback: the "Share with a Friend" button, the weekly summary, and the emoji response shortcuts.

What's next for MindMate

We want MindMate to become the default emotional check-in for millions of people — not because we force them to use it, but because it's so effortless that they don't even think twice. No app fatigue. No guilt. Just 30 seconds of reflection that could change someone's day, or even their life.

Share this project:

Updates

Submission history