Slack · n8n · Azure OpenAI · Outlook MCP agents · approval workflow
Overview
ARIA is a personal Slack-based AI assistant built in n8n. I can write a natural request in Macedonian, and ARIA coordinates Outlook contacts, calendar availability, and email drafting through specialized MCP agents.
A typical request is: write to a contact about today's lunch, apologize in a friendly tone, check my next free calendar slot, include that date, and draft the email in Romanian. ARIA prepares the message, shows the preview, and only sends after approval.
The public material explains the architecture and selected code patterns. It does not publish the original workflow JSON, Slack channel IDs, user IDs, credential names, n8n cloud URLs, or private mailbox data.
The challenge
Daily admin work often crosses several tools: contacts, calendar, email, files, and language translation. Doing that manually means switching context several times for one simple request.
The challenge was to make the assistant useful without making it unsafe. It needed to understand informal instructions, use the correct tools, draft in the requested language, and still keep the user in control before anything is sent or changed.
My role
I built the n8n workflow architecture, the Slack entry point, the smart processor, the routing logic, the central ARIA agent, the specialized MCP workflows, and the response cleanup layer.
I also designed the safer interaction pattern: preview first, approval second, execution last.
Workflow structure
Core modules
Slack command interface
The user talks to ARIA inside Slack using normal language. The request can be written in Macedonian while the final email is drafted in another language, such as Romanian, German, or English.
Smart processor
The processor extracts message text, Slack metadata, detected language, request category, priority, date/time context, and attachment information before the AI agent receives the task.
Smart router
The router sends simple commands to a command center and sends natural-language operational requests to the main ARIA agent. This keeps menu/status commands separate from tool-heavy actions.
Specialized MCP agents
ARIA does not keep all operations inside one large workflow. Email, calendar, contacts, attachments, drafts, and folders are separated into focused MCP workflows, each responsible for one operational area.
Approval before sending
Email sending is not treated as a blind automation. ARIA drafts the message, shows the text for review, and only sends after the user approves. This is important for trust and safe daily use.
Response analyzer and cleanup
Before the final Slack response is posted, the workflow routes success and error cases separately. Successful responses are cleaned so they read like normal assistant messages instead of raw AI output.
Technical decisions
Slack as the control surface
Slack keeps the assistant available in the same place where the user already works. It also gives a natural place to show previews and confirmations before actions are executed.
Separate MCP workflows instead of one workflow
Email, contacts, calendar, attachments, drafts, and folders are split into specialized MCP agents. This makes each capability easier to test, explain, and replace without touching the full system.
Language translation is part of the workflow
The assistant can receive the instruction in one language and draft the final email in another. This matters because the user can think in Macedonian while communicating professionally in German, Romanian, English, or another target language.
Human approval is a required safety gate
The workflow is designed around preview and confirmation before sending. That prevents accidental email delivery when the assistant misunderstood a contact, date, or tone.
Tech stack
Proof / Evidence
This case study is based on a private n8n system. The public proof focuses on architecture, design decisions, and sanitized snippets. Original workflow exports, credential IDs, Slack IDs, n8n cloud endpoints, contact data, and mailbox data are not published.
Public proof shown on this page
A sanitized architecture diagram showing ARIA as a Slack-based AI assistant with smart processing, routing, specialized MCP tools, approval preview, and Slack confirmation.
Live system
Public code & documentation
Sanitized n8n architecture patterns for a multilingual Slack AI assistant with Outlook email, calendar, contacts, attachments, drafts, folders, approval-based sending, and specialized MCP agent orchestration.
Code excerpt: approval gate before sending
The important safety rule is simple: ARIA may draft an email, but sending requires explicit user approval from the preview step.
// Approval gate pattern for email actions in a Slack assistant.
// The assistant can draft the message, but sending is blocked until
// the user confirms the preview.
function buildEmailPreview({ recipient, subject, body, targetLanguage }) {
return {
type: "email_preview",
status: "awaiting_approval",
recipient,
subject,
body,
targetLanguage,
actions: ["approve_send", "edit_draft", "cancel"],
};
}
function canSendEmail(state) {
return state.type === "email_preview" && state.status === "approved";
}
if (!canSendEmail(currentState)) {
return {
action: "show_preview",
message: "Please review and approve the email before sending.",
};
}
return {
action: "send_email",
tool: "Email Agent MCP",
payload: currentState,
};Full sanitized example in snippets/approval-gate.js. The repository also documents the smart processor, router, MCP agent map, and response cleanup layer.
Publication note
The public repository is a documentation and snippet reference. It does not include original workflow JSON, credential references, personal contact data, Slack workspace identifiers, tenant configuration, private n8n cloud endpoints, or mailbox content.