Personal Project 2025 – Present Claude API · Supabase · Vanilla JS

Mic Check
From Idea to Game

How I designed and built a real-time multiplayer music battle game using the Claude API and Supabase — as a PM who builds, not just plans.

3–8

players per room

2

game modes shipped

0

app downloads required

Solo

built end-to-end by me

Play Mic Check ↗

Live in browser — no download required

Why I built this

I wanted a side project that answered a real question: can AI enhance a social experience without becoming the point?

Party games are everywhere. Music apps are everywhere. But I kept noticing that the best moments at social gatherings weren't the games with the most rules — they were the ones with the most room for personality. The spontaneous song someone throws on. The group vote that goes sideways.

I also noticed a separate, quieter frustration: sharing music with friends is weirdly passive. You send a link, they maybe listen, the conversation dies. There's no shared moment, no reaction, no stakes. The song just disappears into a chat thread.

I wanted to bottle both things. A game where the prompt sets the scene, each player brings their own song, and the room decides who read it best — and in the process, everyone walks away having actually heard something new. Simple loop. High social stakes. No instructions needed.

What I wanted to prove

  • I can ship a real, playable product solo
  • AI can be invisible infrastructure, not the feature
  • Real-time multiplayer is achievable without a backend team
  • No-download browser games can feel as good as apps

What existing tools got wrong

  • Jackbox: great games, locked behind paywall and TV setup
  • Spotify group sessions: passive listening, not a game
  • Most trivia apps: music knowledge, not music taste
  • Chat / DMs: sharing a song is passive — no reaction, no shared moment, no stakes

The specific problem I was solving

Problem 1 — The party game gap

Groups of friends want a shared activity that's low-barrier to join, naturally competitive, and generates actual conversation — but most party game options require equipment, downloads, or learning curves that kill the vibe before the game starts.

Problem 2 — Music sharing has no moment

People constantly want to share music with their friends, but every current path is passive. Sending a link in a chat means no shared reaction, no stakes, and no guarantee the other person even presses play. There's no social ritual around introducing someone to a song you love — Mic Check creates one.

3 sec

target time from QR scan to in the room

0

accounts or sign-ups required to play

Any

device — phone, tablet, or laptop via browser

Who plays Mic Check

The Host

Makes things happen

Sets up the game, pulls up the QR code, keeps energy high. Most outgoing person in the group. Wants the game to start fast and look impressive. Gets embarrassed if setup is clunky.

Needs

→ Room creation in under 30 seconds

→ Shareable join link or QR code

→ Control over game mode and pace

The Competitor

Here to win

Thinks strategically about what songs will land. Reads the room before submitting. Checks the scoreboard after every round. Gets invested fast and wants rounds to feel fair.

Needs

→ Clear, live score tracking

→ Transparent voting results

→ Fast round pacing

The Casual

Just here for the vibes

Doesn't know every song but wants to participate. Has no interest in reading instructions. Just wants to jump in and not feel stupid. Their experience determines whether the game is inclusive or cliquey.

Needs

→ Self-explanatory UI with no tutorial

→ Prompts that don't require deep music knowledge

→ An easy first win

The calls that shaped the product

Decision: Two game modes vs. one

Democratic voting (everyone votes) vs. rotating judge (one player decides). I kept both after playtesting showed they feel completely different socially. Democratic voting creates a "the crowd decides" energy. The rotating judge creates accountability — and drama.

Tradeoff accepted: More complexity in the host UI. Worth it for the social variety.

Decision: Where AI lives in the loop

Claude API handles prompt generation, song evaluation context, and end-of-round summaries. The AI never plays against humans — it's infrastructure that makes the human interactions better.

Why this matters: If players feel like they're competing against an algorithm, the social dynamic breaks.

Decision: The game as a music sharing vehicle

Mic Check had to double as a friendlier way to share music. The prompt forces context — "best song for a road trip at midnight" — so when someone submits a track, it lands with meaning. Players don't just hear a song; they hear why someone chose it. That's the moment that makes sharing feel alive.

Design implication: Every round needed a reveal moment where songs are shown before voting — not hidden — so players could absorb the picks and the conversation could start naturally.

Decision: No app, no accounts

If joining requires a download or sign-up, the game dies at the table. QR code or room code → phone browser → you're in. Supabase real-time channels made this possible without server infrastructure I'd need to maintain.

Tradeoff accepted: No persistent user profiles or history. Fine — the game is ephemeral by design.

How I'd measure success

North Star Metric

Session completion rate

% of games that start and play to the end. A completed game = the experience delivered. A dropped game = something broke the social loop.

Leading Indicators

  • Time from room creation to first round start
  • % of invited players who actually join
  • Song submission rate per round
  • Vote completion per round

Lagging Indicators

  • Session completion rate
  • Return rate (same group plays again)
  • Rounds per session (depth of engagement)
  • Organic shares via QR screenshots

Counter-Metrics

  • Mid-game drops (someone leaves early)
  • AI prompt rejection rate
  • Sync errors (real-time failures)
  • Load time on mobile (>3s = bad sign)

The core game loop

Every screen had to be self-explanatory — no tutorials, no onboarding.

Screen 1 — Game Lobby

mic-check.app/room/JAZZ-42
MIC CHECK
Waiting for players...
Room Code
JAZZ-42
Scan to join
mic-check.app
Game Mode
Democratic Vote
Rotating Judge
Rounds
5
+
Players
4 / 8
BA
Brandon
Host
Host
TY
Tyler
MA
Marisol
KE
Kenji
+
Waiting for player...
Start Game →

Screen 2 — Submit Your Song

Round 2 of 5 · JAZZ-42
Round 2 of 5
0:42
The Prompt
"Best song to play when you're stuck in traffic on the 405 at 5pm"
Search for a song...
Player Status
BA
Brandon (you)
Choosing...
TY
Tyler
Submitted
MA
Marisol
Submitted
KE
Kenji
Thinking...
Submit Song

Screen 3 — Voting

Round 2 — Vote! · JAZZ-42
Round 2 of 5 — Vote for your favorite
0:24
Prompt:
"Best song stuck in traffic on the 405 at 5pm"
Traffic
Snoh Aalegra
Preview
Vote ▲
Mr. Brightside
The Killers
Preview
Vote ▲
Slow Ride
Foghat
Preview
Vote ▲
Alright
Kendrick Lamar · Your pick
Can't self-vote

How I shipped it

1

Phase 1 — Playable Core Loop

Shipped

Prompts → song submissions → voting → scores. Hardcoded prompts, no AI yet. Got this in front of real people within two weeks of starting.

Key learning: The timer on submissions created urgency that made the game feel alive. Without it, players overthought every pick.

2

Phase 2 — AI Prompts + Two Game Modes

Shipped

Integrated Claude API for dynamic prompt generation and end-of-round commentary. Added rotating judge mode. Prompts went from predictable to genuinely surprising.

Key learning: Judge mode created dramatically different social dynamics. When one person holds all the power, the lobbying starts immediately.

3

Phase 3 — Shareable Results & Social Hooks

Roadmap

End-of-game summary card players can share. "Most dramatic moment" highlight generated by Claude. Replay link so a group can run it back.

Hypothesis: Shareable end-cards will be the biggest organic growth lever.

What this taught me

What worked

  • Shipping fast and playing it with real people immediately — you learn things about social dynamics that no solo testing reveals
  • Supabase real-time as the backbone — removed the need for custom backend entirely
  • The "AI as invisible infrastructure" principle — players comment on the game, not the AI

What I'd change

  • Test with strangers earlier, not just friends. Friends fill in gaps with goodwill that real users won't.
  • The song search UX needed more iterations — it was the highest-friction step and I underweighted it.
  • Building alone is clarifying but dangerous — I made every product call without a second opinion.

The PM lesson: Consumer social products live and die by group chemistry, not feature completeness. A game that's 70% done but makes five people laugh for an hour is infinitely more valuable than a polished product nobody wants to play again.

Next case study

The AI OS for Product Managers