HOLA LEO_
Case study

AI language tools, in production — built for a need no existing app could see.

RoleProduct design, build & daily use
ClientMyself — preparing the Goethe C1 exam
Year2026
StackNode.js · Express · SQLite · Anthropic API · Railway

The same process from "How I work" — click a stage to see it in action.

SPECIFIC NEEDGoethe C1ONE QUESTIONnew, or predictable?CODE + MODELeach does its jobTOOL FAMILYsame stack→ daily use → the exam itself
The whole system at a glance — one question runs through everything.
01 · Understand Duolingo and Anki exist. I had tried them all — and they weren't built for my need.
GENERIC APPSwhole languages, broad audiencesMY NEEDnarrow and exactthe gap noapp covered
Built for everyone usually means built for no one exactly.

Preparing an advanced German exam is a specific problem: drilling irregular verbs in context, building vocabulary from your own exam material, training the structure of argumentative writing. Generic apps are built for broad audiences and whole languages at once. I knew exactly what wasn't working because I was the user — you can't see a need from the outside.

02 · Decide The core call: what runs on deterministic code, and what earns a call to the AI model.
HAS TO BENEW?noCODEverbs · FSRS · timersyesAI MODELfresh contextspredictable = free · new = worth the call
One question filters every feature.

AI is not the answer to everything — it's a component with a cost. So each feature had to justify its place: verb conjugations are fixed data (309 irregular verbs, preloaded, zero API cost); spaced repetition is a solved algorithm (FSRS, deterministic); but generating fresh, themed example sentences for the exact word you're struggling with — that's where the model earns its keep.

The key call

"Use AI only where it creates what code can't: everything predictable runs on deterministic logic; the model generates what has to be new."

For the interaction layer, I borrowed a proven pattern instead of inventing one: Monkeytype-style typing mechanics, because typing full sentences trains production, not just recognition.

03 · Build Not one app — a small family of tools sharing one architecture.
VERBTRAINERSATZGERÜSTEEXAM TOOLSONE STACKNode · Express · SQLite · Railway
A family of tools on one architecture.

Verbtrainer: conjugation drilling for 309 irregular verbs with AI-generated themed sentences. Satzgerüste: vocabulary with FSRS spaced repetition and sentence typing. Plus exam-specific tools for writing practice with official scoring criteria and timers. All on the same stack — Node.js, Express, SQLite, deployed on Railway with API keys server-side — so every new tool ships faster than the last.

04 · Make it stick I'm user number one — and the feedback loop is daily.
USE · 7 AMFRICTION NOTEDFIX · EVENINGthe tightest feedbackloop possible
User number one, every single day.

Adoption here means something stricter than downloads: a tool either survives my own daily study sessions or it gets rebuilt. Features that looked clever but didn't help retention were cut; the friction I felt at 7 a.m. became that evening's fix. It's the tightest user-feedback loop possible — and the same discipline I'd bring to anyone else's product.

→ Result Tools in production — trusted with my own C1 exam.
IN PRODUCTIONlive todayGOETHE C1June 2026trusted with my own exam
The honest measure of the system.

The tools run live today and carried my preparation from B2 toward the Goethe C1. That's the honest measure of this system: I trusted my own exam to it. And the architecture beneath it — knowing precisely when AI adds value and when plain code does the job better — is the judgment companies are hiring for in 2026.

Try it

The tools, in hand

One screen is a screenshot; the other one works. The mini-demo below uses the real typing engine with two pre-written sentences — no AI calls, just the feel of the actual app.

App 01 Satzgerüste — vocabulary, in context

Satzgerüste home screen: choose automatic study or add new word definitions.
01Home — study on autopilot, or add new words.
Satzgerüste word selection screen: choosing which words enter the session, each shown with its level.
02Picking the words for a session, level included.
Satzgerüste waiting screen while the study sentences are being generated.
03The wait — sentences being generated.
Satzgerüste typing screen: retyping the proposed sentence, with the German definition and a short Spanish gloss.
04Typing the sentence — German definition, short Spanish gloss.

App 02 Verbtrainer — irregular verbs, drilled

Verbtrainer home screen: choosing a learning mode.
01Home — choosing a learning mode.
Verbtrainer automatic session: words can be deselected before studying.
02Automatic session — skip the words you don't need.
Verbtrainer manual session: picking verbs by category.
03Manual session — verbs, picked by category.
Verbtrainer study screen: typing the sentence with the conjugated verb, here in Präteritum, to anchor different tenses.
04Typing the conjugated verb — here, Präteritum.

Live Try the real typing engine

VERBTRAINER
Automatische Wiederholung
2 Verben · gehen · nehmen

Two irregular verbs are due for review. Retype each sentence exactly — strict mode, like the real thing.

LIVEVerbtrainer — the real interaction, full size. Strict typing, spaced-repetition pacing.
Next case Four years, one process, many missions →