Inspiration

We're college students. We see it every day — someone sitting alone at the library at midnight, clearly overwhelmed, but nobody says anything. And honestly? We've been that person too.

The numbers are rough: 1 in 3 college students report anxiety, 1 in 5 report depression, and about 40% never seek help. Not because help doesn't exist — but because there's stigma, there's a 2-week wait for an appointment, and there's always a login form standing between you and support.

We kept asking ourselves: why does getting help on campus require so much effort from the person who has the least energy to give? What if a student could just say "I'm not okay" — anonymously, instantly — and get something back right away?

That question became MoodMap.


What it does

MoodMap is an anonymous, real-time emotional pulse map for college campuses. Students tap anywhere on a live campus map to drop a mood pin — Happy, Excited, Anxious, Stressed, or Sad. No login, no account, no name. The pin shows up instantly for everyone through real-time Firebase sync.

The moment you drop a pin, an AI companion slides in with a personalised message — comfort if you're struggling, celebration if you're thriving. Every response is unique. You can also open a private chat — type or use your voice — and every message is destroyed the moment you close the panel. Nothing is ever saved.

If the AI senses real danger, it escalates through three safety levels:

  • Level 1 — shows helpline numbers quietly
  • Level 2 — asks "Are you safe?" and offers an "I need help now" button
  • Level 3 — throws a full-screen emergency overlay with direct-dial buttons for 911, Campus Police, 988 Suicide & Crisis Lifeline, and Crisis Text Line

These resources are hardcoded — never AI-generated.

Happy Places let students who are feeling good mark their spot as a gold beacon on the map. Students who are struggling nearby get a gentle nudge: "There's a Happy Place near you — someone there is welcoming company." Anonymous peer support without anyone knowing who's who.

Recovery Stories appear when a student updates their mood — say, Stressed to Happy — and shares what helped. "Went for a walk and called my mom." That story goes into a public feed so other struggling students can see real advice from real people, not a chatbot.

There's also:

  • AI campus insights that detect stress hotspots across the map
  • Campus-wide Crisis Mode for emergencies
  • Personal mood journal with AI daily summaries
  • One-click video generator that turns live mood data into a 30-second vertical campus vibe check — ready for TikTok or Reels

How we built it

The frontend is React + Vite with Leaflet.js for the interactive map. We chose Firebase Firestore for real-time sync — when someone drops a pin, every connected browser sees it within a second through onSnapshot listeners. No polling, no refresh needed.

The AI layer runs through Groq's API on a Llama model. We use it for two things: the personal companion (unique comfort messages with randomised variety seeds so it never repeats) and campus hotspot analysis (geographic + emotional pattern detection across all pins). For crisis detection, we layered keyword matching with semantic AI evaluation — so "I'm dying of laughter" doesn't trigger a false alarm, but "I just want everything to stop" gets caught.

The video generator uses HTML5 Canvas + MediaRecorder API — CSS keyframe animations timed to exact seconds, composited onto Canvas at 30fps, and exported as a downloadable .webm file. All client-side, no server rendering.

The backend is Node.js + Express with rate limiting, CORS, security headers, and input validation. A shadow device ID system (UUID in localStorage) handles pin ownership — students can edit and delete their own pins without any user account existing.


Challenges we ran into

LLM output was unpredictable. Groq/Llama would return JSON wrapped in markdown fences, with unquoted strings, or random text before the array. We built a multi-layer repair engine — strip markdown, regex-fix values, fallback parser, hardcoded defaults. The app never crashes now, no matter what the model sends back.

Crisis detection without false positives. "I'm dying of laughter" and "I want to die" have the same keyword but mean opposite things. We solved it with two layers — keyword matching for speed, then semantic AI evaluation for context. And we made a hard rule: emergency resources are never AI-generated. Phone numbers and hotline names are hardcoded because in a crisis, you don't trust a model to get it right.

Real-time sync created ghost pins. When a user drops a pin, we show it instantly (optimistic update) — but Firebase also fires it back through onSnapshot. Without deduplication, every pin showed up twice. We fixed it with temporary local IDs that swap for real Firestore doc IDs.

Browser video recording is finicky. Canvas + MediaRecorder behaves differently across browsers. Getting consistent 30fps with layered backgrounds and timed animations took a lot of requestAnimationFrame tuning.


Accomplishments that we're proud of

The crisis escalation system actually works. We tested it with real-sounding messages and it catches things keyword matching alone would miss. The semantic layer picks up on context, and the hardcoded emergency resources mean we never serve wrong information when it matters most.

Happy Places turned out to be the most human feature we built. The idea of a sad student seeing "there's a Happy Place nearby" and being able to walk toward someone's good energy — without names, without messages, without awkwardness — that felt like something that could genuinely help people.

The AI variety system. We randomise personality seeds in every prompt, so the companion literally has a different tone every time. We tested it dozens of times and never got the same response twice. It doesn't feel like a chatbot — it feels like a different friend showed up each time.

Zero personal data. No login, no cookies tracking identity, no database of names. A random UUID handles ownership and that's it. We proved that you can build something genuinely useful without collecting a single piece of personal information.

One-click video generation. Taking live mood data, feeding it to an AI for a headline, and rendering a polished 30-second video entirely in the browser — with Canvas recording and downloadable export — felt like a stretch goal that actually worked.


What we learned

The hardest part of building MoodMap wasn't the code — it was the decisions. When do you escalate? When do you stay quiet? What does a student in crisis actually see on their screen? We had real conversations about that, and we didn't take it lightly.

We learned that AI is a tool, not a therapist. The companion can make someone feel heard for 30 seconds — and sometimes that's enough to keep going. But when things get serious, the AI needs to step aside and hand off to real resources. That handoff is the most important feature in the app.

We also learned that anonymity isn't just a privacy feature — it's the product. The moment you add a login form, you lose the person who needs MoodMap the most. Every design decision started with: "Would a struggling student still use this?"

And honestly, we learned that building something you actually care about changes the way you code. We weren't just shipping features — we were thinking about real people in real moments.


What's next for MoodMap

  • Campus admin dashboards — anonymised heatmaps showing emotional patterns over time, so counseling centers can plan staffing based on real data instead of guesswork
  • Push notifications — gentle nudges when a Happy Place opens nearby or a recovery story is posted in your area
  • Multi-university support — any campus can spin up their own MoodMap with custom boundaries and building labels
  • Native mobile app — even lower friction, with background location for automatic area detection
  • Counselor action toolkit — one-click actions like "send wellness notification to Library South" or "deploy peer ambassador"

Link to Full Demo Video : https://drive.google.com/drive/folders/1jR0ChKFgwOVdXrXQB_Aq6icjTHwp-1sf?usp=sharing


Side Pot Challenges Attempted:

  • Best Demo Video ( Attached the Full size demo video, right in the google drive)
  • ATDC Challenge: Build the Future of Automated Content ( Added the automated video generator which says the over all campus vibe check. )
  • Best Corporate Larp: While the student app is dark-mode, calming, and simple, can come up with a completely separate the "Counselor Dashboard" and make it visually look like a hardcore Enterprise SaaS product.

Built With

Share this project:

Updates

Submission history