Pick Six: An NFL prediction game that feels like 1992

Year
2026
Role
Product Builder
Skills
Product Strategy
Game Design
Visual Direction
AI Prototyping
Tools
Claude Code, Vercel, Supabase, GitHub Actions.

Pick Six's goal: replace our Kicktipp pool with a game that feels like ours.

Pick Six, a private NFL prediction game

Every NFL season, two friends and I predict the score of every game. For years we ran it on Kicktipp. For the 2026 season I built our own. Pick Six keeps the Kicktipp rules we already knew and puts them inside something that looks like a 1992 Sega football cartridge. It went live on 7 September, before the season opener, and the three of us have picked every game since.

The real game is private, so I built a public demo alongside it. My two friends are swapped for invented players, Bill and Tony. Every pick and score is generated, and the season is frozen mid-week 4 so you can see finished, live and open weeks at once. Nothing you tap leaves your browser.

Why I built it

Kicktipp does the job, but using it every week was a chore:

- Outdated UI and UX. It looks and feels like a spreadsheet, and it’s boring to open.
- Saving scores is a pain, especially on a phone, which is where we pick.
- It’s built for every sport, so nothing about it is made for the NFL.
- The free version keeps interrupting you with modals and ads.

I wanted a game made for exactly us: three players, one league, a pre-season bonus round, and something we’d actually look forward to opening every week. It was also a chance to see how far a designer can take a real product with AI as the engineering partner.

Users

- Me + two friends. We’re competitive, we’re mostly on our phones, and we already know the Kicktipp rules.
- Three real people also means three real ways to cheat, forget, or mistype a score, so the product has to handle all three.

What success looks like

- We play the whole season on it, with no fallback to Kicktipp.
- Picking a full week of games takes a couple of minutes on a phone.
- Scores come in on their own during games, and the table is always right.
- It runs by itself all season. No babysitting from me.

Constraints

- A real published web app, not a prototype link. It installs to the home screen like a native app.
- Free-tier infrastructure only.
- Fair play: each game locks at its own kickoff, and nobody sees anyone else’s pick until then.
- Live data from public sources (ESPN) for fixtures, betting lines and scores.

Pick Six season screen: a grid of 18 week tiles plus a bonus tile, color-coded by played, in play, and open, with yellow flags counting missing picks

Season: every week at a glance, with flags for missing picks.

Pick Six week screen with open games, pixel-art team helmets, score inputs, and a row showing which players have picked

Week: pick scores, see who's already picked.

Pick Six Quick Play screen showing one game at a time with a progress bar, the betting line, and Previous, Next and save buttons

Quick Play: one game at a time, thumb-first.

Pick Six ranking screen with the season table and a list of weekly winners

Ranking: season table and week winners.

Visual style → app logic → tech stack. In that order.

My approach (how I built it)

I set the working order before any code existed, and kept to it:
- Visual style first. I built a working prototype with the real 2026 schedule and simulated results. The whole look was judged in the browser, not in Figma.
- App logic second. The Week screen’s states, Quick Play, the bonus round and the playoffs were all designed and tested in that prototype before there was a backend. That’s how we caught a pick being credited to the wrong player, a bug that would have been much harder to find once real data was involved.
- Tech stack last. Only then did we pick the stack and ship it.
- AI as the engineering partner: I made the product and design calls, Claude Code did most of the building. Explore, propose, then I choose.

Core flows

1. Season: every week in a grid, color-coded as played, in play or open, with a flag for missing picks.
2. Week: enter a score for each game. Each game locks at its own kickoff, then live and final results come in.
3. Quick Play: one game at a time, built for filling in a whole week from your phone.
4. Bonus round: 13 pre-season calls (division winners, conference finalists, Super Bowl), locked at the opener.
5. Ranking: season table, week winners, and an archive of past seasons.

Design principles

- Arcade shell, not arcade mechanics: no XP, combos or power-ups. Nothing in the game layer can change who wins the league.
- Football’s words over game words: it’s a Week, never a “level”. High Scores became Ranking.
- The smaller, more charming option wins. A full announcer commentary feature became two sampled moments.
- 8-bit discipline: no border radius, no gradients, no blurred shadows. Hard offset shadows, and shading done with dithering.
- Measure, don’t guess. Sprites, music and the announcer voice were compared side by side in small “lab” pages until they looked and sounded right.

Three real players surfaced what simulated data never could.

What real use taught me

- Hide picks until kickoff, per game. In the prototype everyone’s picks were visible, which was fine with simulated data. With three real people, a pick you can see before kickoff is a pick you can copy. Sunday’s 1pm games open up at 1pm, and the 4pm games stay hidden until 4pm.
- But show that someone has picked. A line sits where their score will appear, so you know who you’re still waiting on without seeing what they chose.
- The rules changed mid-season. After week 1 we moved from flat 4/3/0 scoring to 4/3/2/0, so picking the right winner earns something. The opener was re-scored the same day.
- Reminders became a calendar, not push notifications. Web push needs a permission prompt and doesn’t work everywhere on iPhone. You subscribe to a calendar feed instead, and it reminds you before the first kickoff and before the Sunday games.

What I cut

- “CPU Pick”, which auto-filled picks from the betting line. Not needed, and it undercut the point of the game.
- 3-letter arcade initials and color-coded player dots. Names alone read better.
- CRT scanlines, a perspective stadium, and synthesized crowd noise. Each one looked or sounded worse than the simpler version.

Pick Six week screen after games have finished, showing the real score, each player's pick, and points earned

After kickoff: real scores, everyone's picks, and points earned.

View Demo

other experiments

Debeo

Expense tracking, minus the spreadsheet pain

more