Inspiration

There was a third year student at my college. Doing well academically. Seemed fine from the outside. And then one day, he wasn't there anymore.

I'm a first year at IIT Kharagpur. In 2025 alone, our campus lost at least 5 or 6 students to suicide. Student groups kept saying the same things - isolation, pressure, feeling completely unseen.

I kept thinking about one question.

What if someone had just... talked to him?

Not a helpline. Not a therapist booked weeks out. Just someone who had been in that same dark place. Someone who could say - I know. I've been there. You're not broken. I promise.

That question became Whisper.

What it does

Whisper matches people based on shared lived experiences - grief, leaving relationships that hurt, living with anxiety, recovering, caregiving, questioning who you are, the year that broke you.

You pick what you're carrying. Whisper finds someone who has carried it too.

No photos. No real names required. No judgment. Just two people who understand each other - at different points on the same road.

The core flow:

You arrive and check in - a tender wave, a quiet day, a heavy hour, a brighter moment. Whisper listens and adjusts who it shows you based on your mood.

You pick your experience tags and your healing phase - Just Started, Sitting With It, Finding My Footing, or Looking Back. This matters because someone Looking Back can be exactly what someone Just Started needs to hear. Whisper matches across compatible phases, not just shared tags.

Each match card shows what someone is going through, where they are in healing, and a story they've chosen to share. Gemini AI adds one warm line - a human reason why you two might understand each other.

If it resonates, tap "send a whisper." A first message. Stuck on what to say? AI generates three gentle openers based on their actual story. They receive it. They choose whether to connect. No pressure. No obligation.

If they accept - a real conversation begins. Text or voice. When a new chat opens, conversation starters appear - soft suggested questions to make the first exchange easier. And if a message reads as unsolicited advice rather than listening, a gentle non-blocking nudge appears: "Want to rephrase this more gently?"

Need space? Quiet Mode pauses your entire presence - no last seen, no pressure to respond.

Posting your own story:

Tap "I'm open to connect today" to put yourself out there. Share a story card - a prompt and your answer in your own words. Others can find you, send you a whisper, and connect. Every post runs through Gemini AI before going live - harmful content is flagged compassionately, not coldly.

The Story Wall:

Share anonymously. React with kindness. No free-text comments - only curated responses like "me too", "I felt this", "sending warmth." Because in a space this sensitive, comment pile-ons can do real damage. We thought about that.

Therapist directory:

Browse verified therapists with an AI-calculated match percentage based on how many of their specialties overlap with your experience tags. Sorted highest match first. Book free 15-minute listening sessions or paid full sessions. Slot availability is managed cross-account - if someone books a slot, it disappears for everyone else instantly. Cancellations free the slot back up automatically.

Therapist dashboard:

Therapists get a completely different experience - a dedicated dashboard showing upcoming and past bookings, manage availability slots, accept or cancel sessions, and a "Begin session" button that opens a dedicated therapy chat thread on the day of the appointment.

Safety - built in, not bolted on:

A persistent crisis button lives on every screen. Tap it - grounding exercises, a breathing animation, crisis hotlines, and a safe exit that wipes your session and takes you to Google instantly. No trace. No questions. For anyone who needs to disappear quickly.

One-tap block and report on every conversation. Block removes someone from your entire experience silently. Report saves a flag with reason for review.

After 10 or more messages in a conversation, a soft card appears: "Want to let them know this helped? It's anonymous." One tap sends a nameless thank you to the other person. They see: "Someone you talked to wanted you to know - this helped." No name. No conversation reference. Just a quiet acknowledgment that connection happened.

Phone OTP verification gives users a verified tick that shows on their profile, match cards, and conversations throughout the app. No verified badge without completing the full verification flow.

In summary - every feature was built with one question: Does this feel okay for someone who is not okay right now?

How we built it

Whisper was built entirely through MeDo - conversational prompting, no manual coding.

100+ build iterations over one week. 15+ database tables. 4 distinct Gemini AI integrations via MeDo's plugin system. 32 pre-submission test scenarios - all passed.

The architecture:

  • Custom DB-based authentication (email + password, localStorage session persistence)
  • Cross-account real-time functionality via polling (3s messages, 10s whisper requests, 15s story wall)
  • Gemini 2.5 Flash for match explanations, whisper icebreakers, content moderation, and mood summaries
  • Phone OTP verification with database-stored codes
  • Full therapist booking system with slot availability management across accounts

The design system - warm off-white, sage green, dusty lavender, muted terracotta - was specified in the initial prompt and held consistently across every iteration.

Every piece of copy was written with one question in mind: how does this feel for someone in real pain?

"Skip gently" not "pass." "Something didn't go through. No rush - try again when you're ready." not "Error 400."

Challenges we ran into

The auth system kept fighting us. MeDo defaulted to Supabase Auth patterns repeatedly, which conflicted with our custom DB-based login. We resolved this by stripping all Supabase Auth references and rebuilding authentication as direct table queries - email, password, localStorage. Simple, reliable, ours.

Cross-account real-time without WebSockets. True real-time requires infrastructure beyond MeDo's scope. We solved this with optimised polling intervals - functionally invisible to users in normal use, and honest about the limitation in our architecture.

AI features without redundant API calls. Early builds called Gemini on every render. We implemented component-level caching by card ID so AI generates once, not on every scroll.

RLS policies blocking our custom auth. Since we weren't using Supabase Auth sessions, auth.uid() always returned null - blocking every write. We migrated all policies to public WITH CHECK (true) and handled authorisation at the application layer instead.

Keeping every word emotionally safe. The hardest challenge wasn't technical. It was asking - for every button, every error message, every empty state - does this feel okay for someone who is not okay right now?

Accomplishments that we're proud of

The AI match explanation is the moment we're proudest of. Not because it's the most complex feature - but because when it works, it says something like:

"You might understand each other because they both know the exhausting work of mending from life's profound heartbreak."

That sentence, generated in real time by an AI, about two real people who've never met - that's what Whisper is supposed to feel like.

We're also proud of the crisis system. The safe exit button - one tap, gone, no trace - exists because some of our users might be in situations where someone else cannot know they're here. We thought about that person. We built for that person.

And we're proud that 32 out of 32 pre-submission tests passed. For an app built in a week, with no manual code, that feels like something.

What we learned

Building for vulnerable people demands a different standard.

Every micro-interaction is either reassuring or stressful. Loading states, empty states, error messages - none of them are neutral when your user is already fragile.

We learned that MeDo is remarkable at generating UI fast, but the soul of an app has to be specified by the builder. The AI can write the button. You have to decide what the button says, and why it matters.

We also learned that the hardest part of building a mental health app is knowing what NOT to build. Features that sound good - group chats, reactions, public profiles - can become vectors for harm in a space this sensitive. Every feature we cut was a deliberate choice to protect the people using it.

What's next for Whisper

Whisper is a beginning, not a finished product.

Near term: Real-time WebSocket messaging via Supabase Realtime. Google OAuth and verified email authentication. Twilio SMS for real OTP verification. Payment processing for paid therapist sessions.

Medium term: Native iOS and Android apps via React Native. In-app video sessions for therapist appointments. Group healing circles for shared experiences - carefully moderated, safely contained. AI-powered private journal with weekly pattern recognition.

Long term: Campus partnerships. Starting with IIT Kharagpur - the place this idea was born - and expanding to other institutions where isolation and pressure quietly take lives that didn't have to end.

Because that's the real goal.

Not a successful hackathon submission. Not a product launch.

Just fewer people sitting alone with something they think no one else has ever felt.

When the truth is - someone has. And they're out there. And Whisper can find them.

Built With

Share this project:

Updates