

Word Bubble Associations
LiveWord puzzle · iOS, Android · 2026
The whole product · one month from the first line to release
- 100K+
- installs · 5.0 ratingGoogle Play ↗ · as of Oct 7, 2026
- 800+
- levels in 9 languages
- 12 days
- to the first TestFlight build
- Built the game solo up to launch: mechanics, monetization, analytics. Since launch, the Evrika Games team has been developing it.
- Produced 800+ levels and 15K+ words per language.
- Set up an AI pipeline across the whole development cycle.
- Stack
- FlutterDartFlameForge2DPython
- Focus areas
- GameplayMonetizationCI/CDAI pipeline
Word Bubble Associations
LiveWord puzzle · iOS, Android · 2026
- Period
- Late May 2026 — release in late June; handed over to the publisher with version 2.0
- My scope
- The whole product: code, content, art, sound, releases
- Project team
- Solo until release; after launch the Evrika Games team joined the game's development
- Publisher
- Evrika Games: balance and timeline reviews before release; later the publisher's artist reworked some screens
How a level gets into the game
800+ levels in 9 languages cannot be checked by hand. The content lives in its own database with an editor and reaches the game only through automated checks.
- DBCategory and level database
A local editor on FastAPI and React: the difficulty curve, a level card, the category base with a similar-category search.
- BUILDLevel assembly
Levels are assembled under constraints: category similarity by embeddings, word frequency and CEFR level, target difficulty. A word does not come back within 15 levels.
- AUDITAudit with local models
bge-m3 embeddings flag stray words and weak names; an LLM in LM Studio reviews the flagged categories, and I make the call.
- L10NLocalization into 9 languages
Translation with the category as context, then rule checks: duplicates, untranslated words, wrong script, bubble width.
- CIExport and checks
Export to game assets. In CI a solver checks that every level can be completed, and a test compares the database with the shipped build.
- SHIPDelivery
Levels ship in the build; content fixes go through a CDN with a SHA-256 manifest, without a store update.
- Embeddings first, the LLM only for disputed cases
- Embeddings go through every category, and only the flagged ones reach the LLM. The model is not spent on obvious cases, and I review only its verdicts.
- Translation depends on the category
- "Bat" in a baseball category is a bat, not the animal. Words are translated with the category as context, and wrong senses were fixed in each category separately.
What I did
- Game logic, physics, special mechanics and boosters on Flame and Forge2D.
- Ads, in-app purchases, analytics SDKs, A/B tests, 9 localizations.
- Content: 800+ levels, 15K+ unique words per language; the "Content and level history" tool — feed, per-version level history, version diff, search by words and categories.
- After release — updates every 1–2 weeks.
AI pipeline
- Claude Code and Codex: code, tests, localization, release routine.
- Local models — embeddings and classifiers — to prepare and validate the word content.
- Art: setting and mockups in GPT Image → Figma → the game; some assets re-rendered with Nano Banana. Music is generative.
- By hand: screen layout and some of the sounds.
Outcome
- 12 days from the first commit to a TestFlight build, one month to release on iOS and Android.
- ~60K lines of Dart and 2K+ automated tests.




