Inspiration

Here’s the strange thing about hackathons: we put thousands of curious, brilliant people in one building, yet most of us spend 36 hours talking to the same three people we arrived with.

Nobody is trying to be antisocial. Meeting strangers is simply difficult for three reasons:

  • The cold start: Who is available right now? Who would actually want to meet? Walking up to a random table feels like a gamble, so most people do not.
  • The awkward first five minutes: Even when you say hello, the conversation can quickly become, “So... what are you building?”
  • The trust gap: Sharing your plans, schedule, or location with strangers feels risky. So people share nothing, and nothing happens.

Then we realized something: almost everyone already has access to an AI agent. Those agents can learn what we like and when we are available. But they are isolated. Your agent cannot talk to mine, and you would not want it giving your calendar or exact location to a stranger’s bot anyway.

So we asked: what if agents handled the awkward parts, finding people, checking availability, and asking for permission, and left the fun part to humans?

That is Krew.

What It Does

Your agent knows you. Krew lets it meet theirs.

Pebble, your personal agent, learns your interests, skills, and availability. Before sharing anything, Pebble shows you exactly what it wants to send: only rough information and a general area, never your exact location. Nothing leaves your phone until you tap Share.

Then you choose a group size, and Wally finds the rest. Wally invites the best-fit nearby agents. The agents never communicate directly with each other. Every interaction goes through Wally. Each agent answers questions about its person, such as whether the timing works, but nobody joins the group until the human taps Accept.

Strangers remain strangers until everyone agrees. At first, participants appear as Agent A and Agent B, as puzzle pieces arranged around Wally. When the final person accepts, the pieces snap into one row:

It fits!

Names appear, along with a group sign that everyone can hold up to find one another in the crowd.

After the group meets, Claude creates a challenge that can only be completed together. Each person receives one clue to a secret location and one slice of a meme image. The group combines the clues to find the location, taps We’re here, and sees the update appear live on every phone. Then everyone puts the image slices together to discover the pose and takes a group photo. Claude checks the photo, and the group earns confetti.

There are no awkward goodbyes. Everyone privately rates the experience and chooses whether they would meet again. The Meet again option appears only when interest is mutual, and the group photo is shared only if everyone approves.

Bring Your Own Agent

Krew is not another chatbot. It is the layer between agents.

Any MCP-compatible agent can join the event through one link. We also built a one-line setup for Meta Muse. Even then, the human must still tap Accept on our page. A live screen shows the entire negotiation as it happens.

Krew has two modes:

  • Cal Hacks mode: Groups are sent to sponsor booths.
  • General mode: Groups use landmarks, so the same game can work on any campus or at any event.

Sponsor Tools

Tool What it does in Krew
Claude Powers each personal agent, helps choose groups, invents challenges, and checks group photos
SpacetimeDB Stores live state, including agents, matches, check-ins, clues, and photos
SpacetimeAuth Handles sign-in
Moss Gives each agent memory of what the user liked before
Apify Provides web-based facts about locations and ideas for challenge poses
MCP / FastMCP Allows outside agents to join through the coordinator
Notability Stores our planning notes, from the first sketch to the final build

How We Built It

  • Web app: React and Vite, installable as a phone app. Every mascot, including Pebble, Wally, the octopus, the jellyfish, and the crab, is hand-drawn SVG with emotions that react to what is happening.
  • Real-time game: A TypeScript SpacetimeDB module stores matches, check-ins, clues, and photos. Updates sync instantly across every phone, while SpacetimeAuth handles sign-in.
  • Coordinator: A Python FastAPI service handles matching, invitations, the live negotiation log over WebSocket, and the MCP server that allows outside agents to join.
  • Personal agents: A FastAPI service runs each person’s agent. Claude powers the conversation, challenge generation, and photo checking. Moss provides memory, while Apify finds relevant facts and pose ideas.
  • Infrastructure: All state persists in SpacetimeDB, so restarts do not erase progress. The backends run on Heroku, the web app runs on Vercel, and both redeploy automatically whenever we push to main. One command runs the entire stack locally, and an automated browser test can play a full game on three phones at once.

Challenges We Ran Into

  • Privacy versus matching: Better matches usually require more information, but we wanted to share less. That tension led us to redesign the experience around consent: rough information instead of exact details, nothing shared before the user taps Share, letters instead of names until everyone accepts, and agents that only communicate with the coordinator.
  • Our server kept forgetting everything: Every restart erased the state, and running two server processes split the coordinator’s memory in half. We moved to one process and stored all persistent state in SpacetimeDB.
  • The app looked like every other AI product: We threw away our first interface, hand-drew the mascots, gave them emotions, and replaced page reloads with smooth transitions.
  • Four people and their AI assistants shared one repository until the deadline: Merge conflicts became the real final boss.

Accomplishments We’re Proud Of

  • The entire loop works: matching, accepting, meeting, playing a live game, taking the photo, and deciding whether to meet again.
  • Privacy is built into every step instead of being hidden in a settings menu.
  • Pebble and Wally have personalities: Pebble becomes shy when asking to share information, Wally gets excited when an invitation arrives, and both react when the group comes together.
  • Any compatible outside agent can join the event, not just our own agents.

What We Learned

  • Agents are excellent at handling the boring parts, scheduling, matching, and asking for permission, while people want to do the enjoyable parts themselves.
  • A real-time database makes multiplayer surprisingly simple because every phone watches the same shared state.
  • Privacy must be designed from the beginning. Adding it later would have required rebuilding the entire flow.
  • A mascot’s changing expression can make people care more than a long feature list.

What’s Next for Krew

  • Expand beyond hackathons to campuses, conferences, and new cities, anywhere people are near one another but have not met yet.
  • Add more collaborative games tailored by Claude to the location and the group.
  • Add opt-in calendar and location access so agents can understand availability without requiring users to repeatedly explain it.
  • Add live polls to the waiting screen so groups can start talking before the game begins.
  • Help people arrange another hangout when two or more participants mutually choose Meet again.

Built With

Share this project:

Updates

Submission history