BLUERABBIT
A classroom experiment that ran out of content in two months, became award-winning software, and in 2026 was rebuilt from an 80,000-line WordPress theme into a modern app in twelve weeks. I designed it, built it, and sold it.

The classroom that collapsed.
In April 2014 I was teaching web and multimedia design at The American School Foundation in Mexico City, and I turned my classes into a game. For three months the platform was called RabbitBlue. That same year it became my graduation project at Tec de Monterrey.
It worked too well. I expected my students to take the whole semester to finish my challenges.
Two months in, my players had eaten ALL the content I proudly prepared for the semester, and I had no way of feeding their demand as fast.
From my 2017 blog
The system collapsed and I had to fall back on old practices to finish the term. That failure became the first design principle: set the time limit both ways, the fastest a player can finish as well as the latest they must. Every pacing mechanic in BLUERABBIT today, from energy to unlock conditions, descends from that semester.
BLUERABBIT went public in 2016. For its first two years I invoiced clients through ESSETRA, my previous company, until BLUERABBIT EDU, SAPI de CV was constituted in 2018. My partners Roberto and Adrian and my first clients, Edgar and Henry, bet on it before there was much to bet on. Adrian and Edgar are still part of the game.
On November 28, 2017, in Brighton, BLUERABBIT was named Outstanding Gamification Software at the Gamification Europe Awards. I wrote afterwards that every cell of my body was vibrating, and that the platform “shall win the war on grades and free education from an industrialized point of view.” I still mean it.
- Apr 2014RabbitBlue runs in my classes at ASF
- 2014Graduation project at Tec de Monterrey
- 2016BLUERABBIT goes public
- Nov 2017Outstanding Gamification Software, Gamification Europe
- 2018BLUERABBIT EDU, SAPI de CV is constituted
- 2026Rebuilt from the ground up and relaunched
Designing the system.
BLUERABBIT is a game engine sitting under your content, not badges bolted on top of it. An organization runs Adventures. A Game Master designs each one, and Players move through it on a visual Journey Map divided into regions called Tabis.
The first decision a Game Master makes is the one I put at the center of the product: do you want to provide knowledge, or test it? Providing is a Milestone, built from steps (28 step types in six groups, from dialogue and video to SCORM, uploads, branches and open answers reviewed by AI). Testing is a Challenge, a question bank with no steps. Keeping the two apart stops content design from turning into quiz design.
Three currencies, three jobs
One currency can't carry every kind of motivation, so the economy has three, and each one follows its own rules:
Growth
Drives levels. It has its own ledger, so it can also go down when a grade changes. Status that tells the truth.
The economy
Spendable in the Item Shop and on encounters. It can go negative, so debt is a real consequence rather than a wall.
Energy
Paces play and gates encounters. It never drops below zero, which keeps the pace humane.
Around the currencies sit achievements (badges, paths and ranks, granted by conditions, magic codes or QR), guilds, an Item Shop and backpack, certificates, and Encounters: an eight-card draw with a real economy, crises, opportunities and consequences. Cooper, the rabbit in the logo, became an in-app assistant running on Claude.





Eighty thousand lines of debt.
By 2026 BLUERABBIT was on version 13 of a WordPress theme that had grown for ten years. It had served thousands of players, and it was at the point where every new feature broke something older.
Every interaction went through WordPress's admin-ajax.php. There was no REST API, no auth middleware, raw SQL in places, WordPress globals everywhere, and a jQuery version the UI library no longer supported. The design debt matched the code debt: tab bars stacked on tab bars, drawers that opened drawers, and a different header on almost every management screen.

- Everything through admin-ajax.php
- WordPress users, sessions and media library
- One 10,525-line stylesheet
- No payments; plans enforced by hand
- New features broke old ones
- Routes, controllers, models and a default-deny AJAX gate
- Own auth, own media manager, SSO-ready
- A pinned SCSS pipeline split into 22 partials
- Stripe billing and storage limits per plan
- A one-command installer and canary deploys
Rebuild the engine while the car is moving.
A big-bang rewrite would have meant months with nothing to show. Instead, a dispatch bridge let the existing front-end JavaScript keep calling the same actions while each one moved, one at a time, to a real CodeIgniter 4 controller. Players saw the same product while its engine was replaced underneath.
I made one deliberate exception. The Garden, the new social layer, was built in the CI4 app only, never back-ported. It was a forcing function: if clients wanted the best new feature, the migration had to be done properly. (It gets its own case study.)
What shipped, in order
- Jul 1–3Journey Map, builders, Item Shop, Tabi editor, Wall · Stripe billing · AI review of open answers
- Jul 17SCORM, the stats dashboard, and the first Garden
- Aug 4The conditions engine: anything can unlock anything
- Aug 18Evolving Tabis · Cooper, the AI assistant
- Aug 30SSO · Encounters rebuilt as a card draw · the XP ledger · the AJAX security gate
- Sep 8–10Certificates · a shared interface across Journey and Garden · the installer · profile tests
- Sep 12–20Feature freeze: an audit of every money and XP path, content, bug fixes
- Sep 19–21Guided tours · depth planes · player records · skills radar · storage limits



Rules that kept it usable.
A product this deep drifts into chaos one reasonable feature at a time. What kept it coherent was a small set of rules, written down, enforced on every screen, and cheap to explain.
Open drawers don't open other drawers. They open modals.
Anything fixed on screen clears the header and the taskbar. Nothing hides behind chrome.
A progress bar fills with what you earned, not with what you're missing.
The rest followed from those. Sticky tab bars became a left rail. One partial now drives every celebration, and the intro splash that stood between players and their map was retired. Players choose where they land, Journey or Garden, and are redirected once per session, so the other one is always a click away. The Journey gained a list view for people who'd rather scan than explore, and depth planes (a four-layer parallax with per-object blur) for people who'd rather explore.

The biggest decision was one of reuse. The Garden's floating panels, starfield and glass profile box tested so well that they were extracted into shared modules and mounted on the Journey too. Two screens that had grown apart became one interface.


Contrast: from 26 failures to zero.
BLUERABBIT's brand is neon on near-black, which looks great until you measure it. I built a contrast checker into the app and ran it across the Journey: 26 elements failed.
The easy fix would have been to repaint the brand. Instead the palette gained text-safe variants: the same hues, lifted just enough to pass when used as text, while the saturated originals stay on fills and glows. After the pass the count was zero, and the brand looks the same.
#e24040 · fill
#ff7a6e · text
#9f40e2 · fill
#c88af1 · text
The front door.
A rebuilt product deserved better than a WordPress/Divi brochure, so bluerabbit.io was rebuilt too, from scratch in CodeIgniter 4, starting July 27. The positioning is a relaunch: “BLUERABBIT is making a comeback, on steroids.”
- A design system taken from the app itself: tokens from the app's own variables, clipped-corner HUD panels, the origami rabbit.
- A docs CMS with 76 pages (20 for players, 55 for Game Masters, one gated developer section), synced against what the app actually does, not what the old docs promised.
- Its own auth, on purpose. The website never shares users or sessions with the app. My rule was: “Own system. Don't mix. Ever.”
- A blog CMS with 61 legacy posts rescued from Divi's layout JSON, a waitlist with Resend emails, a GDPR consent panel, Turnstile on every form, and one closed file-upload hole that would have allowed remote code execution.
The site you're reading runs on the same foundation.
Directing an AI engineer.
284 of the 339 commits in the rebuild were co-authored with Claude. I didn't hand over the keyboard. I changed jobs: from writing every line to deciding what gets built, setting the rules it's built under, and reviewing what comes back.
- I owned the product decisions: the Milestone/Challenge split, the currency rules, the Garden's model, what to cut. The feature freeze was my call too.
- I owned the rules. The modal rule, “own system, don't mix,” and “derived, not declared” were written down once and enforced everywhere, by both of us.
- Memory was a document. Dated build notes, more than 10,000 lines of them, recorded what shipped and what was verified live, so every session started from the truth rather than from the brief.
- Nothing was “done” until I saw it working. A feature wasn't marked done until it was verified in the running app.
Twelve weeks for a rebuild of this size would have been a fantasy without it. Without a designer holding the line, it would have been twelve weeks of very fast drift.
Where it stands.
The rebuilt app is live at play.bluerabbit.io and the relaunch is under way. Pricing is deliberately simple: a free Basic plan (90 players, 3 adventures), Pro at $8 a month or $80 a year (250 players, 20 adventures, a 30-day trial), and Enterprise with SSO and branding on request. Billing lives inside the app, not on the website.
Next on the list: automatic help-matching Missions in the Garden, and more of the AI features that the new architecture finally makes cheap to build.

The Garden
What if helping each other was the game?