anthony taguest·sydney --:--

keep the model in its lane

updated Jun 21, 2026

Across two projects I kept arriving at the same rule: let the model do the part only a model can, and compute everything that can be computed. The interesting engineering isn’t the API call — it’s drawing that line.

In the tone translator, the model translates and explains register nuance — genuinely fuzzy, linguistic work. But translation direction (JP→EN vs EN→JP) isn’t fuzzy: I detect the script with a Unicode regex in code, because a model asked to “figure out the direction” will occasionally echo Japanese back as Japanese. And quality isn’t a vibe — a stronger model grades outputs against a rubric, and I trust the delta between runs, not any single score.

In riichi the rule is sharper still. The teaching features are powered by Claude, but the correct answer is computed — shanten and scoring come from battle-tested libraries, so the Hand-of-the-Day answer can’t be wrong; the model only writes the explanation. The AI opponents aren’t a model at all — they’re hand-written rules, because they act dozens of times a game and a model there would blow the budget for zero teaching value.

The throughline: a model is a narrator and a fuzzy-judgment engine, not a source of truth. When something is computable, compute it — it’s cheaper, faster, deterministic, and testable. Reserve the model for the part that’s actually fuzzy. Knowing what not to hand the model is half of building with one.

the hub · warm terminal