Inspiration

Loyalty apps in Mongolia (and everywhere) all reduce to the same thing: a point balance nobody looks at until checkout. U-Point and its imitators pay you back a few percent and call it retention — but a ledger doesn't give anyone a reason to come back, it just tracks the reasons that already existed.

We kept coming back to a much older idea instead: a ger isn't just a home, it's something you actively maintain — you put it up, you take it down, you move it, and if you stop tending it, it stops standing. That felt like the right shape for a loyalty mechanic that's actually about return visits rather than cashback. A venue you stop visiting shouldn't just quietly lose your business — it should visibly lose your Ger.

So instead of points, we built around a real object with real assembly: eight parts, put up in the order a ger actually goes up, lost to neglect rather than to a rival, with the one part that comes apart in real life (the roof poles) being the one part you lose when it falls. The game became a way to make "I haven't been back in a while" feel like something, instead of nothing.

What it does

Nutag turns everyday purchases into a real-world territory game. Order at a real venue (an Ortoo) and you collect today's part toward building a traditional Mongolian Ger. Eight parts raise one, and it stands as long as you keep visiting: go seven days without an order there and it falls. Nobody can knock it down — a Ger is only ever lost to neglect. When it falls you get your parts back, all but the roof poles, which are what actually break in real life. Territory is per player: every venue page shows how many Gers stand there and how many are yours. Underneath the game is a real ordering utility for the venue, so a visit only counts once it is proven — a settled payment, or a staff tap at the counter. The part a venue gives is fixed for the day and shown before you order, and it is the same however much you spend: never rolled, never a spend multiplier. Optional paid drops (three a day, a short walk away, part shown before you buy) let you skip one day's walk; the whole game is playable without them.

How we built it

Backend is a single Go service on Postgres (Huma v2 for the OpenAPI surface, pgx, Cloudflare R2 for images), with auth from our shared CIA identity server. Venue payments run on the gateway each vendor picks — Bonum or Stripe — and parts are credited only by the signed webhook, never on the client's word. RevenueCat wraps Google Play Billing for store purchases: the drop consumable is live and credited only by RevenueCat's webhook, and a Nutag Pro subscription is wired (paywall, entitlement) but not yet surfaced, because nothing in the game depends on it yet. The app is Flutter, shipping on Android, with a vendor console (Astro) where venues manage their menu, branding, opening hours, payment gateway, counter invoices, loyalty tiers and walk-in order approval. Yield is deliberately simple: the eight canonical parts in assembly order (toono, bagana, khaalga, orkh, esgii, busluur, khana, uni), and every venue gives one part a day, cycling through all eight with a per-venue offset — so eight visits to any one venue is a Ger. Decay warnings are in-app rather than push: a Ger about to fall is flagged on the map, on the profile and at the top of the discover ranking. The build celebration is a Lottie timelapse of the Ger going up piece by piece.

Challenges we ran into

Scoping for a hard mid-September deadline meant cutting a whole planned feature (guild territory / Aimag creation) mid-build, which also removed our original paid product — founding an Aimag. We redesigned monetization around paid part drops, featured placement for venues and ad slots instead. A week later we also cut part rarity and per-product part nomination: in the pilot they made a Ger unbuildable whenever a venue's menu didn't cover a part, and building a Ger is the game. We also hit a nested-animation bug where precomp layers were clipping at the wrong frame in our Ger build animation, and had to resolve a documentation contradiction between mandatory guild membership and solo play before we could freeze the app's information architecture.

Accomplishments that we're proud of

Landing on a hold mechanic that ties directly into cultural authenticity — losing a Ger is framed as neglect, not destruction; nobody can attack it; the one part that doesn't come back is the one that breaks in real life; and the parts and the daily cycle follow how a real Ger goes together. We also held the line on scope discipline under deadline pressure rather than letting the build sprawl, including deleting features we had already built and tested.

What we learned

That anchoring a virtual mechanic to something real and culturally specific (rather than an abstract points/currency system) makes design decisions much easier to reason about — "what should a fallen Ger give back" and "what should be rare" answer themselves once you're modeling a real object: the roof poles break, and nothing needs to be rare, because a Ger is eight parts and eight visits. We also learned to keep onboarding to one screen — the loop in three lines — with no gates and no practice phase, so the first thing a player does is a real visit and the pilot data starts clean.

What's next for Nutag

Post-pilot: parts at real named places, not only venues — a monument or temple with a short sourced card and one question before you collect, so the map works anywhere we write places — which is also where Nutag Pro earns its keep with a higher daily cap; a visits API so a venue's own POS or turnstile can approve a visit; push notifications for Gers about to fall; the Khüree upgrade tier for high-population venues with competitive events; teammate defense mechanics; a vendor part-inventory and surplus-trading loop; and NFC totem (Temdeg) hardware for in-venue recruitment.

The bigger push is market and vendor growth. Mongolia is the pilot, but the mechanic is city-agnostic by design — no rebuild needed, just new venues on the map. We're planning expansion into Singapore, Hong Kong, mainland China, Japan, Europe, and the US, prioritizing markets where mobile ordering habits are already strong and vendor density can support a real capture loop. Each new market means local payment gateway support (beyond Bonum/Stripe), local vendor onboarding, and localized part/place content. iOS support is planned once Android billing and the pilot are proven out, ahead of any international rollout.

Share this project:

Updates

Submission history