Architecture Visual

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.
Read Build Story Back to Demo GitHub README
Back to Portfolio