Multilingual Gmail support drafts with Slack triage
When a non-English support email lands in Gmail, an agent translates it, drafts a reply in the customer's language, and pings Slack with the gist.
I want an agent that helps my English-speaking support team handle customers who email us in other languages. It should watch a designated Gmail support inbox or label, and whenever a new non-English email lands, translate it, draft a reply in the customer's language, and let a human sanity-check and send.
Trigger: poll Gmail for new messages in the support inbox. Expose the Gmail label or search query as a workflow parameter, so I can point it at something like a Support label or a search such as in:inbox is:unread newer_than:1h. Default to the 20 newest unread messages per run so a backlog can't blow things up.
On each new message the agent should:
1. Use Gmail Get a Message to pull the full body, subject, sender, and thread ID. Decode the body to plain text before sending it to the model.
2. Send the email to AI Generation (chat-completion) with one structured prompt that returns JSON containing: (a) detected_language as the ISO code and human name of the customer's language; (b) is_english as a boolean; (c) english_translation of the full email body; (d) english_summary as a single sentence describing what the customer wants; (e) urgency tagged as urgent, normal, or low based on cues like outage language, billing failures, deadlines, or escalation threats; (f) english_reply, a clear and on-brand draft response in English. The voice and policy note (tone, signature, never-promise list, reply length cap) should be a workflow parameter the user fills in, and the system prompt should tell the model to preserve product names and proper nouns verbatim.
3. If is_english is true, skip the rest of the workflow for this message. Do not create a draft, do not post to Slack, do not change labels. The whole point is to only act when translation is actually needed.
4. Otherwise, make a second AI Generation call that translates english_reply back into the customer's detected_language. Tell the model to match the customer's tone and formality, keep product names and proper nouns untouched, and not add any explanation, only the translated reply body.
5. Use Gmail Create a Draft to attach the translated reply as a draft on the original thread. Set the In-Reply-To and References headers and the threadId so it threads correctly, and address the draft to the original sender. A human will open Gmail and hit send. Never auto-send.
6. Use Gmail Modify Message Labels to add a review label to the original message, defaulting to Translated / Needs review. Make the label name a workflow parameter and have the agent create the label on first run if it does not exist, so the same thread is not processed twice on the next poll.
7. Use Slack Bot Send a Message to post a heads-up in our support triage channel. The message should include the customer's name and email, the detected language (human name), the urgency tag, the one-sentence english_summary of what they are asking, and a direct link back to the Gmail thread so the on-call teammate can jump in, read the translated draft, and send. The triage channel ID is a workflow parameter.
Configurable inputs to expose at the top of the workflow:
- Gmail label or search query that defines the support inbox - Voice and policy note (tone, signature, never-promise list, reply length cap) - Max messages processed per run (default 20) - Slack triage channel ID - Review label name (default Translated / Needs review)
Guardrails: never auto-send, only ever leave a draft for a human to send; never modify or delete the customer's original message beyond adding the review label; if the model is uncertain about the detected language or the translation, still leave the draft but say so in the Slack message so the reviewer knows to look closely; and always do the customer-facing reply in their original language, never reply in English to a non-English email.
Additional information
What does this prompt do?
- Watches your shared Gmail support inbox or label and only acts when a customer writes in a language other than English.
- Translates the incoming email into English, pulls out the gist in one line, and flags how urgent it looks.
- Writes a clear, on-brand reply in your voice and translates it back into the customer's language, keeping product names and tone intact.
- Saves the translated reply as a Gmail draft on the original thread, tags the thread for review, and posts a Slack note so a teammate can sanity-check and send.
What do I need to use this?
- A Google account that can read and draft email in your shared support inbox.
- A Slack workspace and a channel where your team handles support triage.
- A short voice and policy note (tone, signature, things you can or cannot promise) so the drafts sound like your team.
How can I customize it?
- Point it at the exact label or search filter that defines your support inbox, like a Support label or a forwarded shared address.
- Edit the voice and policy note to match how your team writes and to set guardrails on refunds, ETAs, or anything sensitive.
- Pick which Slack channel gets the heads-up and tweak what counts as urgent so only the real fires get flagged.
Frequently asked questions
Does this send replies automatically?
What happens if the customer already wrote in English?
Which languages does it handle?
Will it preserve our product names and brand terms?
How do I change which Slack channel gets the alerts?
Reply in your customer's language without a Google Translate detour.
Connect Gmail and Slack once, and Geni handles detection, translation, drafts, and triage every time a non-English ticket lands.