From Wordle Sheets to Game Panels: Building /games for Bec's Circle
How a coaching prompt for a non-technical user sparked a five-game web platform, rotating events, and a small revolution in how a group of professionals track daily scores.
It started with a simple question: Bec, my girlfriend, wanted to bring the intellectual fun of Wordle and Connections to her work colleagues - a close-knit group of four to eight people who play competitive intelligence games together. She needed a web-based platform she could coach herself through, without needing technical skills. What followed was a six-month journey from a single calibration game to a fully integrated panel of five games, one of which rotates each week, plus a calendar of limited-run events. (the rotating slot is the bit that keeps it fresh)
Bec's group already had a ritual: sharing Wordle results in a group chat, manually tracking Connections scores on a notepad, occasionally pulling in Redactyl puzzles. The manual overhead - copying scores, wondering who was winning, managing streaks - was the problem she wanted to hand off. (spreadsheets are for work, not fun)
"We'd like to create a web-based game, you're going to work with Bec my girlfriend who is non-technical and coach her through the process. You can ask for Calum if you need specific technical oversight. When you decide to build the application, you can build it onto calumbell.co.uk for now, then we'll get a new DNS for it."
Bec plays games like Redactyl, Wordle, Connections with around 4-8 colleagues at work, it's a close knit group who like to be competitive and are into intelligence based games. To start us off, propose five ideas for games which would be suitable for this group, ideally intellectual in nature, short in duration, offer native multiplayer and track a leaderboard over time.
The coaching prompt
The entire project opened with a single user message on 25 July 2026. It was unassuming in length - about 700 characters - but it carried the entire intent:
We'd like to create a web-based game, you're going to work with Bec my girlfriend who is non-technical and coach her through the process. You can ask for Calum if you need specific technical oversight. When you decide to build the application, you can build it onto calumbell.co.uk for now, then we'll get a new DNS for it. Bec plays games like Redactyl, Wordle, Connections with around 4-8 colleagues at work, it's a close knit group who like to be competitive and are into intelligence based games. To start us off, propose five ideas for games which would be suitable for this group, ideally intellectual in nature, short in duration, offer native multiplayer and track a leaderboard over time.
That message spawned 8+ Claude Code sessions, a Terraform inventory of Azure resources, and a Next.js app that now serves five games to a regular user group. The stack that emerged was deliberately pragmatic: Next.js 14 App Router, React 18, TypeScript, Azure Blob Storage (no database), Terraform-managed infra, GitHub Actions CI/CD with test-then-deploy gates, and a shared-password cookie auth pattern borrowed from the site's existing family-auth module. CI/CD included a GitHub Actions workflow with a test job that must pass before the deploy job could run - protecting production from untested changes. (the gate that saved us more than once)
From one game to five
The first game to ship was Margin - a daily numeric range estimation game. Players set a range they think the answer falls inside; narrower ranges score more, but missing entirely yields zero. Margin launched on 25 July 2026 as the foundation; the coaching prompt's early feedback loops ("less poo coloured", "I love it", worst-first reveal animation) shaped the visual design and reveal mechanics from day one. ("less poo coloured" was the exact phrase - we still laugh about it)
Margin flow: players drag From/To sliders, lock in their answer, the board fills worst-first (lowest score animates in first), the true answer reveals at 4pm London time. A calibration gauge reports hit-rate and warns when ranges are "too safe".
Once Margin was live, the hub was redesigned from a single-game card into a multi-game toy-theatre visual identity. Two more games followed immediately:
- Sidetrack - a Wikipedia race from a start article to a target. Fewest clicks wins. Best played live in the office.
- One Word - one player sets a secret answer and gives exactly one word as the clue. Everyone else gets one guess. The setter scores when some - but not all - of the group guesses correctly. The setter rotates daily.
One Word in action: the current setter's card, the clue word, and the guesses from the group. The setter's score updates as guesses come in.
Three more games, and a rotating slot
Two games joined in the second half of July: Cross Purposes (a generated cryptic clue opened at 8am and revealed at 4pm, fewer attempts scores more) and Scramble (nine shuffled letters, 60 seconds on the clock, longer words score more, the full nine is worth the most). Both opened with the same 8am/4pm cadence as the first three.
The fifth game, Quarry, arrived on 2 August 2026 as a limited-run event: "One week only. Pick one of three companions on Monday and keep it all week, then send it foraging once a day." Quarry was designed as a one-week experience from the start - its until date was baked into the catalog entry, and it retired on schedule after five days. Its slot on the hub is the rotating element: each fortnight a new event (Cache, Ante, Loft, or another run of Quarry) takes the sixth position, while the five permanent games remain in a fixed order.
The hub renders from lib/games/catalog.ts (the single source of truth). Five games are always live; the sixth slot cycles through limited-run events. The day phase (quiet / play / results) is derived from round states, not the clock - a design decision learned from an early Actions outage.
Scorekeeping, streaks, and badges
Every game scores into a single shared season standings table (lib/games/standings.ts). Two rules shape the board:
- The daily bar (55). Everything you score in one day is added up and then held at 55. This means nobody has to play all five games every day to stay level - three strong games reaches the bar.
- The counting days (22 of 30). Only your best 22 playing days count, so your worst 8 are discarded and a missed day costs nothing.
These numbers were modelled against real round distributions (median daily total 57, p75 76) rather than feel. A season total is not the sum of your rounds; the two counting rules sit between the rounds and the board in lib/games/counting.ts. The math works because we made it work.
Derived from the rounds are streaks, 14 badges (including Clean Sweep for playing all five core games in a day), and Ross's Shop - a spendable balance separate from the leaderboard, with a prestige tier and a sink that can't run out of. The shop is where the meta-game lives.
Weekly rotation and events
The "one which rotates each week" the title references is the event slot on the hub. Five games are permanent; a sixth slot rotates every two weeks with a limited-run event. Events have ranged from Quarry (a five-day companion-send experience) to Cache (a fortnight-long build, started 7 September 2026) to Ante (a heads-or-tails stakes event, 31 August - 6 September 2026, weekend included). Each event writes its rounds to Azure Blob Storage in the same shape as the permanent games, so standings, streaks and badges continue to count across boundaries - but events are excluded from Clean Sweep so a limited run can't make the badge unearnable.
Fortnightly event slot cycles through limited-run experiences while the five core games stay fixed. Each event is fully catalogued with from/until dates so it appears automatically on its opening morning.
What the games give back
Beyond the daily ritual of opening a tab at 8am and checking results at 4pm, the section produces a weekly email bulletin (generated by an AI model each Sunday), a /me page that shows each player's closest race and self-duel, and a season archive at /games/seasons that permanently records every finished season's contact sheet. The section also powers Ross's Book - a wagering sink in the shop economy, and a player roster derived from play (alphabetical order, no accounts, just a shared password).
Origin credits
The entire /games section exists because Bec asked for a way to bring Wordle-style fun to her colleagues without the manual overhead. The initial coaching prompt established the mandate: coach a non-technical user through building a web-game platform, deploy to calumbell.co.uk/games, and keep the code cleanly partitioned from the portfolio site. The technical oversight (Azure Terraform, Next.js, GitHub Actions CI/CD with test gates, shared-password auth) was Calum's contribution. The design iterations - steel/graphite palette over "poo coloured" warm brown, worst-first reveal animation, calibration gauge "too safe" verdict - were all Bec's feedback, looped through Claude Code sessions over six months.
The token economics behind the agentic build are covered in Claude + OpenCode: Token Costs, Model Switching, and What a Non-Technical User Built. The local-model hardware benchmarks are in Local Models on Apple Silicon: What the Numbers Actually Look Like.
Current games (August 2026): Margin, Sidetrack, One Word, Cross Purposes, Scramble. Rotating event slot: most recently Quarry (Mon 10 - Fri 14 Aug), next up: Cache (starts 7 Sep 2026).