Flashcards never made Thai numbers stick for me. What actually needed training was the specific skill a real transaction demands: a cashier announces a price in Thai, you have seconds to react and pay the exact amount, no reading, no mental translation. So I built JaaiTang, now live on the iOS App Store, around that exact loop.

The mechanic: hear it, pay it, under a timer
The cashier announces a price in Thai. You pick the right coins and bills from a pile on the counter and confirm before time runs out. Get it right, the next transaction starts. Get it wrong or run out of time, you see exactly what went wrong and try again.
Training mode shows the price on screen while it's announced, to build the sound-to-number association first. Challenge mode hides the display entirely, Thai audio only. Three difficulty levels scale the actual math: Easy stays under 10 baht in coins, Medium goes to 100 baht mixing coins and notes, Hard pushes to 999 baht where picking an efficient combination matters. Session length is 1, 2, or 5 minutes, because this kind of learning happens in short bursts, five minutes on the skytrain is more useful than a scheduled study session that doesn't happen.
The denominations are real Thai coins and notes, and a "PERFECT" bonus rewards using the fewest pieces possible, which trains the same efficient-combination thinking you'd actually use at a counter.
Why the timer is the actual feature
In a real 7-Eleven or market, the transaction doesn't wait while you convert baht to coins in your head. The timer forces the same speed. Repetition under that constraint trains automatic recognition instead of conscious translation; after a few sessions you stop calculating and start just knowing, reaching for the right coins because you've reacted to that number dozens of times already.
The build: right-sized tooling, not the biggest engine
Phaser 3 for the game engine, Capacitor to wrap it for iOS, built solo in 1-2 weeks. Unity would have been overkill for this scope; Phaser is lightweight enough to iterate quickly on how dragging coins actually feels, and Capacitor meant building once without learning platform-specific native tooling. Audio is native Thai, recorded by a speaker with the calm, quick delivery of an actual cashier, with slight variation so repeated prices don't sound identical.
The actual validation
I use JaaiTang myself, most days, waiting for coffee or on transit. When I'm in Thailand now, real cashiers don't feel intimidating anymore; I hear the price and my hand already knows where to go. That's the proof that matters here, not a metric or a review, just the fact that I built something I genuinely use because it solves a problem I run into every time I handle Thai money.