back to work

case study

Yapword

A daily word game where the character remembers how you played.

visit siteyapword.com
Yapword screenshot

01 the problem

A funny system prompt can produce a good line once. A consumer character has to remain recognizable across guesses, hints, difficulty modes, wins, losses, fallbacks, model changes, and thousands of repeated interactions — without being allowed to rewrite game truth.

02 the solution

Built a React and TypeScript game in which deterministic code owns the puzzle, score, and limits while Gemini produces bounded character behavior from structured game context. Capacitor ships the public iOS app from the same product core used on the web.

03decisions & tradeoffs

Deterministic game state, generative commentary

A model can make the experience feel alive without being granted authority over the answer, score, or limits.

Mechanism-level voice rules over word bans

Positive behavioral guidance preserved comedic range better than expanding lists of forbidden phrases.

Web plus a public iOS app

The web keeps sharing friction low; Capacitor delivers an App Store surface without maintaining a second product implementation.

04 tech stack

React + TypeScript

Shared product core for the public web game and iOS application.

Google Gemini

Bounded contextual reactions and hints; never the source of score or puzzle truth.

Capacitor

iOS packaging and native integrations including haptics, sharing, and purchases.

Supabase + Vercel

Persistence, server-side model access, analytics hooks, dynamic share assets, and deployment.

05 results

  • Live on the web and in the Apple App Store
  • Three daily difficulty modes, themed games, contextual hints, and shareable challenges
  • Automated regression checks gate releases and character-behavior changes
  • Server-owned rules prevent the generative layer from touching game truth

Want something like this?

Let's talk about your project.

start a project →