
Building a Multi-Agent AI HR Onboarding Assistant on AWS with Strands Agents SDK and Amazon Bedrock
Onboarding a new employee involves dozens of steps across HR, IT, Learning & Development, and the hiring manager — often spread across multiple systems with no single thread connecting them. A new hire's first-week experience directly predicts long-term retention, yet most organisations still rely on manual checklists and email chains.
Building a Multi-Agent AI HR Onboarding Assistant on AWS with Strands Agents SDK and Amazon Bedrock
GitHub: https://github.com/its-me-sweta/HR_Onboarding_Assistant.git
Introduction
Onboarding a new employee involves dozens of steps across HR, IT, Learning & Development, and the hiring manager — often spread across multiple systems with no single thread connecting them. A new hire's first-week experience directly predicts long-term retention, yet most organisations still rely on manual checklists and email chains.
In this post I'll walk through a production-ready, seven-agent AI pipeline that automates the full employee onboarding lifecycle — from the ATS hire record to the 90-day progress review — using:
- Strands Agents SDK with
@tooldecorators - Amazon Bedrock Nova Pro for personalised welcome messages and feedback analysis
- Amazon Textract + Rekognition for identity document verification
- Amazon SES + SNS for employee comms, manager briefings, and HR alerts
- AWS Lambda for DocuSign, LMS, ATS, Slack, Workday, and hardware integrations
- Amazon EventBridge Scheduler for milestone check-ins and training reminders
- Amazon DynamoDB for onboarding records, training, buddy pool, and GDPR audit trail
- Amazon S3 for encrypted document storage (KMS)
- 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
┌──────────────────────────────────────────┐
│ FastAPI / REST Layer │
│ POST /hr/onboard │
└──────────────────┬───────────────────────┘
│
┌──────────────────▼───────────────────────┐
│ Orchestrator Agent │
│ Role Track · Timeline · Escalation · GDPR│
└───┬──────────────────────────────────┬───┘
│ │
┌──────────────▼──────┐ ┌─────────────▼──────────┐
│ Document │ │ IT Provisioning Agent │
│ Verification Agent │ │ AD · Email · Licenses │
│ Textract · Rekognition│ │ MFA · Hardware · RBAC │
└──────────────┬──────┘ └─────────────┬──────────┘
└────────────┬─────────────────────┘
│
┌─────────────────▼────────────────────────┐
│ Training Assignment Agent │
│ Compliance (mandatory) · Role Learning │
│ LMS Enrollment · EventBridge Reminders │
└─────────────────┬────────────────────────┘
│
┌─────────────────▼────────────────────────┐
│ Buddy Matching Agent │
│ AI Scoring · Availability · Intro Email │
│ 4-Meeting Schedule · Slack Channel │
└─────────────────┬────────────────────────┘
│
┌─────────────────▼────────────────────────┐
│ Welcome Agent │
│ Nova Pro Message · Day-1 Schedule │
│ Team Announcement · Manager Briefing │
│ Welcome Kit · Org Chart Update │
└─────────────────┬────────────────────────┘
│
┌─────────────────▼────────────────────────┐
│ Progress Tracking Agent │
│ LMS Polling · Milestone Surveys · Health │
│ 30/60/90-Day Reviews · KB Self-Learning │
└──────────────────────────────────────────┘Role-Based Onboarding Tracks
The Orchestrator automatically selects the correct track from the job title:
| Track | Key Focus | Tools |
|---|---|---|
| ENGINEER | Architecture, AWS, dev env, code review | GitHub Enterprise, Jira, AWS Console, Dev environment SSM setup |
| MANAGER | Leadership, OKRs, budget, people mgmt | Workday (manager), BambooHR, Tableau |
| SALES | Product cert, CRM, territory, quota | Salesforce, HubSpot, Gong, Outreach |
| ANALYST | Data platform, BI tools, governance | Snowflake, Tableau, Looker, dbt Cloud |
| EXECUTIVE | Board access, EA assignment, strategic brief | Board portal, Concur, EA calendar |
Stage 1 — Document Verification Agent
Three parallel verification streams:
Identity Documents (Textract + Rekognition):
1
2
3
4
5
6
7
def verify_identity_document(document_s3_uri, employee_name, document_type) -> dict:
r = textract.analyze_document(
Document={"S3Object": {"Bucket": bucket, "Name": key}},
FeatureTypes=["FORMS"],
)
# Extract fields + verify name match against submitted detailsWork Authorization:
1
2
3
4
5
auth_methods = {
"US": "I-9 + E-Verify",
"GB": "Right to Work Share Code",
"DE": "Arbeitserlaubnis",
}Document Signatures (DocuSign via Lambda):
Required documents: offer letter, employment contract, NDA, handbook acknowledgment, IT acceptable use policy, benefits enrollment.
Required documents: offer letter, employment contract, NDA, handbook acknowledgment, IT acceptable use policy, benefits enrollment.
Blocking vs Pending: Work authorization missing = BLOCKED (onboarding halts). Background check in progress = PENDING (onboarding continues with restricted access).
Stage 2 — IT Provisioning Agent
Eight provisioning actions, all completing before Day 1:
1
2
3
4
5
6
def assign_software_licenses(employee_id, role_track, email) -> dict:
licenses = LICENSE_CATALOG["ALL"] + LICENSE_CATALOG.get(role_track, [])
# ALL: Office 365, Slack, Zoom, Okta SSO, 1Password
# ENGINEER: + GitHub Enterprise, Jira, Confluence, AWS Console, Datadog
# SALES: + Salesforce, HubSpot, LinkedIn Sales Nav, Gong, OutreachHardware ordering is role-matched automatically:
- ENGINEER: MacBook Pro 16" + 2 monitors + mechanical keyboard
- SALES: MacBook Air 13" + headset + monitor
Engineer-only: Dev environment setup via SSM Run Command (git, docker, aws-cli, kubectl, terraform, homebrew — all pre-configured).
1
2
3
4
ssm.send_command(
DocumentName="company-dev-env-setup",
Parameters={"username": [username], "tools": [json.dumps(dev_tools)]},
)Stage 3 — Training Assignment Agent
Mandatory compliance (all employees, 5-day deadline):
- Information Security Awareness (60 min)
- Data Privacy & GDPR/CCPA (45 min)
- Code of Conduct & Anti-Bribery (30 min)
- Anti-Harassment & Inclusion (45 min)
- SOC2 Security Controls (30 min)
4-week role learning path — ENGINEER example:
| Week | Course |
|---|---|
| 1 | Architecture Overview + Engineering Practices |
| 2 | AWS Infrastructure + System Design Patterns |
| 3 | Security Engineering |
| 4 | Product Deep-dive (assigned squad) |
EventBridge Scheduler sends training reminders at each deadline:
1
2
3
4
5
scheduler.create_schedule(
Name=f"training-reminder-{employee_id}-compliance_training",
ScheduleExpression=f"at({compliance_deadline}T09:00:00)",
Target={"Arn": "arn:aws:lambda:...:function:hr-training-reminder", ...},
)Stage 4 — Buddy Matching Agent
AI-powered matching score (0–100 composite):
| Dimension | Weight |
|---|---|
| Role similarity | 30% |
| Location / timezone match | 25% |
| Shared interests | 20% |
| Current availability | 15% |
| Diversity factor | 10% |
1
2
3
4
5
6
7
def score_buddy_match(new_hire, buddy) -> dict:
role_score = 30 if buddy["role_track"] == new_hire["role_track"] else 10
loc_score = 25 if buddy["office_location"] == new_hire["office_location"] else 8
interest_score = min(20, len(set(buddy["interests"]) & set(new_hire["interests"])) * 7)
diversity_score = 10 if buddy["background"] != new_hire["background"] else 5
total = role_score + loc_score + avail_score + interest_score + diversity_scoreThe buddy programme schedules 4 meetings: Day-1 coffee, Week-1 office tour, Week-2 lunch, Month-1 check-in — with calendar invites and a private Slack channel.
Stage 5 — Welcome Agent
Personalised welcome message generated by Amazon Bedrock Nova Pro:
1
2
prompt = f"""Write a warm welcome for {full_name}, {role_title}, {department}.
Fun fact: {fun_fact}. Under 100 words, enthusiastic, mention the fun fact."""The welcome package includes:
- Personalised email with Day-1 schedule
- Team Slack announcement with fun fact
- Manager briefing with Day-1 readiness checklist and suggested talking points
- Physical welcome kit shipped to home (remote) or placed on desk (onsite)
- Org chart update in Workday/BambooHR
Stage 6 — Progress Tracking Agent
Automated milestone check-ins via EventBridge at Day 7, 14, 30, 60, 90.
Onboarding health score (0–100):
1
2
3
4
5
6
7
score = (training_pct * 0.35
+ survey_score * 20 * 0.30
+ (20 if buddy_active else 0) * 0.20
+ (15 if not access_issues else 0) * 0.15)
health = ("THRIVING" if score >= 80 else "ON_TRACK" if score >= 60
else "AT_RISK" if score >= 40 else "CRITICAL")AT_RISK triggers an automatic manager alert. CRITICAL triggers HR escalation via SNS.
AWS Infrastructure Summary
| Resource | Purpose |
|---|---|
| Amazon Bedrock Nova Pro | Welcome messages, feedback analysis |
| Amazon Textract | Identity document extraction |
| Amazon Rekognition | Document authenticity checks |
| Amazon SES | Employee emails, manager briefings, CSAT |
| Amazon SNS | HR escalation alerts, manager notifications |
| AWS Lambda (10 functions) | DocuSign, LMS, Slack, Workday, hardware, ATS, Okta, AD, BGC, PDF |
| Amazon EventBridge Scheduler | Training reminders, milestone check-ins |
| Amazon DynamoDB (6 tables) | Onboarding records, documents, training, buddies, progress, comms |
| Amazon S3 (KMS encrypted) | Verified documents, training PDFs, welcome materials |
| AWS SSM Run Command | Developer environment setup |
| AgentCore Runtime | Serverless 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
21
22
git clone https://github.com/its-me-sweta/HR_Onboarding_Assistant.git
cd hr-onboarding-assistant
pip install -r requirements.txt
uvicorn main:app --reload
curl -X POST http://localhost:8000/hr/onboard \
-H "Content-Type: application/json" \
-d '{
"employee_id": "EMP-2025-001",
"full_name": "Priya Sharma",
"personal_email": "priya@gmail.com",
"role_title": "Software Engineer",
"department": "Engineering",
"start_date": "2025-09-01",
"manager_id": "EMP-2024-042",
"manager_email": "mgr@company.com",
"office_location": "Bangalore",
"work_mode": "hybrid",
"country": "IN",
"fun_fact": "Completed a marathon in Iceland last year",
"interests": ["aws", "machine-learning", "hiking"]
}'Built with Strands Agents SDK · Amazon Bedrock Nova Pro · AgentCore Runtime
Enjoyed reading this content? Let the author know!
Your likes, comments, shares, and saves help creators reach more builders.
Loading recommendations
Loading article