Inspiration
After studying abroad together at the University of Oxford, our group made the promise every close friend group makes: "We're going to keep hanging out!". Then real life happened. Calendars filled up, everyone got busy in their own lives, and every "we should do trivia," every "let's grab coffee," every "we HAVE to play pickleball again" got said, got a few reacts, and quietly died in the chat.
Making plans that actually stick means checking everyone's calendar, picking a place close to everyone, and following up across a dozen texts. That's real friction, every single time, and it's exactly what makes a group slowly stop hanging out, and drift apart. So we built Stickie: the friend in your group chat that turns talk into plans, and plans into people actually showing up and staying connected.
What it does
Stickie has two real jobs: getting plans made, and keeping friendships from drifting.
Making plans happen. Someone in the group chat says "trivia this week?" and someone else says "I'm in." Stickie catches that, checks the real Google Calendar of whoever has connected theirs, finds a real nearby venue through Google Places, and privately texts each person 1-2 times that actually work for them. The moment everyone's answered, it confirms in the group and drops the event straight onto every calendar. That "omg yes let's do this" energy that used to die in the chat now just quietly turns into an actual invite, with nobody having to do the annoying task of following up.
Keeping connections alive. Stickie keeps a record of every friend you give it: people already on Stickie, and your own contacts who aren't, logged the same way, with the last time you actually hung out. Text /nudge and it hands you back a simple list: everyone you're overdue to see, each with a plan already picked out. It's built to feel less like a to-do list and more like a friend tapping you on the shoulder: "hey, you haven't seen Sam in a month, want to grab coffee this week?" Reply "yes" to one and it sends that plan for you.
Getting in takes zero downloads. Stickie just lives in your text messages already, no app required. Text /join, or add it straight to the group chat, and you're set.
How we built it
AI Implementation: Meta's Muse Spark does exactly four things.
- Decides if a real plan is actually forming from messy group chat text.
- Resolves an ambiguous reply, like "eh, the other one's better," against the real options someone was actually asked about.
- Writes the actual nudge message a friend reads, so it sounds like a person texting, not an app notification.
- Powers a working agent that looks at a group's real stored interests and what they've actually done together, and proactively suggests something new to try.
Backend. Python and FastAPI run one webhook and every API route behind it. It talks to SendBlue to send and receive real iMessages (actual texts to actual phones, nothing simulated), Postgres on Supabase to store every user, plan, contact, and hangout, Google Calendar's API to read real free/busy time and write the real event once a plan is confirmed, and Google Places to find an actual nearby venue instead of picking from a hardcoded list.
Frontend. React, Vite, and Tailwind run the companion dashboard: the friends tab, the calendar connect button, and interest settings. Nobody has to open it to use Stickie since everything real happens over text, but it's there for anyone who wants to see their data, adjust how often they get nudged, or connect their calendar visually instead of trusting a text link.
Challenges we ran into
- Privacy. People need to feel comfortable before a plan gets locked in around them. Calendar connection is fully opt-in: if you haven't connected yours, Stickie just skips you instead of blocking the group. And every ask goes out one-on-one: Stickie checks in with each person privately about their own availability, so nobody's calendar, answer, or "no" is ever exposed to the whole group.
- Someone not responding, or saying no. Stickie only factors in the people who are actually interested when deciding on a plan, so one holdout doesn't stall everyone else. The final plan still gets sent to everyone, so if things change, they can still jump in. For someone who just hasn't responded yet, Stickie waits a set amount of time before confirming without them.
Accomplishments that we're proud of
- A full working loop, tested live end to end: a plan gets detected, real calendars get checked, a venue gets proposed, everyone confirms, and it lands on every calendar automatically.
- Catching a genuinely new activity by understanding the conversation itself, and keeping track of it.
- One unified nudge list that treats real Stickie friends and off-app contacts the same way, instead of running two separate systems, plus a personalized suggestion for how to reconnect with each one.
What we learned
- How to build a real agent that reads messages in real time and decides its own response.
- How to actually work with Meta's API in a live product, including the real limits (rate limits, opt-in requirements) that only show up once real people are texting it.
- That real users break things a demo never does: a brand-new phone number, two people answering at once, edge cases you only find by actually testing with your own friends.
- How to collaborate under pressure: splitting work, fixing each other's bugs, and reiterating ideas fast without stepping on each other's code.
What's next for Stickie
- Stickie as a more all-rounded agent. Stickie already looks at a group's stored interests and history and proactively suggests something new. Next, it grows into an ongoing agent that keeps learning what a group actually likes over time and suggesting more personalized plans.
- Relationships aren't one-size-fits-all. A mentor might just need a monthly coffee chat or a LinkedIn check-in. A sibling might need a weekly call. So, extending Stickie to family: so many of us are bad at just calling our parents. A version of
/nudgewith roles built for different relationships, calls for family, coffee chats for a mentor, and so on. - Real-time proximity nudges, for when two friends are already out and nearby, to create closer bonds through spontaneous hangouts. The logic is already built; it just needs location permission from each person.
- Multi-platform gateways: WhatsApp, Discord, Telegram.
Built With
- fastapi
- google-calendar-api
- google-places
- llama
- meta
- postgresql
- python
- react
- sendblue
- supabase
- tailwindcss
- vite
Log in or sign up for Devpost to join the conversation.