โน๏ธ What this is: A personal AI assistant built for VP/executive-level users in Microsoft 365 environments. Manages email, calendar, data reporting, and team communication through a single agent accessible from anywhere โ desktop, mobile, Teams, or email. First target: Dave Devries at ASH (VP of ASCs). This document captures the full architecture from the March 5 deep-dive session.
PART 1 โ The Core Problem
Why Not Just Use Microsoft Copilot?
Microsoft Copilot exists. So do dozens of enterprise AI tools. The question is: why would a VP pay for something custom? Here's the honest answer:
| Microsoft Copilot / Generic AI | Your Bespoke Agent |
| Data access |
Microsoft 365 only (email, docs, calendar) |
M365 + CRM + claims data + custom databases + web intelligence |
| Knows your business |
Generic understanding |
Trained on your org's specific data, KPIs, and workflows |
| Can build things |
No โ generates text only |
Yes โ generates dashboards, reports, summaries, data pulls |
| Memory |
Session-based, no persistence |
Persistent โ remembers context, past decisions, preferences |
| Deployment |
Microsoft's servers โ data leaves your tenant |
Your Azure tenant โ data never leaves |
| Customization |
None |
Built specifically for this person's workflow and data |
The Real Pitch
Microsoft Copilot answers questions about your emails. Your agent manages your day. It triages your inbox, flags what needs a decision, drafts replies in your voice, pulls the market share numbers your liason asked about, builds the dashboard before you even open your laptop, and remembers that you prefer bar charts. That's a fundamentally different product.
PART 2 โ System Architecture
The Central Insight: Agent Lives in Azure, Not on the Device
The agent runs centrally in Azure. The VP's devices โ laptop, phone, Teams, email โ are just windows into the same brain. Like Gmail: same inbox whether you're on your phone, laptop, or someone else's computer.
VP's Devices Your Azure Infrastructure
โโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Desktop/Web App โโโโ WebSocket โโโโโโโโโโบโ API Gateway โ
โ (routes all channels to agent) โ
Mobile App โโโโ WebSocket โโโโโโโโโโบโ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
Teams Bot โโโโ HTTPS โโโโโโโโโโโโโโบโ โ Agent Container โ โ
(mentions) โ โ โ โ
โ โ โข One brain, one memory โ โ
Email to bot โโโโ Graph API โโโโโโโโโโบโ โ โข Persistent context โ โ
(agent@co.com) โ โ โข Tool execution โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ
โ Azure Services: โ
โ โข Azure OpenAI (model) โ
โ โข Key Vault (credentials) โ
โ โข PostgreSQL (memory + history) โ
โ โข Blob Storage (reports/files) โ
โ โข Bot Service (Teams) โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Why This Architecture?
๐จ What NOT to build: An OpenClaw-style local agent on the VP's laptop. If something goes wrong โ a hallucinated command, a context compaction incident, a prompt injection through a malicious email โ there's nothing protecting his files, his credentials, or his system. Healthcare executives cannot have unsandboxed agents on their machines.
โ
What TO build: Agent runs in a sandboxed Azure container. VP's machine is never touched. All data access goes through Microsoft Graph API (cloud-to-cloud, no local dependency). VP's data stays in their own Azure tenant.
PART 3 โ The Channels (How the VP Talks to the Agent)
| Channel | How it works | Best for | Streaming? |
| Desktop Web App |
Browser โ WebSocket โ Azure API |
Deep work, reviewing dashboards, long sessions |
Yes โ real-time |
| Mobile App |
App โ WebSocket โ Azure API |
Quick queries, approvals, on the go |
Yes + push alerts |
| Teams Bot |
@mention โ Bot Framework โ HTTPS โ your API |
Team-facing, shared agent access, reps asking questions |
No โ full response only |
| Email |
Email to agent โ Graph API webhook โ your API |
Zero-install access, works on any device, async tasks |
No โ async reply |
Teams Bot UX Consideration
Teams uses HTTPS request/response โ no streaming. So the VP sends a message, there's a pause, then the full response appears. For long tasks (build me a dashboard), the pattern is: agent sends "On it โ I'll notify you when it's ready" immediately, then delivers the result via push/Teams update when done. For short questions, the pause is fine. Tailor response verbosity by channel.
PART 4 โ Inbox Management (The Core VP Use Case)
The Problem with Executive Inboxes
A VP of ASCs gets 200+ emails a day. Vendor pitches, internal reports, physician liaisons, compliance notices, calendar invites. The job isn't reading all of them โ the job is knowing which 10 actually need a response and what that response should be. That's where the agent earns its keep.
How Graph API Powers This
Microsoft Graph API gives the agent cloud-to-cloud access to the VP's entire Microsoft 365 environment โ email, calendar, contacts, OneDrive, Teams messages โ all without touching the VP's machine.
Your Azure Container (Agent)
โ
โ graph.microsoft.com
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Microsoft Graph API โ
โ โ
โ /me/messages โ read email โ
โ /me/sendMail โ send email โ
โ /me/calendar/events โ calendar โ
โ /me/contacts โ contacts โ
โ /teams/{id}/messages โ Teams messages โ
โ /me/drive/root โ OneDrive files โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โผ
VP's Microsoft 365 Tenant
(data never leaves tenant)
The Daily Inbox Workflow
- Morning triage (automated, before VP opens email)
Agent reads all unread emails via Graph API โ categorizes by urgency + type โ builds a morning brief: "You have 47 unread. 3 need decisions today: budget approval from Sarah, escalation from Acme Corp, contract renewal from vendor X."
- Draft-and-review (on request or automated for routine)
VP says "reply to Sarah approving the budget" โ agent drafts reply in VP's voice โ shows draft โ VP approves or edits โ agent sends via Graph API. For truly routine emails (meeting confirmations, FYI acknowledgments), agent can draft + queue for batch approval.
- Context injection
When VP asks "what did Acme Corp say?" โ agent searches email history + CRM data + meeting notes โ gives a full briefing, not just the last email. Memory makes this work.
- Proactive alerts
Agent monitors for: VIP senders, keywords ("urgent", "contract", VP's name), unresponded threads older than 48h. Sends push alert to phone or Teams message: "You haven't responded to the physician liaison from St. Vincent's โ sent 3 days ago."
- Calendar coordination
"Find time for a 30-minute call with the ASC team this week" โ agent checks VP's calendar + attendees' calendars โ suggests 3 options โ books on confirmation.
Three-Tier Email Access Model
| Email Type | Agent Access Level | Rule |
| VP's corporate inbox |
Read + draft + send-on-approval |
Never sends without VP confirmation for non-routine mail |
| Shared team inbox |
Read-only + alerts |
Monitors, surfaces items, doesn't reply |
| Agent's own identity (agent@company.com) |
Full send |
For automated reports, scheduling coordination, notifications |
PART 5 โ The "Claws" (What the Agent Can Do)
Claws are the agent's capability modules โ discrete tools it can invoke to take action. The agent decides which claws to use based on the request.
๐ง Email Claw
Read, search, draft, send, categorize emails via Graph API. "Summarize my emails" โ morning brief. "Reply to Sarah" โ draft for approval.
๐
Calendar Claw
Read/create/modify events via Graph API. "When's my next board meeting?" โ event details. "Find time for X" โ suggests + books slot.
๐ Data Claw
Query CRM, claims data, market share databases. "Primary care market share in Southeast region" โ pulls from data sources, returns structured results.
๐ Dashboard Claw
Generates interactive HTML/React dashboards from data. Creates a blueprint (persisted) + rendered HTML (ephemeral, 7-day TTL). Rebuilds on demand from blueprint.
๐ Report Claw
Generates formatted reports (PDF, DOCX, PPTX). Pulls data โ applies template โ delivers file to VP's inbox or OneDrive.
๐ Notification Claw
Sends push alerts (phone), Teams messages, or emails. "Dashboard ready โ [link]". "Urgent email from board member unread for 6 hours."
๐ง Memory Claw
Saves/retrieves/searches persistent context. "Remember Sarah approved the Q2 budget." Loads relevant past context into every new conversation.
Example: End-to-End Orchestration
Rep in Teams: "I need primary care market share for the Southeast"
Teams Bot Framework โ HTTPS POST โ Your API Gateway
โ
โผ
Agent identifies user, loads memory
โ
โโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโ
โผ โผ โผ
Data Claw Dashboard Claw Memory Claw
query CRM for generate HTML from save: "built SE
market share data + blueprint primary care dash
data save to Blob Storage on 2026-03-08"
โ โ
โโโโโโโโโฌโโโโโโโโโ
โผ
Notification Claw
"Your dashboard is ready โ [link]"
sent to Teams + push to phone
โ
โผ
Rep opens desktop web app later:
Dashboard is in "Recent" panel, ready
PART 6 โ Memory & Session Continuity Across Devices
The VP uses desktop at work, phone on the go, Teams in meetings, email from anywhere. The agent needs to feel like the same conversation everywhere.
Recommended: Per-Channel Sessions + Shared State + Handoff Summaries
| Mechanism | What it does |
| Per-channel sessions |
Desktop, mobile, Teams, email each have their own thread โ no race conditions if VP is on two devices simultaneously |
| Shared PostgreSQL memory |
All channels write to the same memory database โ facts, decisions, preferences, outstanding actions |
| Handoff summaries |
When VP switches channels, new session injects a compressed summary: "You were reviewing Southeast dashboard on desktop 12 min ago. Sarah's budget approval is still pending." |
Key Difference from OpenClaw
OpenClaw uses Markdown files on disk as shared memory โ simple and effective for one person on one machine. Your enterprise platform uses PostgreSQL with importance-ranked rows, pgvector semantic search, and active handoff summaries that bridge channel switches. Same concept, cloud-native and multi-user.
PART 7 โ The Dashboard Blueprint Pattern
Key insight from the March 5 session: don't store rendered HTML โ store the blueprint and the data separately.
| What to persist | What to keep ephemeral |
Data snapshot โ the raw numbers, timestamped in PostgreSQL
Dashboard blueprint โ a structured MD/JSON file: which charts, which metrics, which filters, which data query
User preferences โ "prefers bar charts, always show YoY comparison"
|
Rendered HTML/React dashboard โ cached in Azure Blob Storage with 7-day TTL, then deleted. Regenerated on demand from blueprint + data.
|
Why this matters: When the VP says "show me the same thing but for Q3 last year" โ agent reads the blueprint, swaps the date range, re-queries data, re-renders. When they say "add a trend line" โ agent modifies the blueprint, regenerates. Blueprint is the source of truth. HTML is cheap.
PART 8 โ Per-Client Environment Design
The Core Insight: "Chief for Everyone"
This isn't a shared platform where clients log in to your system. Each client gets their own isolated container โ their own private brain โ running inside their own Azure tenant. Their data never leaves their walls. You never touch their data. You just deploy and configure the agent.
What Chief does for Blake = What the agent does for the VP
| Chief (Blake's setup) | Enterprise Agent (VP's setup) |
| Manages inbox, drafts replies | Manages inbox, drafts replies |
| Tracks projects and todos | Tracks board action items and deadlines |
| Builds reports on demand | Builds market share dashboards |
| Remembers context across sessions | Remembers preferences and past decisions |
| Accessible via Telegram, web, CLI | Accessible via Teams, mobile, desktop, email |
| Runs on Mac Mini in Blake's house | Runs in container in client's Azure tenant |
The product is not new technology. It's Chief, deployed and configured for enterprise.
What Each Client Gets
Client Container (Azure Container Apps โ inside their tenant)
โโโ Agent runtime โ your code (same image for all clients)
โโโ SOUL file โ client-specific: persona, tone, workflow rules
โโโ Memory store โ PostgreSQL, private and isolated to them
โโโ Active Claws โ configured for their role (VP vs. rep vs. CMO)
โโโ Data connections:
โโโ Microsoft Graph API โ their M365 tenant (email, calendar, Teams)
โโโ CRM connector โ optional
โโโ Claims data connector โ optional
โโโ Custom databases โ optional
What Blake Controls
Your Azure Infrastructure (management layer)
โโโ Container registry โ your agent code/images (you push updates here)
โโโ Provisioning API โ spin up new client environments in minutes
โโโ Configuration store โ per-client Claw settings and data connections
โโโ Monitoring dashboard โ usage, errors, token spend per client
โโโ Template library โ reusable role-based configs (VP, rep, CMO, etc.)
โ
Data privacy unlocked: Blake's infrastructure manages container images and provisioning config only. Client credentials live in the client's Azure Key Vault. Blake has zero access to client data. This eliminates healthcare's biggest objection: "we can't let vendor data leave our walls."
Onboarding a New Client (Target: < 1 day)
- Client signs agreement, provides Azure tenant info
- You provision their container using an ARM template / Bicep script โ runs inside their tenant, not yours
- Client's M365 admin grants Graph API permissions (one-time OAuth approval)
- You configure their Claws: which capabilities are active, which data sources connected
- Load initial context: their role, org structure, key contacts, communication preferences
- Test run โ agent triages a sample inbox batch, VP reviews the output
- Go live โ client gets the web app URL + Teams bot invite
Scaling the Business
| Client # | What gets easier |
| Client 1 (Dave/ASH) |
Build everything from scratch. Prove the model. |
| Clients 2โ5 |
Reuse the container image and provisioning script. Configure per role. Each deployment strengthens the template library. |
| Clients 6+ |
Provisioning is nearly automated. Most of the work is configuration and onboarding conversation โ not code. |
โน๏ธ This is the moat: Every client you deploy makes your template library richer, your provisioning faster, and your domain knowledge deeper. A new entrant has to build all of this from zero. You're compounding.
PART 9 โ Next Steps
| Phase | What to build | Timeline |
| Phase 1 โ Dave's email agent |
Graph API connection, inbox triage, draft-and-review workflow. Single user, Azure Container Apps. |
2โ3 weeks |
| Phase 2 โ Teams bot |
Bot Framework integration. Rep-facing queries in Teams. Push notifications when dashboards are ready. |
2 weeks |
| Phase 3 โ Data Claw |
CRM + claims data queries. Market share dashboards. Blueprint + ephemeral pattern. |
3โ4 weeks |
| Phase 4 โ Multi-user |
Azure AD auth, per-user containers, shared team agent via Teams, role-based access. |
4โ6 weeks |
โ ๏ธ First thing to set up: Microsoft Azure account with the right tenant structure. From the March 5 notes โ you started this (Microsoft 365 Business Basic โ Entra ID โ Azure), hit a snag with Gmail tied to Microsoft account. Pick this back up and get the Azure environment live before building anything.
Enterprise AI Assistant Architecture Brief ยท Chief ยท March 8, 2026 ยท Source: Cowork session great-ecstatic-wozniak (2026-03-05) ยท Project: ventures/enterprise-assistant/