Series · 7 parts Published June 2, 2026

Translation relay

A serverless relay that lets a small team serve customers in any language. It detects the language of each incoming message, translates it to your team’s language, and translates the staff reply back — keeping the conversation flowing both ways. It keeps names, numbers, and prices exact, and flags anything it’s unsure about for a human. A staff member always writes the actual reply. Seven posts on the same system — one diagram at a time — with an engineering reference at the end.

  1. 01

    A translation relay on AWS for a few dollars a month

    The whole system on one page — an intake, a translate-in piece, and a translate-back piece, plus the rule that a human always writes the reply.

  2. 02

    How a message gets its language detected

    A message arrives by email or the web widget, gets cleaned of signatures and quoted history, and the relay reads which language it’s in — with a cheap first pass and a careful fallback for short or mixed-language notes.

  3. 03

    How a message gets translated for staff

    The relay translates the customer’s message into your team’s language, shows the original and the translation side by side, and highlights any passage it wasn’t sure about so a person can check the meaning.

  4. 04

    How a reply gets translated back

    The staff member writes the reply in their own language. The relay translates it back into the customer’s language, shows a plain-English check of what it will send, and waits for a person to press send.

  5. 05

    How names and prices stay exact

    Brand names, product names, account IDs, numbers, and prices are locked before translation and put back after, so the machine can never quietly change a figure or rename your product.

  6. 06

    What the translation relay costs

    A few dollars a month at SMB volume. Most of the bill is the Bedrock translate calls; the cheap model handles almost everything and the stronger model only runs on the tricky passages.

  7. 07

    Engineering reference: the translation relay architecture

    Same system, drawn purely for engineers. Service names, resource identifiers, region, Bedrock model IDs, Lambda inventory, IAM scopes, the SES inbound rule set, the SQS lanes, and the DynamoDB schemas.

What is a translation relay?
A small serverless system that lets a team serve customers in any language. When a message comes in a language your staff doesn’t read, it detects the language, translates it to your team’s working language, and shows the staff member the original and the translation side by side. The staff member writes the reply in their own language, and the relay translates it back into the customer’s language before it goes out. It keeps names, numbers, and prices exact, and flags anything it’s unsure about for a human to check.
How much does it cost to run?
About $3/month at typical small-business volume (around 600 messages a month). The fixed cost is essentially zero. The variable cost is dominated by the Bedrock translate calls, which are small per message. At 5,000 messages a month the bill lands around $20.
Which AWS services does it use?
Lambda (Python 3.14, arm64) with Function URLs for the web widget and the send-reply endpoint, SES inbound + outbound for email, DynamoDB on-demand for conversation threads, S3 (with versioning) for the glossary and raw messages, SQS with a dead-letter queue between detect and translate, Secrets Manager, Parameter Store, CloudWatch Logs (7-day retention), AWS Budgets, and Bedrock (Claude Haiku 4.5 for everyday detect-and-translate, Claude Sonnet 4.6 only for passages the cheap path flags as unsure). No API Gateway, no NAT Gateway, no always-on compute.
Where does the glossary live?
In a Google Sheet in a Drive folder. One row per protected term: your brand names, product names, account IDs, and any phrase that must never be translated or altered. A small drive-sync Lambda mirrors the sheet to S3 every 15 minutes; the relay reads from S3 to keep Drive API calls predictable and to get S3 versioning for free.
Does a human always write the reply?
Yes. The relay never auto-replies to a customer. It translates the incoming message in so staff can read it, and it translates the staff member’s reply back out, but the words of the reply are always written by a person. The relay also shows the round-trip — it translates the staff reply back to the staff language so they can sanity-check the meaning before it sends.
What happens when the relay isn’t sure?
Every translation comes back with a confidence read per passage. Low-confidence spans are highlighted in the staff view with the original text next to them, so a person can judge whether the meaning carried. Slang, mixed-language messages, and ambiguous short replies get routed to the stronger model (Claude Sonnet 4.6) for a second pass, and if it’s still unclear the message is flagged for a bilingual teammate before anything goes out.
How does the customer experience it?
From their side it just works — they write in their own language and get a reply in their own language, usually within the same response time as any other ticket. They never see the translation step. The thread keeps both the original and the translated text on every turn, so a bilingual colleague who joins later can read exactly what was said in both languages, and the audit trail shows every machine translation and every human edit.
All posts