Naru AI

Translation is a legal surface, not a cosmetic one.

In a product that moves money, picking the wrong verb does not read as clumsy — it silently tells someone they are in debt.

The evidence

A load-bearing glossary fixes the terms that decide what the product is: draw becomes sacar, never prestar; put back becomes devolver, never pagar; still out becomes todavía contigo, never deuda. 734 pairs audited for loan-language drift, with zero high-severity findings.

SEAM’s community fund is a recoverable grant. Money is drawn, and it is put back, and while it is out it is still yours. Translate those three phrases with the ordinary dictionary choices — prestar, pagar, deuda — and the product silently becomes a loan, with a borrower who owes a debt and repays it.

Nothing in the interface changed. No feature moved. The legal and emotional character of the thing changed entirely, in three words, for every Spanish speaker using it — which for this product is most of them.

This is why translation cannot be the last task handed to whoever is free. The glossary that fixes those terms is as load-bearing as the schema. We audited 734 string pairs specifically for loan-language drift rather than for general accuracy, because general accuracy would have passed every one of them.

There is a mechanical trap underneath it, too. The app rebuilds lists with innerHTML on nearly every action, which destroys any translation keyed on a data attribute. Keying on exact English text and re-translating freshly inserted nodes through a MutationObserver survives that. An i18n layer that only works until the DOM is rebuilt is not an i18n layer — it is a demo of one.

And the honest part: the help screen says the translation has still not been reviewed by a native speaker. Disclosing the limit is cheaper than the class of mistake that follows from pretending there isn’t one.

Contact

Tell us what you're building.

We take on work where getting it wrong has consequences — products for children, health records, money.

No form, no tracker, nothing loaded from anywhere else — just an address.