When we shipped the vocabulary graph, we said it was infrastructure — a map of ~3,000 words per language with your personal knowledge layered on top — and that the features built on it would come next. This is the first one, and it lands in the feature the graph was always pointed at: Smart Blend.
A blend is a budget — stop spending it on solved words#
Think of a 30% blend of a 500-word article: about 150 words will appear in your target language. Those 150 slots are the entire learning surface of that reading session. Every slot spent on a word you've known cold for months is a slot not spent on a word you're actually acquiring.
The old engine couldn't know the difference — it saw text, not you. The new Blend Engine v2 selector receives a compact snapshot of your knowledge, computed on your device from the same signals your spaced repetition already tracks, and applies it in a strict order:
| Your relationship to a word | What the blend does now |
|---|---|
| Mastered (graduated, long intervals, high accuracy) | Skipped — the slot goes to something you'll learn from |
| Due for review | Strongest boost — seeing it in real context is the review |
| Struggling (you keep missing it in games) | Boosted — extra encounters where they help most |
| Learning (in active rotation) | Mildly boosted — reinforcement without crowding |
| New | Chosen by usefulness — mid-frequency words first |
| Connected to your vocabulary (graph frontier) | Preferred among new words — one connection away is where learning is cheapest |
The due-word boost deserves a highlight: it turns reading into invisible spaced repetition. A word scheduled for review that appears inside a sentence you chose to read — anchored by context, understood in use — is a better review than any flashcard, and the research on contextual learning has said so for decades.
Inflections, mastery, and why the graph matters here#
Text never politely serves you dictionary forms. You mastered despertar; the article says despierta. Without the graph's inflection index (~34,000 surface-form mappings across the 17 languages), the engine would treat despierta as an unknown word and happily spend a slot on it. With it, your mastery follows the word through its forms — including irregulars like Italian va → andare.
This is also why the whole thing costs you nothing at runtime: your mastery snapshot is assembled on-device from data the app already has, attached to the blend request, and never stored server-side. No extra AI calls, no waiting — and if the snapshot can't be built in time, the blend simply proceeds without it rather than making you wait.
The immersion twist: at 90%, the logic flips#
Here's a subtlety we only saw because a real reader pushed the slider up. At 20–40%, skipping mastered words is obviously right — that's acquisition mode. But someone requesting an 80–90% blend is asking for immersion, and there the old rule backfires: your mastered words are precisely the ones you'd read most comfortably in the target language, so keeping exactly those in your native language fights the request.
So above 70%, mastered words become the lowest-priority filler: words you're learning always come first, but if the text can't otherwise reach the density you asked for, your mastered vocabulary fills the gap — zero-effort reading that gets you to real immersion instead of a patchy, under-delivered page. Below 70%, the skip guarantee is absolute.
What new users get#
Nothing about this makes the app worse before you have data. With an empty dictionary, selection runs on pure usefulness — frequency-ranked content words, evenly spread — which is exactly the configuration we benchmarked hardest. As your saved words and game history accumulate, the personalization grows in automatically: no settings, no thresholds, no setup. And if you want the blend matched to your overall level from day one, that's the companion feature: level-aware blending.