Blog
Notes on Thai-English translation from the ThaiPo team: words that do not translate, how Thai people actually chat, and what a translator with memory changes.
- A translator bot must never answer the question
14 July 2026 · Someone types 'can you pick me up at 7?' and the bot replies 'sure!'. The worst failure mode a translation bot has, the night our own output poisoned our context and messages started doubling, and the five layers that keep the model a wire, not a participant. - The boring knobs that cut our LLM bill by two thirds
14 July 2026 · No clever tricks: a shared prompt-cache prefix with a one-hour TTL, the batch API for everything that can wait, incremental instead of re-mining, and prepaid credits with auto-reload off so the worst case is an outage, not an invoice. Real numbers from a real product. - The cursed inputs of chat translation
14 July 2026 · Stickers that arrive as text plus an emoji array, bare @-mentions, 555 as laughter, messages that are only a question mark, and the day our own bot's name broke language detection. A field guide to the inputs that broke us, each with the fix. - CI for prompts: how we stop translation quality walking backwards
14 July 2026 · Every prompt version is re-scored against the corpus before shipping, an LLM judge gates releases, a blind eval asks whether a Thai reader could tell, and the time an empty eval reported 0% forever. What regression testing looks like when the unit under test is language. - How we built live translated video calls with no server in the hot path
14 July 2026 · Sub-second captions on a phone call between Thai and English: each phone streams its own mic straight to a locked Gemini Live session, captions ride the WebRTC data channel, and our servers never touch the audio. The design, and the field bugs that shaped it. - Our whole backend is files in a bucket: a Kappa architecture on object storage
14 July 2026 · ThaiPo has no Kafka and no event bus. An S3-compatible bucket is the append-only log and the source of truth; Postgres holds only derived account state, and Redis is a disposable cache we can rebuild from the log. How it works and what it costs. - How we make English sound like native Thai (and prove it)
14 July 2026 · Prompt versions with regression tests, a blind 'could a Thai tell?' eval, calque guards, and the subject-dropping bug that turned 'he misses you' into 'I miss you'. The engineering behind ThaiPo's Native Reply. - Paiboon phonetics, explained for people who just want to read Thai
13 June 2026 · Why 'khao' can mean rice, white, news, he, or knee, and how the Paiboon system fixes it with tone marks and honest vowels. A practical intro for Thai learners. - ThaiPo vs Google Translate: where dictionary translation breaks in Thai chat
13 June 2026 · Google Translate is great for signs and documents. Real Thai chat is another story: particles, slang, beer brands that are also animals, and words like เกรงใจ. Here is where each tool wins. - What งอน means (and why your translator gets it wrong)
13 June 2026 · งอน is not anger, and translating it as 'sulking' starts fights that never needed to happen. What the word really means, how ง้อ fits in, and how to respond.