6
separate business profiles
Each inbox has its own facts, writing voice, and operating rules.
Flagship automation case study
This Gmail responder makes ready-to-review customer-reply drafts with the right business context. It never sends a customer email on its own: a human reviews, edits if needed, and presses Send every time.
That boundary is enforced in production, not left to a prompt. The service checks whether a message is eligible, validates the draft recommendation, and sends uncertain cases straight to review.
At a glance
6
Each inbox has its own facts, writing voice, and operating rules.
60s
A dedicated worker checks each configured inbox on a regular interval.
15 min
The system avoids preparing repeated replies to the same sender too quickly.
Always
Production creates Gmail drafts only. A person must press Send.
The problem
A busy inbox creates a difficult choice. You can answer quickly but risk a rushed, inconsistent response, or you can read every thread carefully and lose time before even writing a first draft.
The dangerous version of email automation takes the send button away. This design does the useful work before that moment, then deliberately stops at a Gmail draft where the relationship owner makes the final call.
The promise to your team
It can save time on the blank-page problem without ever emailing a customer by itself. Every outbound message still has a named human decision behind it.
How it works
The system does not hand every raw email to AI. It first removes obvious non-work, adds the right context, asks for a structured recommendation, and only then creates a draft for human review.
A dedicated inbox worker looks for new customer messages that have not already been handled. It leaves out routine system mail, messages your team has labeled, and messages that clearly do not need a reply.
Each Python watcher runs for one inbox and checks Gmail at its configured interval. The query excludes mail with earlier responder labels before the message is read.
Deterministic skip checks also exclude user-labeled mail, configured sender lists and Gmail categories, no-reply traffic, and automated-response headers. Errors are logged; repeated polling failures back off with a capped delay.
For an eligible message, the system reads the conversation, notices attachments, checks whether the sender was contacted recently, and brings in the facts and tone for that specific business profile.
The drafting service proposes what the message means, why it reached that conclusion, how confident it is, and a candidate reply. It is told to use the supplied business facts rather than make up an answer.
The portable responder skill receives a structured payload and is instructed to use supplied site facts, treat unsent drafts as not-yet-answered, return JSON only, and provide intent, reasons, confidence, citations, and a candidate reply.
The watcher validates the envelope and rejects malformed, incomplete, non-finite, or out-of-range values. Provider calls have timeouts, retry attempts, audit records, and fail closed when output is invalid.
Safety rules check confidence, paused or test mode, attachments, sender cooldowns, and any higher-risk mailbox action. In production, the outcome is always a labeled Gmail draft for a person to read and send.
The system records what happened, adds visible mailbox labels, and checks that the inbox workers are healthy. If a worker fails, it is restarted; if health changes, the operator receives a useful alert.
Decisions write audit events, mailbox labels, and tracked-draft snapshots. systemd restarts a worker after failure and also manages daily digests and the health timer.
The timer runs every 15 minutes and checks processes, authorization, disk, load, and queue state. Persistent incident state deduplicates alerts and emits a distinct recovery notification.
What the workflow changes
Instead of giving AI control of customer correspondence, it gives your team a prepared starting point. The repetitive reading and first-draft work shrink; the relationship judgment stays with people.
Delivery is deliberately last
The system makes inbox work easier to act on without hiding the moment when a person commits to the customer.
How the pieces fit together
Each layer has one job: watch the inbox, bring the right guidance, prepare a draft, remember what happened, or keep the service healthy.
Inbox checking
One Python worker per inbox
Separate workers keep each inbox running independently and make the source of a problem clear.
Mailbox workspace
Google Workspace Gmail
The service reads conversations, creates Gmail drafts, and uses labels as visible status markers.
Drafting assistant
Portable Claude skill
A shared drafting format works across inboxes while each profile supplies its own business knowledge and tone.
Business guidance
Separate profile files
Knowledge, voice, and rules stay isolated for every configured site rather than blending into one generic prompt.
History and evidence
Gmail labels, audit records, draft snapshots, and SQLite
Several records make the workflow traceable and help prevent the same message from being handled twice.
Day-to-day operations
systemd services and timers
The workers restart after a failure and scheduled checks keep watch when no one is looking at the server.
Six configured site profiles keep knowledge, voice, and rules files isolated. The shared skill contract accepts JSON, while optional relationship memory is added only for the relevant site.
State is held across Gmail labels, JSONL audit logs, draft snapshots, and SQLite. Bounded batches and controlled worker shutdown keep the per-inbox long-running processes manageable.
Automations and safeguards
The answer is not one prompt instruction. Delivery rules, inbox filters, validation, confidence checks, and operational monitoring all work together so a risky or unclear case stays visible for human review.
The production setting is ALWAYS_DRAFT=1. The system can prepare a reply, but it cannot send it. Your team reads, edits, and presses Send.
A responder label marks completed work. Future inbox checks exclude that message, so the visible label also acts as the no-repeat marker.
Confidence is a decision gate. Low confidence, a paused service, or test mode shifts the result to a reviewable draft instead of a stronger action.
Attachment signals and a 15-minute sender cooldown are included in the routing decision, keeping unusual or repetitive exchanges reviewable.
Archive, trash, and spam paths are separately controlled. A risky mailbox action is not quietly enabled because the drafting service ran.
Audit records, worker restarts, and a 15-minute health timer create a clear incident-and-recovery path instead of leaving a failure unnoticed.
The simple safety rule
When the system knows less than it should, it does less. It leaves a draft for someone to inspect instead of making a hidden customer-facing decision.
The production service sets ALWAYS_DRAFT=1, so even a high-confidence response is written as a Gmail draft. The router applies configured confidence thresholds, attachment and cooldown signals, plus pause and dry-run flags before delivery.
Ignore has its own higher threshold and is downgraded when uncertain, paused, or in dry-run mode. Archive, trash, and spam have separate feature gates; spam becomes trash unless reporting has been explicitly enabled.
What it replaces
Manual inbox process
Review-first responder
A team member reads every inbound thread and starts each reply from a blank compose window.
Routine noise is filtered out and a context-aware first draft waits in Gmail for a person to review.
Tone and business details depend on memory, scattered documents, or old sent mail.
Each profile supplies its own knowledge, voice, and rules every time an eligible message is prepared.
A basic rule either acts blindly or offers no useful help at all.
Clear mailbox rules, a structured recommendation, confidence gates, and human review work together.
A failed inbox automation may be noticed only after a customer reports a missed reply.
Labels, audit records, automatic restarts, and incident-and-recovery alerts create an operating trail.
The point is not to remove people from customer relationships. It is to make their review time count by placing the relevant thread, context, draft, and visible status in one familiar workspace.
That makes the inbox easier to staff across busy periods, while preserving the accountability your customers expect. A manager can see the work waiting for review instead of wondering whether an automatic system already spoke for the company.
The review queue also creates a calmer handoff between staff members. People spend their time evaluating a prepared response, not rebuilding the customer story from scattered messages and informal notes.
The result is practical help without a hidden hand on the send button.
What this means for your business
Reduce first-draft work while keeping the final customer commitment with your team.
Give each brand, business unit, or shared inbox its own facts and writing voice on a common framework.
Start sensitive email work in a low-risk draft-only mode and change policy only after review data supports it.
Give operators a clear answer to what happened to a message and why.
Apply the same review-first pattern to intake, scheduling, quoting, support follow-up, and internal requests.
The visible labels create auditability, while the 15-minute health checks provide operational monitoring without asking staff to babysit the inbox.
Every technical term used on this page, explained without jargon.
Build confidence before autonomy
AK Internet Consulting can design a review-first email workflow around your policies, customer context, approval process, and operating constraints.
Discuss a project like this