The first version of Vesper had six moods. Happy, sad, anxious, bored, lonely, angry. It was a Tuesday afternoon and the list felt fine. Two weeks of user testing later, it was clearly wrong — not because the moods were inaccurate, but because they were the moods of an emoji picker, not a person.
Why six wasn't enough
“Sad” covers grief, homesickness, post-breakup numbness, and the specific flavour of sadness that comes from finishing a good book. Matching all of those to each other doesn't produce connection — it produces mismatches. People showed up sad in different ways and were paired with strangers whose sadness was nothing like theirs.
Why 53 was too many
Our second pass swung hard the other way. We brainstormed every emotional state we could name and ended up with 53 moods, including precise ones like “Sunday-night dread” and “just had a difficult call with my mum”. The accuracy was beautiful. The matching was terrible. Match queues for niche moods stayed empty for hours, and the people in them eventually picked something less true just to talk to someone.
How we got to 27
The number 27 isn't magic. It's just where two curves crossed: emotional specificity high enough that a match feels real, and queue density high enough that a match happens within 90 seconds. We added a mood, ran a week, watched both metrics, and kept or dropped it.
- Every mood had to fill a queue within 2 minutes at our smallest hour.
- Every mood had to be distinct enough that the next-best mood wasn't a near-duplicate.
- Every mood had to be something a person would actually claim out loud — not a clinical label.
“3am thoughts” passed. “Mild dysthymia” did not.