Skip to main content
Lexikal

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

Lexikal: article reader with CEFR level controls and a contextual word translation
Lexikal: article reader with CEFR level controls and a contextual word translation
Lexikal: mobile article reader and language-level selection
Lexikal: landing page with CEFR level selector and live word-click demo
Lexikal: landing page with CEFR level selector and live word-click demo

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

What will
you create?

Prefer to talk?Book 30 minutes
1
2
I need pick one. The project should start when?.
Rather just write?