
Own product · 2026 - today
Defining what “A1” means, precisely enough to build on
A German reader that rewrites real news to six CEFR levels. The hard part was never the reader. It was making “simplified” mean something a teacher would accept.
Overview
Why I built it
Learners hit the same wall around A2. Textbook dialogues stop being useful and real news is still out of reach, so people stall in between with nothing to read.
The obvious product is a reader that simplifies articles. Anyone can build that in a weekend now: send the text to a language model, ask for a simpler version, print the result.
The part that is actually hard
Ask a model to “simplify to A1” and it will happily produce something. Whether that output is A1, and not B1 with short sentences, is a different question entirely, and it is the only question that matters. A learner who is repeatedly handed text above their level does not get a slightly worse product. They conclude they are not good at languages and stop.
So the work went into making the level claim defensible: deterministic pre-processing, entity protection so names and numbers survive the rewrite, paragraph-level rewrites with a critic-and-revise loop, readability scoring, and coverage checks against the Goethe Wortlisten. The CEFR mapping is anchored to the Companion Volume descriptors rather than to a vibe.
The decision I am least comfortable with
Output quality is currently judged by a panel of three models, and that is a language model grading a language model, which is circular. The code says so in as many words.
The honest fix is human raters: qualified DaF teachers scoring a calibration corpus. That infrastructure is built and the raters are not yet recruited, so today the quality claim rests on metrics and my own judgement. I would rather write that down than describe the panel as validation.
What it does
Real articles from Deutsche Welle, rewritten to A1 through C2. Click any word for a contextual translation with part of speech and alternatives. There is no request on click, because the word maps are computed ahead of time and a lookup that takes 400ms breaks the reading flow that the whole product exists to protect.
Saved words go into a spaced-repetition deck. The interface runs in ten languages, glosses in more than twenty.
Where it is
Live, free to try without an account, and openly labelled a work in progress. The banner on the site says so. A paid tier exists for unlimited articles.
What I will not claim is that it moves anyone between CEFR levels. That needs reading volumes well beyond what a typical user accumulates, and the research does not support the shortcut. It supports reading fluency and vocabulary within a level, which is a smaller claim and a true one.
Screenshots



Technology
Frontend
- Next.js
- TypeScript
- Tailwind CSS
- i18n (10 locales)
Backend
- Supabase (Postgres)
- Auth + RLS
- Cron pipeline
- Postmark
Pipeline
- LLM rewriting
- Critic-and-revise loop
- Readability scoring
- Goethe Wortliste checks
Infrastructure
- Vercel
- spaCy sidecar
Timeline
Project Start
2026
Duration
Ongoing
Delivered
Ongoing
Have a product idea where the hard part is not the code, but working out what “good enough” even means? That is exactly what a Sprint settles, before any budget is committed.
Start here