案内
About · Where the Data Comes From
Back to About

Where the data comes from

Sources, methods, and reproducible processes.

Most language apps don't tell you where their content lists come from. We think you deserve to know — both because the methodology determines whether the app actually helps, and because every source we use is publicly available, so you can verify any choice we made. This page describes the methodology; the Sources page lists every dataset with size, license, and rationale.

語彙 · Goi (vocabulary) — 6,382 entries

Why not pure newspaper-corpus frequency? Newspapers cover politics, business, and economics — they almost never mention basic everyday verbs like 食べる (to eat) or 飲む (to drink). In raw newspaper rankings these sit below #10,000, far below political vocabulary that no learner needs early. Major learner resources (Genki, Tobira, Quartet) all temper raw corpus frequency with curation; we follow that pattern.

The build process

  • Curate by category — verbs, adjectives, adverbs, nouns, conjunctions, number paradigms — with explicit attention to register balance.
  • Validate every entry against JMdict, the open-source Japanese-English dictionary. Every entry must exist in JMdict, which catches typos and verifies the reading and part-of-speech tags.
  • Enrich — each entry gets one example sentence (with furigana segments) and a usage note when there's a non-obvious nuance.
  • Sanity cross-check against unofficial JLPT N5–N3 vocabulary lists — basic everyday words must appear at sensible early ranks.

Pool: 1,011 verbs · 329 adjectives · 312 adverbs · 4,647 nouns · 53 conjunctions · 30 number paradigms.

文法 · Bunpou (grammar) — 502 patterns

Why grammar can't be corpus-extracted. Vocabulary is a list of tokens you can count. Grammar patterns are meaning-bearing structures (often discontinuous) that don't fall out of a token-frequency count. There's no canonical grammar list the way there's a canonical dictionary — the JLPT itself stopped publishing official grammar lists in 2010.

The right source is therefore a well-trained model with reliable knowledge of Japanese grammar pedagogy, audited against the canonical learner references the field already trusts.

The build process

  • Generate by tier, following eight design rules (one specific surface form per tile, variants consolidated, frequency-driven).
  • Iterative review, then a comprehensive gap audit against Bunpro, Tofugu, the Dictionary of Japanese Grammar (DOJG), Genki, Tobira, Quartet.
  • Real-text walkthrough — paragraphs across registers (news, blog, novel, manga), every grammar pattern identified, our list checked for coverage.

Coverage by JLPT level: N5 ~100% · N4 ~99% · N3 ~96% · N2 ~92% · N1 ~28% (intentionally partial). Reading-comprehension coverage ~94–96% of grammar in general texts.

JLPT lens

Like Kanji, Bunpou has a JLPT-lens toggle in the bottom control bar that switches the landing page from frequency tiers to JLPT levels — six cards (N5, N4, N3 ①, N3 ②, N2 ①, N2 ②) filtering the same pool. JLPT N1 is not surfaced as a card because our grammar coverage is intermediate-focused and N1 is intentionally partial; those 29 patterns are still reachable via the frequency tiers.

JLPT levels are community-aligned, not official — the JLPT stopped publishing official grammar lists in 2010. Our tags reflect cross-reference consensus from the Bunpro / DOJG / Genki / Tobira / Quartet / Tofugu indexes used during the gap audit. Tag confidence drops at higher levels (~99% at N4, ~96% at N3, ~92% at N2) because grammar isn't atomic the way kanji are: the same pattern can sit at different levels in different references, so we picked one and disclosed.

漢字 · Kanji — 2,228 kanji

What's in the pool (selection)

The intermediate core — the part of the deck the app is built around — is complete coverage of two textbook-standard reference sets, unioned together:

  • All 1,026 Kyōiku kanji — every kanji a Japanese kid learns by age 12 (grades 1–6).
  • All ~1,000 JLPT N5–N2 kanji from the community-canonical list (the JLPT stopped publishing official kanji lists in 2010).

The two sets overlap by 825; their union is 1,201 — and that intermediate core is where the focus stays. The selection there is not "we picked the most frequent kanji" — it's "we ship the standard intermediate-Japanese kanji set in full, plus the Kyōiku augmentation that newspaper corpora under-represent (kids learn 犬, 耳, 雨, 虫 early, but adult news rarely uses them)." Every intermediate app picks a subset of this pool; we ship it complete.

Beyond the core, the deck now also carries the complete JLPT N1 set (1,125 kanji) and the 94 most common non-Jōyō (表外) kanji — bringing the total to 2,228. These were added mainly so that every kanji appearing in our 6,382 vocabulary words has a card to open. N1 and 表外 lean toward classical, legal, and specialized writing, so they sit in the later tiers and are deliberately not the focus — they're there when you need them, while the intermediate N5–N2-plus-Kyōiku core remains the heart of the app.

How the tiers are ordered (ranking)

Within the pool, tiles are sorted by a blended frequency score — the average of three independent rank signals across distinct registers:

  • Mainichi Shimbun newspaper rank (KANJIDIC2 <freq>) — 1990s formal news.
  • Japanese Wikipedia rank — modern encyclopedic prose, sampled from random articles via the MediaWiki API.
  • Aozora Bunko rank — public-domain literary prose, sampled across canonical 20th-century authors (Sōseki, Akutagawa, Dazai, Miyazawa, Mori Ōgai, Higuchi Ichiyō, and others).

Each signal produces a within-pool rank. We average the three ranks and sort ascending: the intermediate core fills the early tiers by blended frequency (~150 kanji each), and the added N1 and 表外 kanji follow in the later tiers. Frequency only orders the pool — it doesn't shape it.

The three corpora cover different registers, which matters: newspaper over-ranks political/economic kanji, Wikipedia over-ranks geography/biography, and literature over-ranks daily-life and emotional vocabulary that the other two miss. Averaging across all three gets every tier closer to "kanji you'll actually meet across the kinds of Japanese you'd want to read," not just one register. The five most-frequent kanji under the blend (日 人 一 大 年) appear at or near the top of all three corpora — the methodology is robust.

What's differentiated is complete coverage of the standard pool, the Kyōiku augmentation that other apps drop, and a three-corpus blended ordering across distinct registers (news + encyclopedia + literature) — not a custom frequency-driven selection.

JLPT lens

If you're studying for the JLPT, the bottom control bar has a JLPT lens toggle. With the lens on, the kanji landing page shows JLPT-level cards instead of the frequency tiers — leading with the intermediate range (N5, N4, N3 ①, N3 ②, N2 ①, N2 ②), followed by N1 ①–④ and 表外 for the expanded set. N3 and N2 are split at the frequency-rank midpoint within the level, so even inside JLPT mode you still meet the more-frequent half first. The same toggle also rewires the Bunpou landing page; see Bunpou above.

The colored-radical back face

When you flip a kanji tile, the back face shows the kanji as a vector glyph with each radical component colored differently. Below the glyph are tappable chips for each radical; tapping one opens a secondary popup with that radical's meaning and a grid of other kanji from the pool that contain it.

Vector data and per-stroke decomposition come from KanjiVG (Ulrich Apel, CC BY-SA 3.0). Radical meanings come from KANJIDIC2 plus a small hand-curated lookup for variant glyphs (氵, 亻, 艹 — variant forms of 水, 人, 艸; same meaning, different position-dependent shape). About 80% of kanji decompose cleanly under KanjiVG; the rest fall back to a single-color render with the named components still surfaced as chips.

Mnemonics

Each kanji's back face also shows a brief 1–2 sentence mnemonic tying the radicals to the kanji's meaning. For example, 安 (peace): "A WOMAN sitting safely under a ROOF feels at PEACE."

Mnemonics are AI-generated under a strict style guide — one consistent voice across all 2,228, max 1–2 sentences, no jokes, no proper-noun mascots, only canonical Kangxi-aligned radical meanings (no invented "WaniKani-style" radical names). The most-frequent tier was hand-reviewed across two passes; the rest went through a multi-agent critic loop, with a final spot-check before each tier shipped.

Cross-pillar example linking — pre-computed by AI

Every example sentence in Goi and Bunpou has its content words pre-tagged with the Goi entry they refer to. Tap a verb, adjective, or noun in any example and you jump directly to its dictionary card — across all three pillars (Goi, Bunpou, Kanji's compound popup).

Why pre-computed, not runtime-guessed

Earlier the linker tried to figure this out at runtime — strip conjugations, peel particles, look up dictionary forms. It worked most of the time but produced occasional confidently-wrong links: います resolving to いる when it was really the polite-form tail of a verb whose root the engine couldn't resolve, or ました resolving to 増す through a reading collision. Adding rules to fix one case kept breaking another.

The current pipeline pre-computes every link statically. Each example sentence was read by an AI which identified each content-word span, derived its dictionary form, and tagged the corresponding Goi entry. A second AI pass filled in words the first reading missed. Each candidate dictionary form is validated against the actual Goi index — anything that doesn't resolve is dropped rather than linked.

Each link records its exact wrap range

Every link stores not just which Goi entry it points at but also where exactly the surface appears in the segment text — start and end character offsets when the wrap doesn't cover whole segments. The engine doesn't infer the underline; it follows the data byte-for-byte. This was rebuilt after a cleanup pass that uncovered three classes of issue: spans that over-extended into trailing punctuation or auxiliary tails (e.g., the underline on 欠席 reaching into させていただきました), orphan links pointing at non-existent segments, and self-links on the parent word of every card (tapping which would have opened the same card you were already on).

The numbers

  • 6,878 example sentences across Goi (6,376) + Bunpou (502).
  • ~99% of examples carry annotations with at least one link to another Goi entry.
  • 28,366 verified links (mean ~4 per annotated example).
  • Zero false-positive risk. Each link is a deliberate AI tagging validated against the Goi index, not a heuristic guess. If a content word's dictionary form isn't in Goi, the engine leaves it plain rather than linking it to a coincidentally-similar entry.

The runtime engine remains as a defensive fallback for any example without static annotations. A STOP_LIST blocks polite-form auxiliaries like ます / ました / / from ever matching a Goi entry, even when they coincidentally collide with a verb's reading.

Reproducibility

The data files (goi_data.js, kanji_data.js, bunpou_data.js) are generated artifacts. Each is built by a script that consumes the public source data described above. The build scripts are regeneration scratch (not in the repo), but the inputs and the methodology described here are sufficient to reconstruct any of the three lists.

For commitments about what we deliberately don't include (no proprietary corpora, no AI-generated production lists, no invented radical names), see the Sources page.