Inspiration
I couldn't eat when my girlfriend broke up with me. I tried to journal through it, but my entries were scattered across apps, and the only person I trusted to talk to was my grandma, 15 hours ahead in China. My partner Krishna had been through his own version of this, and we'd debrief late at night, not for advice, just to hear from someone who got it.
That's the thing we kept coming back to: the person who can actually help you at 4am isn't a hotline or a feed of strangers. It's someone who was exactly where you are and made it out. At CalHacks 13.0 we built Glade to find that person.
What it does
Glade is an anonymous voice journal. Talk to it through your Meta glasses, phone, laptop mic, or just type. No profiles, no followers, no likes.
Every entry gets sorted by theme, and the Threads page shows where you are in each one and which way you're heading.
When you share an entry, Glade finds one person whose own journal shows they went through the same thing and came out the other side, then opens a private chat. A Why card shows what it saw in both journals. Glade only learns from one signal: did the chat help, and did your later entries trend better.
Why it isn't another social app
Instagram and TikTok rank content by how well it performs for an audience. Reddit and Facebook groups put your situation in front of a thread of strangers who don’t know you. Glade has neither. It’s anonymous, so there’s no audience and nothing to perform for. It reads what you wrote and matches you with one person whose own journal shows they went through the same thing. Nobody’s watching, and the person on the other end already lived it.
The ranker learns from exactly two signals: whether you said the match helped, and what your own journal looks like afterward. There are no likes, views, or follower counts for it to optimize. Nobody’s watching, and the person on the other end already lived it.
How we built it
Voice comes in through Ray-Ban Meta glasses paired as a Bluetooth headset, transcribed live by Chrome’s Web Speech API. A FastAPI + SQLite backend runs each entry through a crisis gate, then Claude extracts themes and sentiment while Gemini embeds it, and the entry folds into a per-theme trajectory with time decay. Sharing runs kNN over those trajectories, has Claude rerank on whether each candidate actually came through it, and scores on similarity, slope, recency, and past helpfulness, with two explore slots so the ranker keeps learning. Chats are WebSocket DMs with a two-strike moderation gate and crisis routing. The frontend is React + Vite + TypeScript on Vercel, built so a judge can scan a QR code and instantly be the helper in a live chat. A seeded cohort of 16 journals and 368 offline tests against a fake-provider mode let us build both halves before a single API key existed.
Challenges we ran into
- A matching app with zero users matches nobody, so we built a seeded cohort with realistic multi-month trajectories.
- The glasses have no public SDK; after an hour chasing Meta’s developer tools, the answer was to pair them as a plain headset and let the browser transcribe.
- Anonymous 4am conversations are exactly where things go wrong, so the crisis gate, chat filter, and routing to real resources cost us a full build phase we refused to skip. We started in SwiftUI and rewrote as a web app so any phone could open the QR link, lost Railway to closed signups and moved to Render at 1am, and planned on Llama but shipped on Claude when keys didn’t come.
- Hardest of all was designing a ranker that improves from one “did this help” signal and nothing social.
Accomplishments that we're proud of
- The full loop works on deployed URLs: speak into the glasses, get matched in seconds, and the judge is on the other end on their own phone.
- Every match explains itself through the “Why” card, so the AI never feels like a black box. And we shipped safety first instead of last.
- We rebuilt the frontend mid-hackathon and it was the right call. Started in SwiftUI, switched to a React web app so a judge’s phone can open it from a QR code with zero install. Phases 0–5 of the spec were built and committed before the backend was even deployed.
- A two-person team split cleanly. Design, UI, and pitch on one side; backend, matching, and ranker on the other. One contract file between us, no merge wars.
What we learned
The product is the matching, not the journaling, every feature we cut made it better. Building against fakes let two people work in parallel for 16 hours with no shared infra. And a three-hour call between two people who’ve been through the same thing was always the product; we just had to make it findable.
What's next for Glade
Real users beyond the seeded cohort, spoken replies through the glasses so the loop is hands-free, per-theme helpfulness so the ranker sharpens over time, and showing people their own trajectories, proof, in their own words, that they came through it. After growing users, we plan to implement the business model where we can have users pay for their post to get pushed to more people by our algorithm. If someone has a urgent need at 4am and no one is awake, spend $10 to push to however many people needed for them to get replies. Like instagram sponsored ads.
Log in or sign up for Devpost to join the conversation.