How a GoTo Connect voicemail becomes a triaged, urgency-flagged email: from S3 upload through Amazon Transcribe, Claude-driven triage, DynamoDB persistence, and SES delivery, plus a scheduled weekly digest.
Call Ingestion
GoTo Connect
Tenant call recorded and dropped as an audio file
→
S3: recordings/
Existing bucket, untouched, pipeline only adds an event notification
Transcription
Lambda: start_transcription
S3 ObjectCreated trigger, kicks off an Amazon Transcribe job and returns
Amazon Transcribe
Async speech-to-text; call_id and identifiers ride along as job tags
EventBridge
Transcribe job state change (COMPLETED/FAILED) triggers process_transcript
Triage and Classification
Lambda: process_transcript
Fetches the finished transcript, archives it as plain text
→
Claude (Anthropic API)
Category, urgency flags, summary, and action items
Persistence and Notification
DynamoDB: CallLog
One item per call, keyed by call_id + processed_at
→
Amazon SES
Per-call triage email to the property manager
Weekly Digest
EventBridge: weekly schedule
Cron trigger, Monday 08:00
→
Lambda: weekly_summary
Queries the past 7 days from CallLog, rolls up highlights
→
Amazon SES
Weekly digest email
Filename/metadata parsing never raises: anything it can't confidently extract degrades to "unknown" rather than stalling the pipeline. Secrets (Anthropic API key) live in SSM Parameter Store as a SecureString, read once per Lambda cold start, never hardcoded.
Ingestion layer: GoTo Connect drops call recordings into an existing S3 bucket under recordings/. The pipeline adds a notification; it doesn't take ownership of the bucket.Transcription layer: One Lambda starts an Amazon Transcribe job and returns immediately; a second Lambda picks up the finished transcript off a Transcribe completion event on EventBridge, decoupling a variable-length async job from a single long-running function.Triage layer: Claude returns category, urgency flags (e.g. maintenance_emergency), a plain-language summary, and action items.Persistence layer: DynamoDB's CallLog table is the single source of truth for both per-call lookups and the weekly digest query.Notification layer: Amazon SES sends both the immediate per-call triage email and the Monday-morning weekly digest.Scheduling layer: An EventBridge cron rule triggers weekly_summary independently of call volume, so the digest always goes out.