mirror of
https://github.com/Sea-Haven-Industries/workorder-ingest.git
synced 2026-05-18 20:20:12 +00:00
AWS serverless pipeline to ingest Amazon APM work order emails via SES, parse with Claude AI, store in DynamoDB
Serverless AWS pipeline that receives Amazon APM work order emails via SES, parses them with Claude AI, and stores structured data in DynamoDB. Includes a web UI dashboard for viewing work orders and event history. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> |
||
|---|---|---|
| cdk | ||
| lambdas | ||
| shared | ||
| .gitignore | ||
| README.md | ||
| requirements.txt | ||
| test_local.py | ||
Work Order Ingest
AWS serverless pipeline that ingests work order emails from Amazon's APM system (Hexagon EAM / HxGN SmartCloud), parses them with Claude AI, and stores structured data in DynamoDB.
Architecture
Email (amazon@seahavenind.com)
→ Gmail filter (from: noreply@hxgnsmartcloud.com)
→ Forwards to apm@int.seahaven.com (SES)
→ S3 bucket (raw email storage)
→ Lambda (email processor)
→ Claude Haiku (structured extraction)
→ DynamoDB (WorkOrders + WorkOrderComments)
Components
- Email Processor Lambda (
lambdas/email_processor/) - Parses raw emails, sends to Claude for structured extraction, writes to DynamoDB - Web UI Lambda (
lambdas/web_ui/) - Server-rendered HTML dashboard for viewing work orders and event history - CDK Stack (
cdk/) - Infrastructure as code for all AWS resources - Shared Models (
shared/) - Data models for work orders, comments, and parsed emails
Extracted Fields
- Work Order ID, Description, Status
- Site Code, Building, Address
- Severity, Priority
- Due Date, Date Reported, Scheduled Start
- Assigned To, Commenter, Comment Text
- Record Type (new_work_order, update, comment, cancellation)
DynamoDB Tables
- WorkOrders - Latest state of each work order (PK:
work_order_id) - WorkOrderComments - Event history per work order (PK:
work_order_id, SK:comment_id)
Local Testing
python3 -m venv .venv
source .venv/bin/activate
pip install anthropic boto3
export ANTHROPIC_API_KEY=sk-ant-...
python test_local.py
Deployment
cd cdk
pip install aws-cdk-lib constructs
npx cdk bootstrap # first time only
npx cdk deploy
After deploying, store your Anthropic API key in Secrets Manager:
aws secretsmanager put-secret-value \
--secret-id "workorder-ingest/anthropic-api-key" \
--secret-string "sk-ant-..." \
--region us-east-1
SES Configuration
- Domain:
int.seahaven.com(MX record pointing toinbound-smtp.us-east-1.amazonaws.com) - Receipt Rule Set:
INBOUND_MAIL - Recipient:
apm@int.seahaven.com