CDMX

All workCase study 04 / 04

CatchingFeelings

A game for two phones. Same question, same 30 seconds, then both answers flip at once.

Role
Co-founder & designer
Years
2024
Platform
iOS, Android, web
Status
TestFlight beta

01 — The idea

Two people answer the same question about themselves at the same moment, each on their own phone. Then both answers flip over together. Same answer is a heart. A different answer is a talking point: something to talk about, never a fail.

It started as a game for couples. Then we pointed it at dating: instead of sending "hey," you send someone a game. So now there's a Discover feed, invites and chat built around the core round.

I co-founded it and designed it, and built the Expo apps, the Next.js site and the Firebase backend in one monorepo.

  • 10Questions a round
  • 30Seconds each
  • 20+Decks
  • 4Languages

02 — The walkthrough

One round

  1. 01 · Welcome

    How well do you know your crush?

    Meet Maya and Jordan. The whole game is one idea: answer the same questions about yourselves, and every match fills a heart.

  2. Play tab with create game, join game and categories

    02 · Play

    Start a game, or join one

    Create a game and send the code, or join with someone else's. Not online together? Play when you're both free, and the game waits up to 48 hours.

  3. A question with four answers and a progress bar

    03 · Ten questions

    Answer for yourself

    Same question, same moment, each on your own phone. You have 30 seconds. No peeking at theirs.

  4. Results: 7 hearts and 3 talking points

    04 · The reveal

    See how in sync you are

    Both answers flip at once. Same answer is a heart. At the end you get your hearts, your talking points and the XP you earned together.

  5. A talking point with both answers and reactions

    05 · Talking points

    A miss is the good part

    Different answers aren't a fail. They're the thing to talk about. React to theirs, or take it straight to chat.

  6. Chat with talking points and a round invite

    06 · Chat

    Keep it going

    Talking points follow you into chat, and you can send the next round from there.

  7. Bond screen with compatibility and streak

    07 · Your bond

    Watch it grow

    Games together, streaks, where you click and where you differ. A running score of how in sync the two of you are.

03 — What it does

How it works.

  1. 01

    Voice answers

    Say your answer instead of tapping one. It's recorded, uploaded and transcribed with Gemini 2.5 Flash, and the timer pauses while you talk.

  2. 02

    Decks for every mood

    Netflix & Chill, Spicy Takes, Love Languages, Green Flags, First Date, Food Fights and more, plus a You + Me deck written by AI.

  3. 03

    Play later

    Not online at the same time? Each player locks in their answers on their own, and the game waits up to 48 hours for the other.

  4. 04

    Streaks, XP and bonds

    Progress is computed on the server: levels, badges, a personal streak and a streak for each pair, Duolingo-style.

  5. 05

    Answers that still match across languages

    English, French, Spanish and Portuguese. Answers are stored as keys, not text, so two people playing in different languages still match.

05 — Under the hood

The hard parts.

01

Two phones, one answer

The first version wrote an answer and then read the room. Each phone only ever saw its own answer and games got stuck. Scoring moved into a database transaction, so whichever transaction sees both answers moves the round to the reveal.

02

Don't skip questions

Both phones ask for the next question after the reveal, and both requests used to land. The transaction now only advances from the reveal state, so the second call does nothing. A shared state machine lists every allowed move: lobby, question, reveal, complete.

03

Results, exactly once

The finish time is written once inside the transaction and a database rule stops it from ever changing. A Cloud Function fires on that write and records the match, XP and streaks for both players. That replaced the host's phone saving results.

04

One rulebook for app and server

Scoring is a set of pure functions in a shared package, used by the app and the functions alike. Two timeouts are never a heart, and typed or voice answers always count as talking points.

Built with

  • Expo
  • React Native
  • Expo Router
  • Reanimated
  • Next.js
  • Firebase
  • Cloud Functions
  • Gemini
  • EAS

06 — What I took from it

Realtime multiplayer is mostly about the moment two phones do the same thing at once.Get that right and the game feels like magic.

Contact

Got somethingworth building?

I like talking to founders early — before the deck, before the team. Tell me what you're working on.

Write to me