AWS Builder Center
Building a Multi-Agent Executive AI Assistant on AWS with Strands Agents SDK and Amazon Bedrock

Building a Multi-Agent Executive AI Assistant on AWS with Strands Agents SDK and Amazon Bedrock

A C-suite executive deals with hundreds of emails, a packed calendar, countless decisions, and the constant pressure to stay ahead of strategic developments — all while being present for their team. A personal Chief-of-Staff AI can handle the cognitive load of orchestration, giving executives back the one resource they cannot manufacture: time.

Building a Multi-Agent Executive AI Assistant on AWS with Strands Agents SDK and Amazon Bedrock

GitHub: https://github.com/its-me-sweta/Executive_AI_Assistant.git

Introduction

A C-suite executive deals with hundreds of emails, a packed calendar, countless decisions, and the constant pressure to stay ahead of strategic developments — all while being present for their team. A personal Chief-of-Staff AI can handle the cognitive load of orchestration, giving executives back the one resource they cannot manufacture: time.
In this post I'll walk through a production-ready, eight-agent AI pipeline that acts as a personal executive assistant — managing calendar intelligence, email triage, meeting preparation, decision support, daily briefings, task delegation, and communication drafting — using:
  • Strands Agents SDK with @tool decorators
  • Amazon Bedrock Nova Pro for natural-language understanding, brief generation, and communication drafting
  • Amazon SES for brief delivery, delegation messages, and approved communications
  • Amazon DynamoDB for context profiles, decisions, commitments, and communications audit trail
  • Amazon S3 with KMS encryption for meeting briefs and executive documents
  • Amazon EventBridge Scheduler for daily briefs, meeting reminders, and commitment tracking
  • AWS Lambda for calendar, email, Jira, Slack, and CRM integrations
  • AgentCore Runtime for serverless deployment

Architecture Overview

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
┌──────────────────────────────────────────────┐
│ Natural Language Interface │
│ "Prep me for the board meeting at 2pm" │
│ "Triage my inbox" · "Should I approve this?" │
└──────────────────┬───────────────────────────┘
│ Slack · Email · Voice · Web
┌──────────────────▼───────────────────────────┐
│ Orchestrator Agent │
│ Context Profile · Intent Classification │
│ Priority Routing · Daily Brief Scheduling │
└──────────────────┬───────────────────────────┘
│
┌───────────────────────────┼────────────────────────────┐
│ │ │
┌───────▼────────┐ ┌─────────────▼──────────┐ ┌────────────▼───────┐
│ Calendar │ │ Email Triage Agent │ │ Meeting Prep Agent │
│ Intelligence │ │ Tier 1-4 Priority │ │ Participant Profiles│
│ Agent │ │ Action Extraction │ │ RAG Context │
│ Conflict Detect │ │ Route / Draft / Archive│ │ Agenda + Talking Pts│
│ Deep Work Guard │ │ Inbox Zero │ │ 1-Page Brief │
└───────┬────────┘ └─────────────┬──────────┘ └────────────┬───────┘
└───────────────────────────┼────────────────────────────┘
│
┌───────────────────────────┼────────────────────────────┐
│ │ │
┌───────▼────────┐ ┌─────────────▼──────────┐ ┌────────────▼───────┐
│ Decision │ │ Strategic Briefing │ │ Task Delegation │
│ Support Agent │ │ Agent │ │ Agent │
│ 3-Option Frame │ │ Business Metrics │ │ Action Capture │
│ Risk & Tradeoff │ │ Industry News │ │ SMART Delegation │
│ Recommendation │ │ OKR Status │ │ Commitment Tracker │
│ Decision Record │ │ Daily 5-min Brief │ │ Status Rollup │
└───────┬────────┘ └─────────────┬──────────┘ └────────────┬───────┘
└───────────────────────────┼────────────────────────────┘
│
┌──────────────────▼───────────────────────────┐
│ Communication Drafting Agent │
│ Context Analysis · Relationship History │
│ Nova Pro Draft · Voice Adaptation │
│ Risk Review · Approve & Send │
└──────────────────────────────────────────────┘

Executive Context Profile

Every agent reads the executive's context profile to personalise outputs:
1
2
3
4
5
6
7
8
9
10
DEFAULT_CONTEXT_PROFILE = {
"communication_style": "direct_and_concise",
"top_priorities": ["revenue_growth", "product_excellence", "team_health"],
"deep_work_blocks": ["08:00-10:00", "14:00-16:00"],
"no_meeting_days": ["friday"],
"email_response_sla": {"tier1": "same_day", "tier2": "48_hours"},
"delegation_rules": {"max_value_to_delegate": 50000},
"voice_style": "collaborative_and_data_driven",
"preferred_brief_time": "06:30",
}

Stage 1 — Calendar Intelligence Agent

Conflict detection flags three risk types:
  • Back-to-back meetings with < 10-minute buffer
  • Calendar overload (> 6 hours of meetings in a day)
  • Preparation conflicts (meeting at 2pm, prep not ready until 3pm)
Optimal slot finding respects executive preferences:
1
2
3
4
5
# Scores each slot (0.0–1.0) based on:
# - Post-deep-work timing (+0.95 for 10am)
# - All attendees available
# - Not on a no-meeting day
# - Energy level at that time of day
Deep work protection — the most valuable feature:
1
2
3
4
5
protected_blocks = [
{"time": "08:00-10:00", "reason": "Morning focus block — non-negotiable"},
{"time": "Friday 14:00-17:00", "reason": "Weekly strategy & reflection"},
]
# Exception: CEO/Board requests bypass protection

Stage 2 — Email Triage Agent

Four-tier email classification:
TierActionWho
1 — Board/Investor/Top CustomerExecutive personal response todayExecutive
2 — Direct reports/Media/PartnersExecutive reviews, assistant draftsExecutive + EA
3 — FYI/CC/Non-priority requestsDelegate entirely to EAEA
4 — Newsletters/MarketingAuto-archive, weekly digestSystem
1
2
3
4
5
6
priority_signal_map = {
"BOARD": 1, "INVESTOR": 1, "TOP_CUSTOMER": 1,
"MEDIA": 2, "DIRECT_REPORT": 2,
"TEAM": 3, "VENDOR": 3,
"LOW": 4, "NEWSLETTER": 4,
}
Action extraction from Tier 1 emails using Nova Pro:
1
2
prompt = "Extract: action_needed, decision_required, deadline, stakeholders from this email."
# Returns structured JSON for commitment tracking

Stage 3 — Meeting Preparation Agent

For every meeting the executive has, a 1-page brief is generated:
Participant profiles built from:
  • Internal: role, projects, recent wins, communication style
  • External: company news, LinkedIn background, prior interaction history
RAG context retrieval surfaces:
1
2
3
4
5
context_retrieved = {
"previous_meeting_notes": "Last meeting: agreed Q4 delivery and pricing",
"relevant_data": {"account_arr": "$180K", "nps_score": 62},
"relevant_documents": ["Q3 Account Review Deck", "Product Roadmap H2"],
}
Talking points generated by Nova Pro with three layers:
  • Key messages with supporting data (max 3 per message)
  • Anticipated objections with responses
  • Questions to ask the other party
  • Red lines: what the executive will not agree to

Stage 4 — Decision Support Agent

Every decision is framed with exactly 3 options (never just 2):
1
2
3
4
5
options = {
"A": "Status quo / conservative", # Baseline comparison
"B": "Recommended path", # AI recommendation
"C": "Bold / aggressive path", # For risk appetite context
}
Strategic alignment scoring:
1
2
alignment_scores = {"A": 0.40, "B": 0.85, "C": 0.70}
# Checks: OKR alignment, board-approved strategy, no conflicts
Decision record stored in DynamoDB with DACI framework:
1
2
3
4
5
{
"Driver": "Executive", "Approver": "Executive",
"Contributors": [...], "Informed": [...],
"rationale": "...", "review_date": "90 days",
}

Stage 5 — Strategic Briefing Agent

The daily brief is delivered at 6:30 AM via SES email and Slack:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
☀️ Executive Brief — Monday, January 13 2025

📊 Business Pulse
Revenue MTD: $4.2M (+8%) ↑ | Pipeline: $18M | NPS: 68 (+3) ↑

⚡ Urgent Actions (Today)
- Customer QBR needs prep: Acme Corp meeting at 11am
- OKR off track: "Launch in 3 new markets" at 33% — needs attention

📅 Today's Schedule
09:00: Leadership Sync (60 min)
11:00: Customer QBR — Acme Corp ⚡ NEEDS PREP

📰 Industry & Competitive
- Competitor X raised $50M Series C
- Competitor Y launched new product line

💡 One Thing to Think About
Review OKR progress with your direct reports this week.

Stage 6 — Task Delegation Agent

Tracks every commitment the executive makes across all channels:
1
2
3
4
5
@tool
def track_commitments(commitment, recipient, due_date) -> dict:
# Stored in DynamoDB commitments table
# Weekly rollup: open (N), overdue (N), on-track (N)
# Reminder sequence: 48h → 24h → same-day → overdue alert via EventBridge
Delegation messages written in the executive's voice:
1
2
3
prompt = f"Write a delegation message from an executive to {owner}.
Task: {action}. Deadline: {deadline}.
Be specific about what 'done' looks like. Under 100 words."

Stage 7 — Communication Drafting Agent

Every draft is reviewed for four risk types before sending:
1
2
3
4
5
6
7
risk_checks = {
"LEGAL": ["guarantee", "warrant", "commit to", "legally binding"],
"POLITICAL": ["off the record", "between us", "don't quote me"],
"TONE": detect_aggressive_or_dismissive_language(),
"OMISSION": check_for_required_elements(communication_type),
}
# If ANY risk flagged → present to executive for review before sending
Voice adaptation ensures every draft sounds like the executive:
1
2
3
4
5
6
style_rules = {
"never_start_with_I": True, # Leads with recipient or topic
"sentence_length": "short_and_punchy",
"formality_by_recipient": {"board": "FORMAL", "team": "INFORMAL"},
"signature": "Executive's preferred sign-off",
}

AWS Infrastructure Summary

ResourcePurpose
Amazon Bedrock Nova ProBrief generation, decision analysis, drafting, delegation messages
Amazon DynamoDB (7 tables)Context profile, requests, decisions, commitments, tasks, comms, briefings
Amazon S3 (KMS encrypted)Meeting briefs, daily briefs, executive documents
Amazon SESDaily brief delivery, delegation emails, approved communications
Amazon SNSDelegation notifications, urgent alerts
Amazon EventBridge Scheduler6:30 AM brief, commitment reminders (48h/24h/same-day)
AWS Lambda (8 functions)Calendar, email, Jira, Slack, CRM, news scan, metrics pull, reminders
AgentCore RuntimeServerless agent deployment

Try It Yourself

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
git clone https://github.com/its-me-sweta/Executive_AI_Assistant.git
cd executive-ai-assistant
pip install -r requirements.txt
uvicorn main:app --reload

# Morning brief
curl -X POST http://localhost:8000/executive/request \
-d '{"executive_id":"EXEC-001","raw_request":"Give me my morning brief","channel":"slack"}'

# Triage inbox
curl -X POST http://localhost:8000/executive/request \
-d '{"executive_id":"EXEC-001","raw_request":"Triage my inbox","channel":"web"}'

# Prep for a meeting
curl -X POST http://localhost:8000/executive/request \
-d '{"executive_id":"EXEC-001","raw_request":"Prep me for the Acme QBR at 11am","channel":"slack"}'

# Decision support
curl -X POST http://localhost:8000/executive/request \
-d '{"executive_id":"EXEC-001","raw_request":"Should I approve the $500K marketing budget request?","channel":"web"}'
Built with Strands Agents SDK · Amazon Bedrock Nova Pro · AgentCore Runtime
Any opinions in this article are those of the individual author and may not reflect the opinions of AWS.
Enjoyed reading this content? Let the author know!

Your likes, comments, shares, and saves help creators reach more builders.

Loading recommendations

Loading article