Inspiration

We kept noticing how much of social life runs on snap judgments — the half-second read you do on someone before they've said a word. It's a skill nobody talks about and everybody uses. We wanted to turn that invisible reflex into a game.

The first version was a flop. We had AI-generated faces and the six basic emotions — HAPPY, SAD, ANGRY, FEARFUL, SURPRISED, DISGUSTED — and players got 80%+ on every round. It felt like a survey, not a game. The fix came from a simple realization: the fun in guessing-the-crowd games isn't accuracy, it's the gap between what you see and what other people see. Basic emotions are too legible. We needed words where reasonable people disagree.

What it does

First Impression shows you an AI-generated face and asks what the crowd thought of it. Instead of basic emotions, the choices are ambiguous social reads — TRUSTWORTHY, SMUG, GUARDED, HOPEFUL, FAKING IT, HIDING SOMETHING, ABOUT TO LAUGH, SUSPICIOUS. You pick the one you think most other players picked. Top answer gets 10 points, second place gets 5, and a streak counter tracks how well you're reading the room.

The game mixes three round formats so it never settles into a loop:

  • Single face — pick the word that won the crowd
  • A/B comparison — same person, two photos, which read more TRUSTWORTHY?
  • Six-face grid — one word, six faces, which one did the crowd pick?

Every few rounds the game pauses to tell you what kind of reader you are — "Generous read," "Reading the room," "On a roll" — based on whether you keep landing on the warm answers, the harsh ones, or the outliers.

How we built it

We built the entire app through MeDo, conversationally — no traditional coding. The conversation moved through layers:

  • Faces — generated with a Gemini 3.1 Flash Image pipeline, with an identity-preservation pass for the A/B round type so the same person clearly appears in both photos.
  • Crowd data — every face ships with a synthetic vote distribution seeded by Gemini, so the "crowd" feels real on round one. Real player votes blend into the seed as they accumulate.
  • Reveal animation — bars fill bottom-up, lowest first, winner lands last. This was the smallest UX choice with the biggest impact on how the game feels.
  • Meta layer — streak tracker, round counter, and the "Your read so far" interstitial that surfaces a label every few rounds.

Most of the work in MeDo was iterating on copy and pacing in chat — telling it "the reveal feels flat, make the winner land last," "the streak banner should read 'On a roll' at 4," and watching the change land in seconds.

Challenges we ran into

The biggest challenge was that our first version wasn't fun. We had a working voting game with clean UX and players were bored in three rounds. Diagnosing that took longer than rebuilding it. The answer space was too obvious, the crowd was invisible until after you voted, and every round was the same shape.

The fix was three changes layered together: ambiguous descriptors instead of basic emotions, a staged reveal that makes the crowd feel like it's arriving, and three round types instead of one. None of them are big features. All of them are sequencing choices. Getting MeDo to nail the order of the reveal — not just whether bars filled, but which one filled last — took the most back-and-forth.

The other challenge was the cold-start problem. A guessing-the-crowd game with no crowd is just a survey. Seeding distributions with Gemini gave us a believable crowd from round one, then real votes blend in as they accumulate.

Accomplishments that we're proud of

  • Average session is 20+ rounds. Our target was "8 seconds per round, please let people play more than 3." Players play 20 before they notice.
  • The reveal actually lands. Watching a player's eyes track the bars from bottom to top — and the small reaction when their pick is or isn't the winner — is the moment the game stopped being a survey.
  • Three round types from one data model. The same per-face crowd distribution drives single-face, A/B, and grid rounds with no extra data collection. That's a small architectural win that made variety cheap.
  • Streak status text feels alive. "On a roll," "Reading the room" — small copy changes, big difference in whether the top bar feels like a chrome element or a character in the game.

What we learned

Sequencing matters more than features. Our v1 had every mechanic that v2 has — faces, words, crowd data, scoring. The only differences are which words we chose, in what order the bars fill, and whether the next round is the same shape as the last one. That's it. Those three changes turned a 3-round session into a 20-round session.

We also learned that AI tooling rewards taste over scope. MeDo will build whatever you describe; the bottleneck is knowing what to ask for. The hours we spent staring at the v1 trying to figure out why it was boring were worth more than any feature we could have added.

What's next for First Impression

  • Daily featured face. A shared face every day so players can compare reads with friends — Wordle-style coordination on top of unlimited play.
  • Share cards with a curiosity-gap hook: "I saw GENIUS. 71% saw WEIRD. What do you see?" — partial face preview, full reveal on tap-through.
  • A "your reader profile" page that builds over time — are you a generous reader, a harsh one, an outlier-spotter? — and gets shareable once it's earned through enough rounds.
  • Custom face packs — historical figures, fictional characters, the same face across different lighting — to push the game into territory where the crowd's read is even more surprising.
  • Multiplayer head-to-head. Same five faces, two players, who reads the crowd better. The game is already a one-player social game; making it two-player turns it into a social game proper.

Built With

  • medo
Share this project:

Updates