Case study

VinylPeek: a daily music puzzle game and SaaS platform

A daily puzzle game with an entire business behind it — five modes off one engine, real-time leaderboards, subscription billing and its own organic growth engine.

Client
Ai Up — our own product
Sector
Consumer web and games
What we built
VinylPeek
Status
Live at vinylpeek.com
  • 2,689records in the catalogue, each with its own indexable page
  • 5game modes running off a single engine
  • 64pieces of cardboard between you and the answer

The short version

Overview

Most people meet a daily puzzle game and assume the game is the work. It isn’t. The board took a fraction of the time; the rest went on everything a game needs in order to be a business — accounts, fair scoring you can’t fake, leaderboards that hold up, a subscription that bills reliably, and some way of being found at all.

VinylPeek hides an album cover behind 64 cardboard tiles. Peel a row, a column or a single tile, and name the record before you’ve seen too much. There are five ways to play, a catalogue of 2,689 records, and a paid tier for people who don’t want to stop after one.

We built it end to end and put it live. It’s the clearest answer we have to “could you build our product?”

The Challenge

Wordle proved people will come back daily for a single small puzzle. Music was sitting there unclaimed — and album art turns out to be almost perfectly suited to the format.

A daily puzzle works because of a particular kind of restraint: one puzzle, the same one for everybody, gone at midnight. No feed, no grinding, no way to binge it. That shape is well proven now, and there are daily games for words, films, geography and football.

Album covers are a better fit for it than most. A sleeve is designed to be recognised across a shop floor, which means it’s also recognisable from a fragment — a corner of a colour field, three letters of a typeface, part of a face. Some of the most famous covers ever made have no text on them at all. That gives you a puzzle with a natural difficulty curve built into the source material, before you’ve designed anything.

The game was the easy part

The interesting problems were all around it.

Fairness. If everyone gets the same puzzle on the same day, the scoring has to be transparent and it has to be difficult to cheat. A leaderboard that anyone can post a number to is worse than no leaderboard, because it quietly tells your best players not to bother.

A catalogue, legitimately. A guessing game needs thousands of records with artwork, tagged by genre and decade well enough to build modes out of, and it needs to be artwork we’re entitled to use. That rules out scraping, which rules out the quickest route.

Difficulty that feels fair. Obscure records aren’t hard, they’re annoying — there’s no satisfaction in failing to name something you’ve never seen. The catalogue has to lean recognisable while still being wide enough that regulars don’t exhaust it.

Money, without spoiling it. The daily has to stay free and unlimited, because that’s the habit everything else depends on. So the paid tier has to sell something a keen player genuinely wants — more modes, no limits, the back catalogue — rather than taking away something they already had.

And an audience, from nothing. No install base, no mailing list, no budget to buy attention. A daily game with no players is just a website. Distribution couldn’t be an afterthought bolted on at launch; it had to be designed into the product from the start, which is why a large part of what got built isn’t the game at all.

The Method

One game engine, five modes, an open-data catalogue and a growth layer with more pages in it than the game has screens.

The mechanic, and the one decision that makes it a game

The board is an 8×8 grid — 64 tiles over a cover. You can peel a whole row, a whole column, or one single tile.

That last option is what turns it from a reveal animation into a decision. A single tile costs an eighth of what a row costs, and scoring is simply (64 − tiles peeked) × 100 plus a time bonus. So the question stops being “how much can I uncover” and becomes “where is the information likely to be” — and because titles usually sit in the middle or along an edge, people develop genuinely different strategies. Some go hunting for text, some read the artwork from the corners.

The formula is published on the how-to-play page on purpose. A scoring system players can reason about is one they’ll try to beat.

Five modes, one engine

Daily, Genre, Decade, Endless and Speedrun differ in ways that sound structural — three guesses or five, a five-minute clock or thirty seconds, ten rounds or lives shared across a run — but none of them are separate games. They’re configuration over the same engine: guess count, timer, round count, lives, and which slice of the catalogue to draw from.

The payoff is the same one we got from templating Guardian Care’s forms in a completely different industry. A new mode is a config entry and a tuning pass, not a second codebase to keep in step.

The catalogue

Records and artwork come from MusicBrainz and the Cover Art Archive — open, properly licensed, and credited in the footer. 2,689 records, tagged by genre, decade and sub-genre, which is what makes Genre and Decade modes fall out of the same data rather than needing their own.

Scores you can’t simply assert

Firebase does the platform work: Auth for accounts, Cloud Firestore for game and leaderboard state with real-time listeners, Cloud Functions behind /api/ for scoring and leaderboard reads, all served from Firebase Hosting on a Fastly edge.

Two details that matter more than the brand names:

Every leaderboard entry stores its components — tiles revealed, guesses used, seconds taken, stars earned — and they’re validated server-side. A score has to be consistent with a game that was actually played.

The leaderboard API is cached at the edge with a short browser TTL and a longer shared one, plus stale-while-revalidate. Thousands of people loading the same daily leaderboard hit cache, not the database. It’s a small piece of configuration that decides whether a good day is a celebration or an invoice.

Stripe handles the three subscription tiers; card details never reach us.

Playable without a mouse, and without an account

You get a generated handle and can play the daily immediately — asking someone to register before they’ve seen whether they like it is how you lose a daily habit before it forms. The prompt to sign in arrives after you’ve won, where it has something real to offer: your streak currently lives in this browser only, and an account carries it to your other devices. Same request, made at the point where the answer is obviously yes.

And every one of those 64 tiles is a real button with a real label — “Peel the tile at row 3, column 5” — as are the row and column controls. The whole game is keyboard operable and legible to a screen reader. Almost no visual puzzle game bothers. It cost very little to do properly at the point where the board was being built, and it would have been an expensive retrofit later.

The part that isn’t the game

2,689 album pages, one per record: artist, year, genre and sub-genre tags, a description credited to Wikipedia, six related covers, and two routes into the game. Built from the catalogue data, so the whole layer exists as a consequence of having the catalogue rather than as a separate job of work.

On top of that sits the blog, and this is the part we’d point at hardest: the articles are produced by an automated pipeline. Nobody sits down to write them. Sleeve design, genre round-ups, decade retrospectives, the stories behind individual covers — commissioned, drafted and published without a writing rota, a freelancer invoice or a content calendar that quietly slips.

That’s the same capability we sell to clients, pointed at our own product, which is the most honest way to demonstrate it. A one-person operation cannot hand-write its way to a content moat. It can build the machine that does, once.

The result is 2,736 indexable pages against a handful of app screens. Someone searching for what the Dark Side of the Moon prism means arrives, gets a real answer, and is offered a puzzle. For a product with no advertising budget that isn’t a nice extra on top of the strategy — it is the strategy.

Built with

  • ReactVite SPA
  • React Router
  • Cloud FirestoreReal-time
  • Firebase AuthGuest and account
  • Cloud FunctionsScoring and API
  • Firebase HostingFastly edge
  • StripeSubscriptions
  • MusicBrainz + Cover Art ArchiveCatalogue

The Solution

Live at vinylpeek.com — a complete consumer product with a game at the front and a business behind it.

A new album every day at midnight UTC, free and unlimited, three guesses and five minutes. Genre and Decade give free players a round of each daily. Endless and Speedrun, the full daily archive and an ad-free board sit behind a subscription at £0.99 a month, £9.99 a year, or £24.99 once — which also gets you a founder badge on every leaderboard you appear on.

Nothing about that list is a prototype. Accounts work, scores are checked, leaderboards update live, the billing bills, and the whole thing is served from a CDN edge.

What it demonstrates

Taken apart, VinylPeek is the set of pieces most product ideas need:

  • a real-time multi-user application with state that has to stay consistent
  • authentication that doesn’t get in the way of a first visit
  • server-side validation of something people have an incentive to cheat
  • recurring subscription billing across three plan shapes
  • a programmatic content layer built from a structured dataset, and an automated pipeline writing and publishing the editorial on top of it
  • accessibility taken seriously in a heavily visual interface
  • and caching decided deliberately, because at consumer scale the difference between cached and uncached is the difference between a business and a bill

Where it’s actually up to

It’s early, and we’d rather say so than dress it up. VinylPeek launched recently, the leaderboards are still small, and the organic pages are in that stretch where they’ve been built and indexed but haven’t yet compounded. We’ll happily show you the numbers as they move.

What isn’t early is the platform underneath, which is the part that would take a client months to reach.

Why we’re showing you this one

Because “we build SaaS platforms” is the easiest sentence in the world to put on a website, and this is us taking our own risk to prove it — our own product, our own money, live on the internet where anyone can go and poke it.

If you’ve got a product idea and you want to know what “we’ll build it” actually looks like, it looks like this. Go and play today’s puzzle, then come and tell us what you’d want building.

What it delivers

  • Five modes — daily, genre, decade, endless and speedrun — driven by configuration over one shared game engine, so a new mode is a config change rather than a rewrite.
  • Scores validated and stored server-side with their components, so a leaderboard position has to be earned rather than posted.
  • Leaderboards cached at the edge, so a good day for traffic doesn't become a database bill.
  • A three-tier subscription live through Stripe, with the app never touching card details.
  • 2,689 album pages plus an automated article pipeline, together doing the job a marketing budget and a full-time writer would otherwise do.
  • Fully keyboard and screen-reader playable — every tile is a real labelled button, which almost no visual puzzle game bothers with.

A look at it

Five modes, one engine. Two of them sit behind the subscription.
Mid-peel. Every tile you take costs you 100 points, so where you look is the whole game.
Solved. Score is tiles left, plus whatever's left on the clock.
The blog. Every word of it is produced by an automated pipeline — nobody sits down to write these.
Three tiers through Stripe. The lifetime plan carries a founder badge.
One of 2,689 album pages — the part that brings people in from search.

Get in touch

Come and have a natter

Whichever suits you best — we're not fussy.

Or email us straight off: eyup@ai-up.co.uk