Contact
All case studies

2025

Oh It's That Guy

A serverless quiz game about character actors. You know the face; can you name the movie?

  • React Router
  • AWS Lambda
  • MongoDB
  • Terraform
  • TMDB
Role
Solo builder
Team
Me, and later a few agents
Year
2025

the challenge

Every film has them: the actor you've seen in twenty movies and could never name. Oh It's That Guy turns that feeling into a game. I built it alone, in the evenings, but that wasn't a reason to cut corners. It had to follow four rules:

how it plays

The game is built for a phone held in one hand, in the few seconds you'd otherwise spend scrolling. In Standard mode you get five actors and thirty seconds in total. For each face you pick the right movie out of three. A wrong answer costs three seconds, and the score rewards both accuracy and speed. Director's Cut stretches it to ten rounds and mixes the questions: four actor-to-movie, four movie-to-actor and two true-or-false.

A wrong pick turns red, the right one turns green, and you move on. The dark cinema backdrop and the yellow speech bubble give it personality without slowing anything down.

Oh It's That Guy app screen 1Oh It's That Guy app screen 2Oh It's That Guy app screen 3Oh It's That Guy app screen 4Oh It's That Guy app screen 5Oh It's That Guy app screen 6

the architecture

Nothing is generated while someone plays.

TypeScript pipelines pull actors, movies and popularity from the TMDB API, build complete game sets and store them in MongoDB Atlas. At play time, three Lambda functions read those game sets and a fourth stores play events. A round costs one small query, so the game stays fast and the bill stays close to zero.

The client is a React Router single-page app, installable as a PWA, on S3 behind CloudFront. Every AWS resource lives in Terraform: the bucket and distribution with origin access control, the certificate and DNS, API Gateway, the functions and their container registry. GitHub Actions ships the client on every push to main.

a week to production

  1. 12 Sep 2025. A Turborepo monorepo with a Vite client.
  2. 16 Sep. The first playable game UI.
  3. 18 Sep. Fuzzy matching on answers. The first version had typed answers, so close enough had to count.
  4. 19 Sep. CI/CD and AWS: GitHub Actions, S3 and CloudFront, all in Terraform.
  5. 20 Sep. GA4 events, a mobile-first layout and an installable app.
  6. 12 to 13 Oct. Pre-generated game sets, a new endpoint to serve them and two game modes.

a year of play

Google Analytics has tracked the game since its launch on 20 September 2025. Most players arrived in the first two weeks, when it got shared around, and the ones who liked it kept going: 210 players hit "Play again" 596 times.

1,115

players since launch

Audience

1,757

games started

Rounds played

64%

of visitors started a game

Conversion

250

players on launch day

Peak

the audit

Nobody had ever reviewed this codebase. In May 2026 I came back to it with coding agents. The first change hardened the API: a CloudFront function now adds the API key at the edge, so it never ships in the browser bundle, and every Lambda rejects requests without it.

Then I asked for an audit. The agents wrote four fix plans, for the backend, the client, the infrastructure and the pipelines, plus a UX evaluation. Every issue came with the file, the problem and a proposed fix, ranked by priority. Some of what they found:

Those plans are now the game's backlog, already sorted by what to fix first.

the results

Building alone is fast because nobody slows you down, and that's exactly the problem: nobody checks your work either. This project is where my workflow changed. I wrote the first version by hand in a week, and agents reviewed it like a careful teammate would, finding real bugs I had shipped. Now that review step is part of everything I build, from day one instead of eight months later.

7

days from first commit to production

Shipping pace

97

commits, almost all by hand

Built alone

5

audit reports written by agents

Reviewed later

more projects

building something like this? let's talk