AAOA.studio · Case Study · iOS · SwiftUI

Japanese vocabulary
You care about.

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.

2024 iOS + iPadOS SwiftUI 2.5 months to v1 kann.app ↗
Opportunity
Japanese retention is tied to interest, not exposure. Mid-to-advanced learners plateau because generic word lists don't connect to what they actually care about. No existing app offered curated interest-based decks with SRS. The bet: removing the friction of building your own deck, and replacing it with editorial curation, produces learners who come back.
Decision left out
Handwriting practice was deliberately excluded. Stroke-correction in apps creates false muscle memory: users feel confident because the system was silently fixing every stroke. When they write on paper, they fail. Shipping it would have boosted session time and hurt real-world outcomes. It wasn't built.
Signal so far
4,000 downloads. 2.2 sessions/day on average, daily-habit territory. Significant unsolicited gratitude from users. Revenue: ~$500, one lifetime purchase. The engagement loop works. Monetization conversion is the open problem.
0
Git commits
Aug 2024 to May 2026
0
Curated vocabulary domains
6 core + 16 interest-based
0+
Vocabulary entries
Each with furigana + 6-language examples
0
Months of development
Studio-built, native, shipped

Chapter 01

The problem.
Generic lists, poor retention.

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.

Onboarding · interest selection

Chapter 02

The decks.
Curated by interest, not by syllabus.

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.

Vocabulary library · 22 domains 7,620+ entries
Free with the app · 6 core decks · 1,000 words each
1,000 most common 2,000 3,000 4,000 5,000 6,000
Premium · 16 curated interest decks
Culinary Business Travel Technology Medical Anime Music Nightlife Slangs Sports Fashion Culture Automotive Design Videogame Onomatopoeia
01
Domain scoping Before writing a single entry, each deck starts with a question: what does fluency in this domain actually look like? For culinary, that means being able to read a menu, follow a recipe, and talk to someone in a kitchen. The word list follows from that definition.
02
Register and usage The same concept often has multiple words at different registers. Business Japanese distinguishes sharply between formal and polite speech. Slang entries need usage notes or the learner will deploy them at the wrong moment. Curation means making those calls, not just listing words.
03
Example sentences across 6 languages Every entry carries example sentences with translations in English, French, Spanish, Portuguese, Italian, and German. This is not an afterthought, it is the instruction layer. The sentence shows how the word behaves, not just what it means.
04
Verb depth Verbs receive a full conjugation view, te-form, negative, past, polite, and potential. Learning a verb as an isolated dictionary entry is half-usable. Learning it with its conjugation set is immediately deployable.
// Every entry in the culinary deck, depth beyond a word list
{
  "Word": "居酒屋",
  "Rom": "いざかや",
  "Meaning": "izakaya, Japanese pub",
  "Kind": "Noun",
  "Examples": [{
    "phrase": "友達と居酒屋に行った。",
    "fur": "ともだち と いざかや に いった。",
    "meaning": "I went to an izakaya with friends.",
    "meaning_fr": "Je suis allé dans un izakaya avec des amis.",
    // + ES, PT, IT, DE
  }]
}
Deck browser · interest view
Entry detail · verb conjugation view

Chapter 03

The engine.
The part that knows what you haven't practised.

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.

App accent theme · change in Settings
Navigation · curved tab bar Tap tabs · trim indicator follows SwiftUI spring logic
Streak coins · layered metal designs Move cursor or tilt phone · roll drives parallax layers
Bronze streak coin
Silver streak coin
Gold streak coin
Holo streak coin
Bare metal streak coin
Black streak coin

Quiz preview · culinary deck · meaning recognition

4 / 15
Culinary
What does this mean?
居酒屋
いざかや
A izakaya, Japanese pub
B sushi restaurant
C convenience store
D food market
SRS queue · culinary deck sample
居酒屋
in 8 days
炒める
in 4 days
tomorrow
出汁
today
旨味
overdue
Infrastructure behind the quiz
SM-2+ algorithm
Response quality (again / hard / good / easy) and response time both feed the interval calculation. Slow-correct schedules a shorter follow-up than fast-correct.
4 question types per item
Meaning recognition, reading recognition, meaning recall, and verb conjugation are tracked independently. The system quizzes the weakest type first.
Lives, coins, and streaks
3 lives per session with a coin economy for restoring them (1 life = 2 coins, full refill = 5). Coins also buy Jokers, up to 3 per quiz, which halve the answer choices, eliminating half the wrong options before you answer. A perfect quiz earns a life back if you're below the cap, or coins if you're already full. A skilled kana learner can keep going indefinitely without spending a single coin. Premium removes the cap entirely.
Analytics dashboard
Calendar heatmap, per-deck performance charts, SRS queue size, and streak history. The data that shows whether the app is working.

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.

Character grid · SRS progress fill Click steps progress · long-press animates to mastered
Hiragana
Kanji
Radical
Progress ramp · 0 → mastered

Free foundation · hiragana · part of the free tier

Hiragana gojūon · 五十音 Free · 46 characters · all quizzable
a
i
u
e
o
ka
ki
ku
ke
ko
sa
shi
su
se
so
ta
chi
tsu
te
to
na
ni
nu
ne
no
ha
hi
fu
he
ho
ma
mi
mu
me
mo
ya
yu
yo
ra
ri
ru
re
ro
wa
wo
n

Chapter 04

Generous free tier.
Honest premium.

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."

Free always
Hiragana + Katakana All 92 characters with quiz and SRS tracking
All 214 radicals With positional guides and composition examples
Full JLPT kanji N5 through N1 with readings and stroke info
1,000 most common words With furigana and 6-language examples
Full quiz engine Streaks, daily challenges, analytics, 3 lives/session, coin economy, perfect quiz restores a life
Premium $80 / year
No lives cap Unlimited daily sessions, the lives system is fully removed
Dictionaries as DLC Interest-based and extended vocabulary decks available for separate purchase
CloudKit sync Progress across iPhone and iPad, fetch-first architecture
Multiple active decks Study several domains simultaneously
Lifetime $220 one-time
Everything, forever All current and future content included, no lives cap, no DLC
16 curated interest decks Culinary, Business, Anime, Nightlife, Slang, and 11 more
Core decks 2,000–6,000 The next 5,000 most common words in 5 packs
CloudKit sync + multiple decks All premium features included
Store view · deck unlock flow

Coda

The bet is simple.

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