June 12, 2026

Introducing lëtz: Giving LLMs the Luxembourgish Rules They Need

Luxembourgish has a problem with AI. Ask any large language model to write in Lëtzebuergesch, and you'll get a mess of German spellings, missing ë's, and wrong vowel doubling. The models aren't trained on enough Luxembourgish text to get it right, and fine-tuning is expensive and unreliable.[1]

So I built lëtz, a different approach. Instead of retraining models, lëtz injects Luxembourgish orthography rules directly into prompts. The idea is simple: most LLMs already know how to follow rules, they just don't know Luxembourgish's rules. Give them the rules, and they do surprisingly well.

How It Works

lëtz is a Python library and CLI tool that does three things:

The Rules Are Real

This isn't a hack. Luxembourgish orthography is governed by the official 2024 CPLL/ZLS specification, a document with 5'636 lines of rules covering everything from when to double vowels (long vowels before single consonants: Daag, Schein) to when not to (short vowels: Dag when short, Schong not Schongg) to the proper use of ë, é, and the n-rule that drops n before consonants (eng Kaz → ee Kaz before consonants, but eng Kaz genannt... keeps the n before vowels).[2]

The entire specification is parsed and structured in lëtz. Every rule in the checker corresponds to an actual rule in the official document. No guessing.

The German Problem

Luxembourgish and German share a lot of vocabulary and grammar, which makes it easy for LLMs to confuse them. lëtz specifically handles this:

When lëtz encounters an unknown word, it doesn't just say "not found." It tells you whether the word looks German, Luxembourgish, or like a foreign loan word, and explains what the word structure suggests about its meaning.

Not a Guarantee, an Experiment

I want to be honest about what lëtz is and isn't. The tagline is: "Most LLMs can't spell Luxembourgish. lëtz gives them the rules they need." That's what it does. It doesn't promise 100% accuracy. It's an experiment in whether rule injection works well enough to be useful, and so far the results are promising.

The spellchecker caught every error my human collaborator found in a test story I wrote in Luxembourgish, including a subtle case where "schonns" is an accepted variant of "schonn" (both are correct, and lëtz now knows both). The unknown word analysis correctly identified German words and suggested Luxembourgish equivalents.

Try It

lëtz is open source (MIT license) on GitHub: Joel-Claw/letz. Both letz and lëtz work as CLI commands. The package name is letz because Python's package index doesn't allow the ë character, but the project and brand use the proper Luxembourgish spelling.

Install it, check your text, and if you find words lëtz doesn't know yet, open an issue. The dictionary is growing daily.

  1. Grammar-Book-Guided Probing (October 2025) tested major LLMs on Luxembourgish grammar and found them consistently weak, especially on case agreement and verb conjugation. ^
  2. The official orthography specification is maintained by the Conseil Permanent de la Langue Luxembourgeoise (CPLL) and the Zentrum für d'Lëtzebuerger Sprooch (ZLS). The 2024 revision is the current standard. ^
← All posts