Email Auto-Response System

Triage, Suggested Replies and AI Drafts

Design an assistant that connects to a user's mailbox, decides which new emails need a reply, offers three one-tap replies, writes full drafts in the user's own style, and sends automatic replies only where it is safe to do so.

Overview

An email assistant sits beside a user's mailbox. When mail arrives it answers three questions: does this email need a reply at all, what are two or three short replies the user could send with one tap, and, if the user asks, what would a full reply in their own words look like. A small set of users also want the assistant to reply on its own, for example an out-of-office notice or an acknowledgement from a shared support inbox.

Two things make this harder than calling a language model. The first is volume against value: most mail is newsletters, receipts and notifications that need no reply, so running an expensive model on every message wastes money and shows useless suggestions. Google's Smart Reply paper describes a cheap triggering model that runs first and lets only about 11% of messages through to the response model. The second is trust: a reply goes out under the user's name. The design keeps a person in the loop for everything the model writes, and allows fully automatic replies only for fixed templates that follow the email standards for auto-responders.

Questions to ask first

  • Which mail providers? — Gmail and Outlook through their APIs, with the user's OAuth consent
  • Suggest, draft, or send? — Suggest and draft for everyone; send automatically only for opt-in templates
  • How many users and emails? — 1 million mailboxes, 50 emails received and 20 sent per user a day
  • How fast? — Short replies ready when the email is opened; a draft starts streaming within 2 seconds
  • May we store email bodies? — No: bodies are processed in memory; only derived data is kept
  • Enterprise needs? — Opt out of shared models, a sensitive-mail list that never gets drafts, audit logs

What you will be able to do

  • Explain why a cheap triggering step runs before any expensive model, and size both with numbers.
  • Pick three short replies that are not three ways of saying yes.
  • Build a writing-style profile without storing the user's mail.
  • Send automatic replies that never loop, never answer a mailing list, and reach each sender at most once a week.
  • Defend the design against instructions hidden in an incoming email.

Key concepts

  • Triggering model
  • Fixed response set
  • Intent diversity
  • Style profile
  • Thread summarization
  • RFC 3834 auto-replies
  • Once per sender per 7 days
  • Indirect prompt injection
  • Transactional outbox

Functional requirements

  • Receive a notification for each new email in a connected mailbox and fetch it through the provider API
  • Classify each email: needs a reply, meeting request, FYI, newsletter or automated, sensitive
  • Offer up to three short replies with different intents (for example yes, a question, no)
  • Stream a full draft reply on request, using the thread, the user's style and calendar availability
  • Never offer drafts for mail the user or admin marked sensitive (legal, HR, finance)
  • Send opt-in automatic replies from fixed templates, following RFC 3834
  • Record which suggestions were used and how much the user edited a draft

Non-functional requirements

  • Triage within 5 seconds of the provider notification (a target we chose)
  • Short replies ready before the user opens the email; if not ready, show none rather than wait
  • First draft tokens within 2 seconds, full draft within 10 seconds (targets we chose)
  • No email body stored after processing; derived data only, deletable per user
  • An automatic reply is sent at most once per sender per rule per 7 days, and never twice for the same email
  • A provider outage or model outage delays suggestions; it never sends anything unexpected

Interview questions

  • How do you avoid running an expensive model on every email?
  • How do you choose the three short replies?
  • How do you match the user's writing style without storing their mail?
  • How do you make automatic replies safe?
  • What if an incoming email contains instructions aimed at your model?
  • How do you receive new mail for a million mailboxes?
  • How do you support meeting requests?
  • How do you know the assistant is any good?

Sign up free to read the full topic

More System Design topics

Start free on Cariara · Coding problems · System design studio