mirror of
https://github.com/Sea-Haven-Industries/workorder-ingest.git
synced 2026-05-18 20:20:12 +00:00
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>
2.1 KiB
2.1 KiB
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