Video walkthrough
Before you start, watch this short walkthrough. It covers the core idea, why this setup is worth the time, and how the daily flow looks in practice. The written guide below fills in the technical detail — but the video gives you the intuition.
AI Executive Assistant — Concept and daily flow
Executive summary
What it is. A fully integrated executive operations layer. Every working day it reads your inbox, checks your calendar, pulls your open Notion tasks, classifies and prioritises emails, generates meeting briefs, drafts replies straight into your Drafts folder, creates and updates tasks, writes a daily plan to Notion, and tracks the state of your projects.
What it is not. An autonomous agent that sends mail or moves things in your inbox without asking. It reads, drafts, plans, and tracks. You stay in control of every outbound message and every state-changing action.
What you'll have at the end of this guide. A working assistant on your machine, personalised to you, that runs from a single command — morning briefing — and produces a finished daily plan in Notion plus reviewed-but-unsent draft replies in your inbox.
The setup is built around a starter CLAUDE.md file that runs an interactive setup the first time you open it in VS Code. You don't have to fill in any context files manually. Claude asks you a series of guided questions inside VS Code — your name, role, team, company, primary goal, current quarter focus — and writes all the personalised configuration files for you. The core executive assistant functionality (email triage, daily plan, draft generation, task extraction, project tracking) is already built in. The interactive setup just personalises it for you.
What the assistant does
Daily operations
- Morning briefing (08:30) — full triage of overnight inbox, calendar read, meeting briefs for today and tomorrow morning, Notion task pull, daily plan written to Notion, drafts saved to your inbox.
- Midday and afternoon triage (11:00, 14:00) — new emails since the last run, incremental task and project updates.
- End-of-day sweep (17:00) — unresolved items surfaced, tomorrow's calendar previewed, drafts queued for review.
Email management
- Classifies every email: Escalation, Unanswered Critical, Re-opened, Unread Needs Reply, Delegatable, Waiting/FYI, Noise.
- Detects sent-mail gaps — emails you sent with no reply received (14-day lookback in the morning, shorter for other runs).
- Generates draft replies and saves them directly to your Drafts folder.
- Never sends, marks as read, moves, or deletes anything without your explicit per-session instruction.
Calendar, tasks & projects
- Reads today's events and the first half of tomorrow.
- Generates proactive meeting briefs for every meeting — even with vague titles, inferred from recent email history with the same people.
- Creates Notion tasks from triage, marks tasks done when evidence of completion appears in email.
- Maintains a Notion Projects database as a live tracker — milestones, blockers, deadlines, stakeholders.
Memory & continuity
- Persistent file-based memory across sessions — the assistant remembers your preferences, writing rules, project context, and feedback you've given it.
- Loads your personalised context on every session start. You don't re-explain who you are.
The interactive setup — what makes this different
Most "AI assistant" setups ask you to manually fill in a long list of configuration files before anything works. This one doesn't. The starter CLAUDE.md file is built so the setup itself is a conversation. You can grab the file directly from Section 09 of this guide — there's a one-click download.
Once you've installed VS Code and Claude Code (Section 06) and saved the starter CLAUDE.md into your working folder, you open the folder, type a single message, and Claude walks you through everything else — including writing all the supporting rule and skill files for you.
Seven short blocks, asked one at a time, with confirmation between each:
- Who you are — name, role, company, location, working hours, language.
- What you do — your role in 2–3 sentences, main clients, industries, and your #1 priority right now.
- Your team — first escalation contact, immediate team, who owns which domain, who you don't want auto-drafts going to.
- Your stack — Outlook or Gmail, Notion workspace, other tools.
- Communication style — writing rules, formality, things you specifically don't want.
- Current quarter focus — top priorities, active major projects, recurring meetings.
- Goals — 90-day and end-of-year success.
After you've answered the blocks, Claude generates all your personalised files automatically: context/me.md, context/work.md, context/team.md, context/current-priorities.md, context/goals.md, plus your communication-style rule, delegation routing, and other config — and then flips the assistant into operating mode.
The pre-built core stays the same for everyone. Email triage, daily plan, draft generation, task extraction, project tracking, meeting briefs — these are already built into the starter files. The interactive setup only personalises the layer on top, so you can have a working assistant in roughly half an hour after the technical install is done.
Once setup is complete, Claude has a clear understanding of who you are, what you do, and how you work. You can ask it to build new skills on top — for example: "build me a skill that drafts a weekly status report from my Notion projects every Friday at 16:00", or "build a skill that prepares board pack notes the day before each board meeting". This is how you turn the executive assistant into your own personalised AI agent over time.
System architecture
The stack
| Component | Detail |
|---|---|
| AI model | Claude Sonnet 4.6 (or current latest) |
| Interface | Claude Code — VS Code extension |
| Provider | Anthropic — Claude Pro or Claude for Teams |
| Email integration | Outlook MCP or Gmail MCP (Gmail is easier — see Section 07) |
| Notion integration | Notion MCP — built-in connector in Claude Code, no install needed |
| OS | Windows 11 or macOS |
| Runtime | Node.js v18 or later |
Folder structure
Everything lives in a single working folder on your machine — call it AI Agents or anything else. You'll create this in Section 06.
What lives where
- Skills — modular playbooks the assistant runs (morning briefing, inbox triage, etc.). Pre-built. Same for everyone.
- Rules — hard limits and style preferences (no sending email, communication tone, output format). Pre-built defaults; personalised lightly during setup.
- Context — who you are, your team, your priorities. Written for you during setup.
- State — your live data. Lives in Notion (5 databases), not on your local machine.
Prerequisites
Tick these off before starting. Most people will already have several of these.
Accounts
- Required Claude Pro account at claude.ai (or Claude for Teams / Enterprise via your 1SP admin).
- Required Microsoft 365 / Outlook or Gmail / Google Workspace account.
- Required Notion account with admin access to a workspace where you can create new databases.
- If using Outlook Access to your IT person — the Outlook setup needs an Azure App Registration that they'll handle for you (see Section 07).
Software
- Required VS Code installed — code.visualstudio.com
- Required Claude Code VS Code extension installed (search "Claude Code" in VS Code Extensions).
- Required Node.js v18 or later — nodejs.org (the LTS version is fine).
- Recommended Git installed — git-scm.com (helpful but not strictly required).
Files
- Required The starter
CLAUDE.mdfile — available for download in Section 09 of this guide. This is the only file you need; Claude generates the rule and skill files automatically during the interactive setup.
Installation steps
This section gets the local environment running. Email and Notion connections come in the next two sections.
-
Install VS Code and Claude Code
Download VS Code from code.visualstudio.com. Open it, go to Extensions (Ctrl+Shift+X / Cmd+Shift+X), search "Claude Code", install the official Anthropic extension, and sign in with your Claude account when prompted.
-
Install Node.js
Download the LTS version from nodejs.org and run the installer with default settings. After installing, open a terminal (PowerShell on Windows, Terminal on macOS) and verify:
terminalnode --version npm --versionBoth should print a version. Node should be 18 or higher.
-
Create your working folder
Pick a location and create the folder. Example for Windows:
powershellmkdir "$env:USERPROFILE\AI Agents" cd "$env:USERPROFILE\AI Agents"macOS:
terminalmkdir -p ~/AI\ Agents cd ~/AI\ Agents -
Save the starter
CLAUDE.mdinto your folderJump to Section 09 and click Download CLAUDE.md. Move the downloaded file into the working folder you just created. That's the only file you need to drop in manually — Claude will generate the
.claude/rules and skills folders for you during the interactive setup in Section 10. -
Open the folder in VS Code
In VS Code: File → Open Folder → select your
AI Agentsfolder. Open the Claude Code panel from the side bar.Sanity checkIf Claude Code is set up correctly, you should be able to type a message in the panel and get a response. If it doesn't respond, check that you're signed in (top right of VS Code) and that the extension is enabled.
Email setup — Outlook or Gmail
This is the most variable part of the setup, depending on which email system you use and what your IT department allows. Read both options before deciding.
If your IT can grant Azure App permissions: use Outlook directly — it's the cleanest setup since most 1SP people are on Microsoft 365.
If Azure access is blocked or you'd rather avoid the IT request: set up a dedicated Gmail account, forward your Outlook mail to it, and run the assistant against Gmail. It's a workaround, but it's faster and entirely self-service. You'll still need to draft replies in Outlook directly when you want to send from your real address — but the triage, daily plan, and task extraction all run normally against the Gmail copy.
Option A — Outlook (with IT support)
The Outlook MCP server is the open-source one maintained by Ryan Yaker: github.com/ryaker/outlook-mcp. Follow the install instructions in that repo — they're kept current there and may have changed since this guide was written.
-
Install the Outlook MCP
Follow the README at the GitHub repo above. The install is a standard
npm installbased setup; the README explains the current package name and any updates. -
Hand the Azure step to your IT person
The Outlook MCP needs an Azure App Registration with delegated Microsoft Graph permissions. Forward the IT brief below to your 1SP IT contact. They'll need about 15 minutes.
📋 IT Brief — copy and send to your IT person
Paste this into an email or ticket to your IT contact:
IT requestSubject: Azure App Registration — Claude AI Executive Assistant Hi [IT name], I'm setting up an internal AI executive assistant tool (Claude Code by Anthropic) that needs read access to my Outlook inbox, calendar, and the ability to save drafts to my Drafts folder. It does NOT send mail, delete mail, or modify calendar events. Could you please create an Azure App Registration with the following: App name: Claude AI Assistant — [my name] Supported account type: Accounts in this organizational directory only (single tenant) Redirect URI: I'll confirm the exact port from the MCP server documentation (the Outlook MCP at github.com/ryaker/outlook-mcp specifies this) Required Microsoft Graph API permissions (delegated, not application): - Mail.Read - Mail.ReadWrite (for creating drafts only) - Calendars.Read - User.Read Please grant admin consent if your policy requires it, and send me: - Application (client) ID - Directory (tenant) ID - A new Client Secret (value, not the secret ID) Reference: https://github.com/ryaker/outlook-mcp Thanks! -
Configure the MCP
Once you have the three values from IT, follow the README at github.com/ryaker/outlook-mcp to populate them in your
.claude/settings.json. The exact field names are documented in the repo and may vary by version, so use the README rather than hard-coded examples.
Option B — Gmail fallback (no IT needed)
If Azure access isn't possible or worth the friction, you can run the assistant against a Gmail account instead. This works because:
- Gmail has well-supported MCP integrations that just need a Google login — no admin involvement.
- You can set Outlook to forward mail to a dedicated Gmail address. The assistant triages the Gmail copy.
- Drafts saved by the assistant go into the Gmail Drafts folder. You'll copy/paste the final reply into Outlook when you want to send from your real address.
-
Create a dedicated Gmail account
Use something like
yourname.ea@gmail.com. Don't reuse your personal Gmail. -
Forward your Outlook mail to it
In Outlook: Settings → Mail → Forwarding → enable forwarding to your new Gmail address. Choose whether to keep a copy in Outlook (recommended).
-
Connect Gmail to Claude Code
In VS Code's Claude Code panel, add the Gmail MCP — search for it in the connector directory. You'll be prompted to log in to Google and grant read/draft permissions to the dedicated account only.
-
Calendar — optional
If you want calendar reading, also forward your Outlook calendar invites to the same Gmail address, or grant Google Calendar read access. The morning briefing will work either way — without calendar access, you simply won't get meeting briefs.
With the Gmail fallback, drafts won't appear in your real Outlook Drafts folder. You'll need to copy them across when sending. For pure inbox triage, daily planning, and task extraction it works very well — but if you live in Outlook drafts day-to-day, Option A is worth the IT request.
Notion setup
The Notion MCP is a built-in connector in Claude Code — no installation needed. You just authorise it once and choose which workspace it can access.
-
Connect Notion in Claude Code
Open the Claude Code panel in VS Code → Connectors → Notion → Connect. You'll be redirected to Notion's authorisation page. Choose the workspace where you want the assistant to operate, and select which pages it should have access to (or grant the whole workspace).
-
Create the Operations Hub page
In Notion, create a new page called Operations Hub. Inside it, you'll create five databases. The fastest way is to ask Claude Code itself to do this once Notion is connected — for example: "In my Operations Hub page in Notion, create the five databases for the AI EA setup according to the spec."
-
Database specifications
If you prefer to create them manually or want to verify Claude's output, here are the five databases and their fields.
Tasks
Field Type Options / notes Name Title Action-oriented task name Status Select Open / In Progress / Done Priority Select P1 / P2 / P3 Owner Text Person responsible Deadline Date Target completion Source Text Email subject + sender Projects
Field Type Options / notes Name Title Project name Client Text Client or "Internal" Phase Select Planning / Execution / Delivery / Closed Status Select On Track / At Risk / Blocked / Done Next Action Text The one thing that must happen next Blockers Text What's preventing progress Deadline Date Hard delivery date Notes Text Scope, risks, decisions Open Threads, Daily Plans, Contacts
The remaining three databases follow the same pattern. Field specifications:
- Open Threads — Name (Title), Contact (Text), Status (Select: Open/Waiting/Resolved), Last Action (Date), Next Step (Text), Source (Text).
- Daily Plans — Name (Title, format "Daily Plan — [Date]"), Date (Date). Plan content lives in the page body, not a field.
- Contacts — Name (Title), Company (Text), Email (Email), Priority (Select: High/Medium/Low), Tone Profile (Text), Language (Select: DE/EN/FR/Other), Last Contact (Date), Notes (Text).
-
Verify Claude can read and write
In the Claude Code panel, type: "Show me the databases inside my Operations Hub page in Notion." If Claude lists all five, you're ready.
The starter CLAUDE.md file
This is the keystone of the whole setup — and the only file you need to install manually. When you drop it into your AI Agents folder and open it in VS Code, Claude reads it, sees that setup hasn't been run yet, and walks you through the seven personalisation blocks described in Section 03. As part of that setup, Claude also writes all the supporting rule files (.claude/rules/*) and skill playbooks (.claude/skills/*) for you. Their default content is embedded in this same file, so nothing else needs to be downloaded or shared.
Use one of the buttons below to get the file onto your machine, then save it as CLAUDE.md in the root of your working folder.
Save the file as exactly CLAUDE.md (case-sensitive) in the root of your working folder. Don't rename it. Don't edit it manually before first run — Claude needs the Setup status: NOT_STARTED flag at the top to trigger the guided setup. After setup is complete, Claude flips that flag to COMPLETE and the file becomes your live system instructions.
Preview
The full file is shown below for transparency. You don't need to read it line by line — Claude does that for you. But it's useful to see what's actually doing the work.
Move on to Section 10 — First run, where you'll trigger the interactive setup and have your assistant up and running in about 30 minutes.
First run — running the interactive setup
Everything technical is now in place. This is where the interactive starter CLAUDE.md earns its keep.
-
Open your working folder in VS Code
Make sure your
AI Agentsfolder is open as the workspace (File → Open Folder). The Claude Code panel should auto-loadCLAUDE.md. -
Trigger setup
In the Claude Code panel, type:
claude codeRun the interactive setup.Claude reads
CLAUDE.md, sees that the setup status isNOT_STARTED, and begins the seven-block conversation described in Section 03. -
Answer the blocks
Go through them one at a time. Confirm each block when it looks right. Don't worry about perfection — you can edit any of the generated context files later.
-
Let Claude write your files
When all blocks are confirmed, Claude will write your personalised
context/files and update the rule files. It will tell you what was created and ask you to confirm. -
Run your first morning briefing
Type:
claude codemorning briefingThe first run will be the longest — Claude is reading your inbox, calendar, and Notion for the first time. After that, every subsequent run is much faster because Claude already has your context loaded.
Once setup is done, treat the assistant as a colleague who's still learning your style. Tell it when something's off ("I don't want auto-drafts to John", "always summarise this client more briefly", "add weekly status reports every Friday"). It learns and the changes persist.
Daily operating workflow
| Time | What you do | Trigger |
|---|---|---|
| 08:30 | Morning briefing — review escalations, meeting briefs, daily plan, drafts | morning briefing |
| 11:00 | Midday triage — new mail since 08:30 | go through my inbox |
| 14:00 | Afternoon triage — same | go through my inbox |
| 17:00 | EOD sweep — unresolved items, prep tomorrow | go through my inbox or EOD |
| Ad hoc | Draft a specific reply | draft a reply to [Name] about [topic] |
| Ad hoc | See open tasks | what's open in Notion? |
| Ad hoc | Update a project | update the [project name] project in Notion |
| Ad hoc | Add a new skill | build a skill that does X every Y |
What a morning briefing looks like
The output is structured: escalations first, then unanswered critical, then needs-reply, then delegatable, then FYI. Meeting briefs follow. Then the daily plan summary with a note that it's been written to Notion. Then a list of drafts saved to your Drafts folder, each with subject and recipient. Total reading time is usually under five minutes — the work is in reviewing the drafts before sending, not in producing them.
Testing & validation checklist
Run through these after first setup to confirm everything works.
- Email read works — type "list my 5 most recent emails" and confirm Claude lists them.
- Email content read works — type "read the first email in my inbox" and confirm Claude returns the body.
- Calendar read works — type "what meetings do I have today?"
- Draft creation works — type "draft a test reply to [your own email]" and check the Drafts folder.
- Notion read works — type "search Notion for any page".
- Notion task read — type "show me open tasks from my Tasks database".
- Notion task create — type "create a test task in Notion called 'AI EA setup test'".
- Notion task update — type "mark the AI EA setup test task as done".
- Daily plan generation — type "morning briefing" and check that a Daily Plan record was created in Notion.
- Language matching — send yourself a German test email and confirm any draft reply comes back in German.
- Safety rule respected — confirm nothing was sent, deleted, marked read, or moved without your explicit instruction.
- Memory loads — start a fresh session and type "what's my role?" — Claude should know without re-asking.
- Context loads — start a fresh session and type "what's my number one priority?" — Claude should respond with the priority you set during setup.
Troubleshooting
Click any item to expand. If your issue isn't here, the fastest path is usually: copy the error message into the Claude Code panel and ask it directly — it can usually diagnose its own setup problems.
Outlook MCP won't connect
First check: open .claude/settings.json and confirm it's valid JSON (no missing commas or brackets). Then run the MCP server directly in a terminal — it usually prints a helpful error if something's wrong.
Common causes: wrong tenant ID, expired client secret, missing admin consent on the Azure permissions. The Azure permissions in particular need to show "Granted for [your org]" in the portal — if they show as "Not granted", your IT person needs to click the consent button.
Reference: github.com/ryaker/outlook-mcp — README has current troubleshooting tips.
Notion connector shows "Database not found"
The Notion MCP only sees pages that have been explicitly shared with it during the connection step. Open the page in Notion → click the integration name in the top right → make sure your databases are accessible. If you connected with limited access, re-run the connection and grant the full Operations Hub page.
Claude doesn't seem to know who I am
Confirm VS Code is opened with the working folder as its root (File → Open Folder, not just opening a single file). Check that CLAUDE.md exists at the top of that folder. Open context/me.md and verify it has content — if it's empty, the interactive setup didn't complete. Re-run setup by editing the top of CLAUDE.md and changing the status from COMPLETE back to NOT_STARTED.
Drafts come out in the wrong language or wrong tone
Two things to check. First, .claude/rules/communication-style.md — does it include your specific writing rules? If not, edit it directly. Second, the per-contact tone profile — for important contacts, ask Claude to add or refine an entry in your Notion Contacts database. From then on, drafts to that contact will use the saved tone.
Quickest fix in the moment: just tell Claude in the chat — "this draft should be more formal", "don't use exclamation marks", "always sign off with my first name only". The memory system picks these up.
Notion tasks are duplicating
The task-extractor checks for duplicates before creating, but it relies on Status options matching exactly. Open your Tasks database and confirm the Status options are spelled exactly: Open, In Progress, Done. Same for Priority: P1, P2, P3. Case-sensitive.
It worked yesterday, today it's asking me to authenticate again
Outlook OAuth tokens expire periodically — re-running the connection flow takes about 30 seconds. Notion tokens don't expire on their own, but check whether the integration was revoked accidentally in your Notion workspace settings. Azure client secrets have an expiry date (usually 12 or 24 months) — if you're approaching that, your IT person needs to issue a new one.
"Tool not available" when I ask Claude to do something
This means the relevant MCP isn't connected or its permissions weren't granted. In the Claude Code panel, check the Connectors / Tools section and make sure both Outlook (or Gmail) and Notion show as connected. If one shows an error, click it to re-authenticate. Restart VS Code if needed.
Security & privacy guidelines
These rules apply to every 1SP employee using this setup. Read once, then check them off as understood.
- Individual accounts only. Never share Microsoft, Google, Notion, or Claude credentials.
- Tokens stay local. The values in
.claude/settings.json(especially Azure client secrets) belong only on your machine. Never paste them into chat, email, or shared docs. - Add to .gitignore. If you use Git, never commit
.claude/settings.jsonto any shared repository. - Rotate Azure secrets annually. If using Outlook, ask your IT person to issue a fresh client secret every 12 months.
- Always review drafts before sending. The assistant never sends. You're the final gate.
- Don't paste sensitive documents into chat. Contracts, pricing, HR matters, legal questions — keep these out of the chat window or strip them down to summaries.
- Notion summaries only. Tasks and project records should describe what needs to happen, not contain verbatim sensitive content from email threads.
- Don't weaken the safety rules. The
outlook-safety.mdfile enforces hard limits on what the assistant can do to your inbox. Leave it as it is. - If a token is accidentally shared, revoke it immediately. Azure: portal.azure.com → App Registrations → Certificates & Secrets → Delete. Notion: workspace settings → Integrations → Revoke. Then issue a new one.
- Shared mailboxes need consent. Don't run this against a shared mailbox unless every person who uses it has agreed.
Ping Nico directly. If you hit a problem the troubleshooting section doesn't cover, paste the error into the Claude Code panel — it can usually walk you out of its own setup issues. Otherwise, the documentation at docs.claude.com covers every aspect of Claude Code in detail.


