← All work
Ditto · Growth surface

The Yearbook

Your friends vote on you across six dimensions, an LLM writes up who that makes you, and the results page quietly hands you back to Ditto.

Role
Full-stack, owned end to end
Shipped
June 2026
Live at
ditto.ai/the-yearbook
Stack
React · TypeScript · MongoDB
844 launch visitors Growth LLM generation Attribution

What it is

You open a room, send it to your friends, and they answer questions about you. Six scored dimensions come out the other end, and an LLM turns that score profile into an archetype written up as a page you can actually send to people.

It works because being described by your friends is more interesting than describing yourself, and because the only way to see your own results is to get other people to fill it out. The distribution is the mechanic.

Why Ditto built it

Ditto has a lot of users who signed up, drifted, and never came back. Reaching them with another notification doesn't work. They already ignored the last four.

The Yearbook is a different pitch. It's fun on its own, it doesn't require you to be dating anyone, and it lands through a friend rather than through the app. Then the results page offers a reason to come back to Ditto that connects to what you just read about yourself.

The constraint I set

The game had to be worth playing even if you never clicked through to Ditto. Anything less and it is an ad with extra steps, and people can tell within about four seconds.

What I built

The scoring

Six dimensions, scored from friend votes rather than self-report. Every question maps to dimensions with a weight, so a room with a handful of responses still produces a usable profile instead of noise. Those six scores are the entire input to the archetype step.

The archetype generation

An LLM takes the score profile and writes the result. The important design choice was keeping the model downstream of the scoring rather than letting it read raw answers. Scores first means the same profile always produces a consistent archetype, and I can reason about what the model is doing. Handing it the raw votes would have been easier to build and much harder to trust.

The results page as a bridge

This is the part I spent the most time on. The results page has to finish the experience properly, and only then offer the next thing. If the call to action shows up before the payoff, the whole thing reads as bait and the share rate dies with it.

Attribution end to end

I instrumented the full path from the results-page CTA through Ditto onboarding. Without that, "did the Yearbook bring anyone back" is a guess, and a growth surface you can't measure is just a side project the company paid for.

Results

844Visitors at launch
84%Of joiners finished all the questions
47%Of rooms completed fully

84% completion among people who joined a room says the game itself holds up. 47% of rooms finishing is the harder number, since it depends on enough of someone's friends showing up, which I don't control. Together they tell you the drop-off is in getting friends to open the link, not in the experience once they do. That is a much better problem to have and a much easier one to work on next.

← The Sentiment Loop Next: Atria →