AAOA.studio · Case Study · iOS · SwiftUI
Kann is a Japanese vocabulary app built on one premise: motivation is not a soft skill, it is the mechanism. Generic word lists produce generic results. Interest-based decks produce learners who actually come back.
Chapter 01
Most Japanese vocabulary apps hand you the JLPT N5 word list and call it a curriculum. You study 日 (sun), 月 (moon), 山 (mountain) for weeks before encountering a word you would actually use with a person you care about. The content is technically correct and humanly inert. Learners stall not because Japanese is too hard but because they have no reason to care about the next card in the queue.
The research on motivation and memory is consistent: you encode information better when it connects to something that already matters to you. A cook who genuinely wants to read a Japanese recipe menu will retain 炒める (to stir-fry) faster and longer than someone studying it because it appeared on a word-frequency list. A gamer who watches subtitled anime already knows what 武器 means. They just need the reading confirmed, the kanji locked in, the spaced repetition to run the maintenance.
"Coverage follows interest, not the other way around."
Kann is built for mid to advanced learners who have already crossed the beginner threshold and are now asking: what do I actually want to say? The app does not pretend that every learner needs the same 6,000 words in the same order. It offers a foundation, then lets the learner choose the direction. The deck you study is the deck that makes you want to open the app tomorrow.
The thesis was tested before launch. Over 1,000 beta testers ran the app for several months, and their feedback confirmed the core bet: no one asked for a different algorithm or more JLPT levels, they asked for more specific domains. Medical, Nightlife, and Onomatopoeia exist entirely because testers requested them. Users who took the time to write detailed emails got detailed responses, and 90% of requested features were implemented before or shortly after public release. Interest-based curation was not a hypothesis that needed defending, it was what testers had been waiting for.
Chapter 02
A vocabulary deck is not a word list. A word list is alphabetical. A deck has a point of view. The culinary deck does not just contain food nouns, it contains the verbs a cook uses (炒める, 煮る, 蒸す), the adjectives that describe texture and taste, the register appropriate for a kitchen or a restaurant menu. Curation means making decisions about what is essential, what is idiomatic, and what a learner at this level is ready to acquire. Some of those calls took longer than they had any right to: whether 出汁 deserved a slot in the first hundred culinary entries was argued over for the better part of a week. It stayed. Three seasonal fish names did not. That work takes time. Which is why it is behind a paywall.
The free foundation is genuinely complete. Hiragana and katakana. All 214 classical radicals with positional guides. Kanji at every JLPT level, N5 through N1. The first 1,000 most common words. A learner can go from zero to competent on that foundation alone, and it costs nothing. The premium interest-based decks are an extension for learners who know where they want to go next and want someone else to have done the editorial work of getting them there efficiently.
Chapter 03
Interest gets a learner to open the app. The spaced repetition engine is what makes opening the app actually produce retention. Kann runs a modified SM-2+ algorithm that tracks four question types independently for every item: meaning recognition (word to meaning), reading recognition (word to reading), meaning recall (meaning to word), and verb conjugation. A learner who can recognise 居酒屋 on sight might still need prompting on its reading. The system knows which half of the knowledge is solid and which needs more time.
Response time feeds into the algorithm alongside correctness. A correct answer in eight seconds is softer evidence than a correct answer in one. The interval before the next review is shortened accordingly. Over time, the system builds a per-item difficulty model calibrated to how that specific learner actually performs, not a theoretical average learner. A cook who already half-knows 炒める earns longer intervals on it from the first session. Motivation, showing up in the mathematics.






Quiz preview · culinary deck · meaning recognition
The foundation content, kana, radicals, and kanji, works through the same engine. The kana grid makes each character independently quizzable. The kanji section is organised by JLPT level with radical composition shown for every entry. For learners who already know their kana, all of this can be reviewed in an afternoon and then handed back to the SRS to maintain with minimal effort over time.
The accent themes exist because a beta tester, the same crowd that got Medical and Onomatopoeia made, wrote in to say the default Gray made studying feel like being at the office. Fair. The visual layer runs on the same principle as the content: a single accent token propagates through every surface. Changing Gray to Indigo changes the tab bar indicator, the quiz progress fill, the SRS track bars simultaneously and the app icon on the lock screen. Nothing is hardcoded to a colour. Adding a fifth theme is one token change, not a design pass across every screen. That discipline is what keeps the visual language consistent across an app with six distinct feature areas without a dedicated visual QA pass.
Free foundation · hiragana · part of the free tier
Chapter 04
The free tier is not crippled or time-limited. Kana, radicals, all JLPT kanji, and the first 1,000 most common words, enough to become a competent reader of basic Japanese, costs nothing. The lives system is the only meaningful constraint, and it has a built-in release valve: a perfect quiz on any content set earns a life back. A practiced kana learner can keep going indefinitely without touching the coin economy. The limit is theoretical for anyone who actually knows their content.
Premium ($80/year) removes the lives cap for learners who want uninterrupted daily sessions. The interest-based and extended vocabulary decks are separate DLC, priced individually, available to any user regardless of subscription status. Building the culinary deck means selecting the right 100 words, sourcing sentences that reflect real kitchen and restaurant usage, translating them into six languages, and verifying every conjugation table. That editorial work has a cost, the week lost to 出汁 included. The lifetime plan ($220, one-time) bundles all of it.
"The tiers exist because curation is work and sessions should be unlimited. Not because access should be scarce."
Coda
The engagement signal is real. 4,000 downloads and 2.2 sessions per day means people built a daily habit around it, most apps never get close to that number. They come back because the content is theirs: the culinary learner returns for the culinary deck, not because a streak notification is nagging them. The most common phrase in the reviews is some variant of "words I would actually use". The whole thesis, quoted back by strangers.
Revenue is ~$500. One lifetime purchase. That gap between daily engagement and monetization is the next design problem. The hypothesis is that the app earns trust before it earns money, and the trust is being earned.
The decision that holds up best in hindsight: not shipping handwriting practice. The research on false muscle memory is consistent, app-assisted stroke input produces learners who feel competent and write incorrectly on paper. That is a product integrity call. The app should help people learn Japanese, not feel like they are learning Japanese.
Kann was built with LLMs as a coding partner from the start. Early months: Claude and ChatGPT, pasting into Xcode and iterating on feedback. When Cursor arrived, the pace improved significantly. The stack has since expanded to include Claude Code and local models, alternating to find the best output at a manageable cost. The product thesis, content curation, SRS algorithm design, UX patterns, and visual decisions were never AI's job. But without LLMs handling the implementation layer, a designer-led team this lean does not ship a native SwiftUI app at this depth.
730 commits. 22 curated domains. 7,620 entries. 21 months, studio-built, native, shipped, because a product that asks people to trust it with their time has to earn that.
View on App Store