Inspiration

During this year's World Cup I got the idea to build a football quiz app. I'm a big football fan and saw the enthusiasm in my friend group. I saw the "immaculate grid" format on YouTube and figured I could build a more fun version for mobile.
I'm the target user, so I kept asking myself what would make me play this every day and actually want to share it with my friends.

What it does

A free daily 3x3 grid, shared by everyone. Each row and column has a criterion (club, nationality, league, achievement, career stat, era), and you fill each of the 9 cells with a player who fits both, no repeats. Solve it perfectly and you climb the global leaderboard.

You can also add friends, by username or by sending them a link, and get a private leaderboard of just your friends.

How we built it

Started with data collection. Most football APIs are either heavily rate-limited or expensive. Found BSD (Bzzoiro Sports Data), which has a generous free tier, and used it to quickly build a test dataset to play around with grid generation.

I built a dataset of +22.000 players of the Top 5 Leagues and a pipeline that syncs new transfers or players. So the data stays up to date. This pipeline is built on Cloudflare workers using the cron scheduling functionality

Then just tweaked the grid generation until it felt right, not too hard to scare people off, not too easy to be boring.

The app itself is built with Expo Router. Most of the code was written with AI, but I wrote some of the Mobile App UI from scratch to get the level of polish I wanted. On top of that I wired up RevenueCat, my first time working with virtual currency, to let people buy coins and spend them on things like hints & "undo your last move".

Friends came last, because it was the piece that needed accounts, so I added sign-in with google & apple.

For growth I built a Remotion pipeline that turns the live daily grid into TikTok videos with voiceover, and a Data Hub on playkickgrid.com with 392 "who played for X and Y" pages, so people searching for an answer to an immaculate grid land on Kickgrid.

Challenges we ran into

The data pipeline was by far the hardest part. Team and league names often came back as bare IDs. To filter out unknown players, I used transfer fees, but a flat cutoff doesn't work across 30 years of fee inflation, so the thresholds had to be tiered by era. Search was its own fight: plain text ranking put "Ronaldo" above "Cristiano Ronaldo" simply because it's shorter, so I added a fame score to break ties properly. None of this is visible to a player, but it's exactly the kind of detail that makes the game feel just right.

Accomplishments that we're proud of

  • Built a share experience that turns your finished grid into a custom image of how you did, ready to share with friends.
  • Built a global Leaderboard that motivates players to come back and solve the daily Kickgrid.
  • Built friends and invitations: search friends by username or just share a link.
  • Built a data pipeline that collects and continuously freshens all the football data on its own.
  • Got the grid generator to a point where it reliably feels fair.
  • Got search to a point where it actually finds who you meant.
  • Reached around 250 players since launch and 2 paying Pro subscribers.
  • Had a TikTok video go viral with 150k views, 175k views in total on the account.

What we learned

  • Building solo across data, backend, and mobile forced me to prioritize hard: get to a minimal version that's fun and that I'd actually want to play every day, rather than polishing everything at once.
  • Learned how to use SQLite's FTS5 full-text search index to make player search fast and accurate.
  • Learned how to design a virtual currency economy: how much should perks cost without breaking the fairness of the daily grid.

What's next for Kickgrid

I want to build Kickgrid into THE football Quiz for fans. Next up: keep posting on TikTok daily and double down on the formats that went viral, grow the Data Hub for search traffic, and bring Kickgrid to Android (already in review). My hope is that the strong social loop will result in quite a bit of word of mouth marketing between friends.

Built With

Share this project:

Updates

Submission history