๐Ÿข Enterprise AI Assistant โ€” Architecture Brief

Prepared by Chief  |  March 8, 2026

Source: Cowork session "great-ecstatic-wozniak" (March 5, 2026)  |  Project: ventures/enterprise-assistant/

โ„น๏ธ 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 AIYour 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)

ChannelHow it worksBest forStreaming?
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

  1. 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."
  2. 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.
  3. 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.
  4. 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."
  5. 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 TypeAgent Access LevelRule
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

MechanismWhat 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 persistWhat 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 repliesManages inbox, drafts replies
Tracks projects and todosTracks board action items and deadlines
Builds reports on demandBuilds market share dashboards
Remembers context across sessionsRemembers preferences and past decisions
Accessible via Telegram, web, CLIAccessible via Teams, mobile, desktop, email
Runs on Mac Mini in Blake's houseRuns 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)

  1. Client signs agreement, provides Azure tenant info
  2. You provision their container using an ARM template / Bicep script โ€” runs inside their tenant, not yours
  3. Client's M365 admin grants Graph API permissions (one-time OAuth approval)
  4. You configure their Claws: which capabilities are active, which data sources connected
  5. Load initial context: their role, org structure, key contacts, communication preferences
  6. Test run โ€” agent triages a sample inbox batch, VP reviews the output
  7. 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

PhaseWhat to buildTimeline
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/