Flagship case study
Resonance
A loyalty platform that became a game. How I designed a living world, its economy, and the rules that keep it simple, and shipped it with AI as my engineering partner.
- Players in the game
- 1,000+
- Battles fought
- 99,985
- Cooks, harvests & plays
- 16,997
- Items crafted & earned
- 159,976
I am not an engineer. I am a systems and experience designer. I know how a thing should work, I can say it clearly, and I bring it to life through an AI pipeline. Resonance is the proof.
Resonance began as Loyalteez, an open loyalty platform for brands. It is now a live game at rsnc.network: you forge Avatars, cook gear in a Kitchen, run a Journey across fallen worlds, battle in an Arena and trade in a Bazaar. It has over a thousand players, a real on-chain economy, and a world with nine realms and its own mythology.
I designed the world, the economy, the progression, the interface and the narrative. Claude was my engineering partner: I wrote the specs and the rules, it wrote the code, and together we ran a production system that ships continuously. This is the story of the decisions that mattered, including the ones where the right answer was to delete what I had built.
Nobody wants another points program.
Loyalteez started from a real problem. The average person is enrolled in about nineteen loyalty programs and cares about fewer than half of them. Points pile up in systems nobody opens. We built an open loop: actions earn tokens that are redeemable across a network of brands, with connectors for Discord, Telegram and the web.
The infrastructure worked. The motivation did not. Earning a token for posting in a Discord is a transaction, and people do not come back for transactions. They come back for a reason.
So I asked a different question: what if the loyalty program was something you wanted to play? The token, the network and the brand partnerships stayed. Around them I designed a game, where earning is a side effect of playing. Loyalteez became Resonance.
Loyalteez
- Brands configure rewards, users collect points
- Engagement modules: streaks, badges, leaderboards
- Value is the token itself
- Three separate surfaces: a market, a perks shop, an arena
Resonance
- Players forge, cook, fight and trade in one world
- Brands show up inside the game as recipes and events
- Value is what you can do with what you earned
- One app, one loop, one identity across every wallet and account
Lore should replace reading with reason.
Games built around an economy tend to feel like spreadsheets. I wanted every system to mean something, so I wrote the canon first and made it short enough to say in one breath:
The world is a Song. The Shattering broke it. Where the Song is missing, there is Dissonance, a silence that spreads, freezes, and holds things too long. Resonance is the return of the Song, one voice at a time.
That sentence does design work. It turns three apps into three ways of doing the same thing. Fighting answers the silence with a note of your own. Cooking remakes the instruments the Song is played on. Gathering recovers the buried notes. A player who understands that cooking is how you arm the fight has understood the whole game, without a tutorial.
Each world is the silence wearing a different argument for stopping. Cinderfall says let it burn out. The Stillair says let it go still. Hollowroot says give it more. The Rimewaste says keep it as it was. That rule is in our narrative bible: a new world is not a new elemental theme, it is a new argument, and it is not finished until it answers what the silence wants you to believe there.
Cinderbound
Elemental
Unsung
Driftbound
Devourer The test of lore came from a player. In August 2026 one told us the game had “so much info, so much to read, and very little action.” The easy fix was to cut text. I read it differently: a number with a story attached is remembered, and a number without one has to be re-read every time. The fix was not less text. It was text that meant something, delivered at the moment it matters instead of locked in a story modal.
I deleted the system I had just shipped.
Cooking is the heart of the economy. In early August 2026 I shipped Cooking Specialization: disciplines, an equip-two loadout, talent trees with rungs and picks, active abilities, a success cap on recipes outside your specialty, and a glyph cost to change specs. On paper it was coherent. Every piece justified the next.
Within a day it was live, players were confused, and I was confused. My own note from that day: “It’s all getting a bit complicated for me.” Then the bug reports came in. Four that day. I sorted the work into two piles and looked at where they landed.
New materials (the content)
0 bugs. New substances, cloth and chitin families, cross-craft demand. Players were cooking with them within hours.
Specialization (the machinery)
All 4 bugs. Loadouts, the off-craft cap, glyph costs, tree resets. Every report traced back to the gating.
The complexity was never the content. It was the machinery around it. So the same day, I replaced the whole system with one mechanic:
Buy a recipe book with Chits. Unlock a block of recipes. That is the entire design.
The loadouts, trees, rungs, actives, caps and spec costs were all deleted. Mastery became a quiet bonus stat. The materials stayed. Fixing the four bugs individually would have meant writing four more rules. Deleting the mechanic fixed them in a change the size of a constants file.
One player had already said what I learned:
The fewer systems us players have to learn, the more we will most likely enjoy mastering the ones that remain. Easy to learn, hard to master.
One noun. One number. One choice.
The same week, a content drop called Missing Pages had a similar problem in a different shape. The content was great: world gear, producer blueprints, transcribing. But the way you collected it was 63 books times 5 named piece types: more than 315 unique collectibles, with rules to stop duplicates being frustrating.
I collapsed it to one fungible page item per world. Collect Ashen Pages, spend them to open any chapter. Duplicate frustration became impossible by construction rather than by rule. From that came the test I now apply to every delivery layer:
Two more principles came out of player conversations around the same time, and they shape every roadmap call:
- Expand with content, not controls. A player told me: “Adding another six controls to make my kitchen change doesn’t appeal to me. Having a pet sentinel does!!” A new pet, world or recipe is welcome forever. A new meter, cap or cooldown is a tax.
- Never take back what players earned. The off-craft cap would have cut the success rate on gear players had spent weeks levelling. A new system can gate what is next. It cannot reach back and reduce what someone already has.
We retired the manual.
Resonance had a player guide, a separate documentation site. It was always out of date, and players did not read it. The moment that changed my approach was a chapter called Stormswept Scribing. A player collected Pages, cooked the book, and hit a wall. Nothing told them what the book unlocked, where to open it, or that Chits and Pages were two paths to the same thing. There were two gates and no guidance. That is a support ticket by design.
A gate that hides its own key is worse than no gate. The player can see the locked door but not the key, so they conclude the game is broken.
I wrote the rule as a funnel every feature has to support, entirely inside the app:
The funnel
What I want → what I’m missing → how to get it → where to use it.
Every step visible at the point of friction. Never in a doc, a Discord FAQ or an operator’s head.
The five checks before anything ships
- Name the unlock where it is sold
- Show locked things where players look, with what unlocks them
- Every “you need X” links straight to X
- Show every path to get it, with progress (“3/25 Pages”)
- On grant, say what you now have and where to use it
Then I turned the rule into reusable pieces, so a new feature gets guidance by composition instead of by remembering: an Explain registry for prose at the point of friction, a LockCard for anything gated, error copy that always navigates, milestone coaching, and a searchable in-app Help page. In September 2026 we froze the guide site for good. A test in the codebase fails the build if anything links a player back to it.
Show the thing, not a description of it.
When we launched Catch-Up Packs and a Streak Pass, the rewards appeared as generic orbs with labels like “kXP Snack” and “Journey Power Snack”. Every one of those rewards was actually a real dish with real art and a real name: Echo Espresso, Quasar Quiche, Gravity Cake, Photon Soufflé. We had hidden the best part of the product behind placeholder labels.
I followed it with an audit grading every surface against seven criteria, using the Kitchen ladder as the gold standard, and a ranked backlog that showed most fixes were reuse rather than new work. Most leaderboards were one shared component away from showing real avatars on a podium.
Stilled Weathervane
Slack Windsock
Grasping Rootlet
Grown-over Market Seed
Silenced Chime
Unbroken Crest Foam
Sell the rate, never the ceiling.
“Sell time, not power” is the usual rule for fair monetization. It falls apart in a game where time is power: five hours of farming is power. So I replaced it with a test that holds up.
This was not just principle. I commissioned an audit of everything the economy produces and consumes. Bundles that sold raw power had sold almost nothing, because you cannot sell a currency people can farm. What did sell was convenience at the edge of a player’s progress: speeding up a cook, adding a queue slot. The ethical answer and the commercial answer turned out to be the same one. The rule that follows: never weaken a reward to push a purchase. Grow revenue by offering more at the frontier, never by taking earned progress away.
Designing with an AI engineering partner.
Resonance runs on a real production stack: a single-page app, a fleet of Cloudflare Workers, a Postgres database and smart contracts on Soneium. I did not write that code. I designed what it should do, wrote the specs, and directed Claude to build it, reviewing every outcome against how it should feel to a player.
The interesting design problem was not the code. It was continuity. An AI partner starts every session fresh. Without memory, the same mistake gets made twice. So I treated the rules as a design medium. Every incident and every hard-won principle became a written law in the project’s instruction files, with the date, the player report that triggered it, and the reasoning. Each law above began that way.
What happened
- A player bought a cook-queue upgrade twice and saw nothing change
- 33 players were charged essence for an Avatar that never minted
- A world’s economy opened before its map did
- Two seasons shared chapter names, so players reported “duplicate runs”
What I wrote down
- One player, one identity, resolved the same way on every read and write
- A charge is a promise: every paid action delivers or refunds, with a recovery sweep
- One world, one gate: all of a world’s content opens from a single switch
- Every cloned season gets distinct names before it ships
Some laws protect players and some protect the business. One I am proud of: our login provider bills per monthly active user in steps. I made it a law that an account is only created when a person chooses to become a player. No auto-importing a partner’s audience. A partner event brings an audience, but only the people who opt in should cost us anything.
The specs are the product. The code is how the specs become real. My job is to make sure the next session, human or AI, can’t repeat the last mistake.
Outcome, and what I'd do differently.
Resonance is live with over a thousand players, nine classes, five worlds released with more in the pipeline, an in-game economy players actually trade in, and real brands appearing inside the game as recipes and events. Three products became one app. The manual is gone. The cooking system is simpler than it was, and nothing players earned was taken away to get there.
What I’d do differently. I would apply the one-noun test before shipping a system, not the day after. Specialization taught me that internal coherence feels like quality from the inside, and the only real check is a new player on a phone. I would also have written the narrative bible first. The lore existed from the start but lived only in story modals, and players met the systems long before they met the reason for them.