Five Blitz Pack screens: packs ripped, a live duel, a sealed pack being torn open, a power card being played, and a settled week won 3–2

Labs Blitz Pack

Product

Blitz Pack, an NFL card game

Platforms

iOS and Android

Stack

React Native, TypeScript, Supabase

Time

100 days, Jul 5 – Oct 13, 2026

Shipped

627 merged pull requests

Team

Six engineers, with product, design and delivery


Try it

Every Tuesday starts with a rip. Go ahead.

Drag the seal across the pack, or tap Rip it. A Hall of Fame pack holds four player cards and one power card, and every Tuesday each player rips three packs: twenty player cards and four power cards for the week. The players here come from one real week-four matchup.

The Hall of Fame pack, sealed

First page of the original Blitz Pack one-pager, dated July 6, 2026
The brief the build started from.

The idea · July 6

Fantasy football's format hasn't changed in thirty years. We asked what a card game would do with the same data.

Blitz Pack started as a two-page brief from inside the shop: a trading card game first, fed by fantasy data. Every card is a real NFL player, and its power each week is that player's real score.

The brief went after the parts of fantasy that feel like work. No draft, just a sealed pack. No waiver wire: pick a position, rip, and live with what comes out. Power cards played live during the games, so Sunday is something you play rather than something you check.

It was a good brief. Nobody knew yet whether it was a good game, and the only way to find out was to build it and play it.

Version one

Six weeks from a brief to a game the shop could play.

A small team built it with Claude and a set of agents from the first day: the backend, one app for iOS and Android, and the design system the agents built from.

  1. Week 1

    Jul 5–16

    A spec before the first screen

    The first commit already had Claude as a co-author, and it came with a written spec and a plan. The agents built from specs like it all summer, one per feature, 54 of them in July alone. The app was running on a test server by July 16.

    First page of the original How It Works guide
  2. Week 3

    Jul 17–22

    A design system the agents could read

    All 42 components in Figma were linked to their code, so an agent building a screen used the exact colours, type and spacing instead of guessing. When the team moved to a new component library on July 22, every screen was rebuilt on it in a single day.

    Early Blitz Pack screens built from the linked components, before version one: a deck list, a field of eight and a live duel
  3. Week 7

    Aug 18–20

    Internal beta, on the day it was planned

    The beta opened on schedule on August 18. Two days later the real card art arrived: every card a real NFL player, scored each week on what that player actually did.

    Version one in Figma: the weekly pack rip, a live duel with power cards applied, and the club feed with the week's results
  4. Week 10

    Sep 8–9

    Production, and the whole shop playing

    Version one reached production on September 8. The next day the whole shop was playing it against each other, with scores updating during the real games.

    Blitz Pack today in Figma: a duel before lock with both decks sealed, the same duel live with scores, and a power card being played on the tight-end duel

A month of play

Version one worked. It also played like the fantasy apps it set out to replace.

By mid-September the hard part was done: a working game on both platforms, real NFL data, and a production environment running itself every week. And the people playing it every day kept arriving at the same habit. Set the lineup on Wednesday, check the score on Monday.

A fixed date was close, and the usual answer is to ship what works and improve it later. The team decided a card game that plays like fantasy football was not the product, and that the build was fast enough to change the game instead of polishing it.

The turn

Two days to rewrite the rules.

Six decisions came out of those two days. Each one fixed a problem the first version made visible, and each one cost something.

01Fresh cards every week

A season-long deck made early luck permanent, and a deck already set gave you nothing to do midweek.

Was
16 player cards and 4 power cards, kept all season.
Now
Player cards last one week. Everyone rips three new packs every Tuesday.
Cost
No collection builds over a season. With nothing kept, trading had no reason to exist, so it went too.
02Five duels, not a points total

A combined score is fantasy football's scoreboard, and it made the cards interchangeable.

Was
A field of eight, scored as one points total. Ties allowed.
Now
Each position is a head-to-head duel. Win three of five.
Cost
Ties become common. A tied duel goes to a coin flip derived from a secret before kickoff, so it is fixed in advance and identical on any re-run.
03Power cards played live

Cards committed before Thursday meant the week was decided before a ball was kicked.

Was
About 45 designs, committed before Thursday's lock and resolved at settle.
Now
Two plays a week, each inside its own window, open until the week's last game ends.
Cost
A late play can be made knowing exactly what a player scored. That is the drama, and allowing only two plays is the price.
04A secret week

With lineups visible, the best move was to copy or counter what you could see.

Was
Your opponent's cards were in plain view all week.
Now
Nothing an opponent holds or plays is readable until the first kickoff, enforced by the database rather than the app.
Cost
There is nothing to aim at before lock, so opponent cards now target a duel instead of a player.
05Whole numbers

Decimal PPR scores read like a spreadsheet, not a card game.

Was
Full PPR, to one decimal: a week won 128.4 to 119.1.
Now
Each stat scores on its own, in whole points. Receptions score nothing.
Cost
Small gains disappear: nine rushing yards and nine receiving yards add up to zero.
06Rarity stops adding points

Rarity was doing two jobs at once, rating a player and making a card scarce.

Was
Rarity printed on the card face, and it added points.
Now
Rarity only weights the pack odds, ranked within each position on points per game.
Cost
A rare card is a better pull, not a bonus. The moment lives in the rip, not the score.

Nine days

Nine days from new rules to production.

The people decided what to build and wrote it down. Claude and the agents built it. Everyone played each build as it landed.

  1. Day 0

    Sep 22

    The rules, rewritten

    Four people took two days to rewrite the game: weekly cards, five duels instead of a points total, power cards played live during the games. The plan gave the rebuild until October 16 to be working on stage.

    The Proposed Game Changes page on the project wiki, created September 22: the game in one paragraph and a table of what changes
  2. Day 2

    Sep 24

    Tickets an agent could finish alone

    The front end was split into fourteen tickets, each one saying what done looks like and which checks it had to pass, so an agent could finish it without stopping to ask. The first one deleted the old game within the hour: trading, the binder, the card index, fifteen screens.

    A front-end ticket opened September 24: remove the features cut from the new game, with the behaviour it must end up with
  3. Day 3

    Sep 25–30

    The front end ran ahead of the backend

    The app was rebuilt in two days against stand-in data, so nobody waited on anybody. The real rules landed underneath it by September 30: whole-number scoring, five duels, live power cards, a hidden week. Lint, type and test checks ran on every push, and across the project an automated reviewer read 207 of the 627 pull requests.

    Version two's live duel screen: position duels with both players' cards and whole-number scores
  4. Day 9

    Oct 1

    Production, two weeks early

    On October 1 production was rebuilt for the new game, iOS and Android together, with the animated pack rip landing the same day. The deadline was still two weeks away, and the shop spent them playing it.

    Version two's pack screen: this week's hand and two sealed Blitz Packs

Then and now

The same screen, before and after the rebuild.

Drag the line. Version one's live duel as designed in August, scored to one decimal; version two's in October: five duels, real card art, whole numbers.

Version two's live duel screen: five position duels with real card art and whole-number scoresVersion one's live duel screen as designed: a list of players with decimal scoresVersion two's live duel screenVersion one's live duel screen as designedVersion oneVersion two

Power cards

You have two plays. Win the week.

A real week-four matchup from production: down one duel to three, with one tied. In the game you play power cards while the games are on, and each one is aimed at a duel. Pick a card, pick a duel, and try to turn it around.

YouOpponent

Down 1–3, 1 tied. Two plays left.

  1. Tyler Shough cardTyler Shough17QB25Joe BurrowJoe Burrow card
  2. Javonte Williams cardJavonte Williams26RB0Jordan MasonJordan Mason card
  3. Nico Collins cardNico Collins23WR23Nico CollinsNico Collins card
  4. Noah Fant0TE5Juwan JohnsonJuwan Johnson card
  5. Brandon Aubrey cardBrandon Aubrey10K14Jake BatesJake Bates card

TE · Art withheld: our audit flagged this card for the wrong team.

Pick a card from your hand.

100 days

Two stories ran at once: what the game was, and how we built it.

Each bar is a week of commits. Pick an era to see what changed in the game and in the way the work got done.

The turn

Peak: 180

Commits per week, Jul 5 – Oct 13, 2026

01 · Jul 5 – 10

A brief and a schema

The game

The brief became a first rule set: a sealed starter pack, an eight-card field, one power card a week, and a lock on Thursday.

How we built it

The first commit was a database schema, a project guide written for agents, and a design spec, co-authored with Claude. Licensing questions and the first power-card ideas were researched with Claude too, then argued over by people.

01/07

By the numbers

What 100 days produced.

Commits

1,234

Merged pull requests

627

Commits co-authored by Claude

418

Of 879 non-merge commits. A floor: squashed merges drop the credit.

Unit tests

2,400+

Plus 38 end-to-end harnesses against a real database.

Decision to production

9 days

From the rules rewrite to version two live.

Platforms

2

iOS and Android, shipped together.


Contact

Want to play it?