Event-order ambiguity
Vapi webhooks could arrive out of order. Preliminary call-ended events were deferred until richer end-of-call reports arrived, while completion activity was upserted to avoid duplicate processing.
Built and evolved an AI outreach stack connecting campaign operations, real-time voice agents and CRM orchestration so leads could be called, scored and followed up without manual glue work between tools.

Sales and operations teams needed to run multi-stage outreach, capture call intelligence, evaluate stage success and synchronize follow-up actions without relying on fragile handoffs between disconnected tools.
The team developed three related services: a full-stack voice outreach product, a campaign operations console and an API-only CRM orchestration layer. Together they transformed inbound leads into AI phone conversations, structured outcomes and coordinated follow-through across CRM, calendar and email systems.
01 · Voice outreach platform
Operators configured Vapi assistants, prompts, ElevenLabs voices, knowledge bases, Twilio/Vonage phone numbers and staged campaigns; launched calls; and reviewed transcripts, recordings, costs and progress.
02 · Campaign operations console
Lead management, activity timelines, requirement evaluation, outcome classification, timezone-aware retries, calling windows and configurable inbound webhooks.
03 · CRM orchestration service
Pipedrive lead/person ingestion, label-based outreach gating, AI call triggering, disposition writeback, rich activity notes, Google Calendar/Meet events and follow-up email.
PostgreSQL stored domain data. Redis/RQ and TaskIQ supported legacy and service-specific paths; SQS, DLQs and EventBridge handled the more mature voice workflow. Terraform provisioned ECS/Fargate, ECR, RDS, S3, ALB/ACM, KMS, secrets and logging; GitHub Actions OIDC drove rolling deployments.
Pipedrive webhook (lead / person / label)
└─► CRM Orchestration Service
└─► AI Caller API (async / sync / scheduled)
└─► Vapi call
(Twilio/Vonage number + ElevenLabs voice)
└─► Vapi webhooks
(status / end-of-call-report)
└─► Voice platform processor
├─ outcome classification
├─ stage progression
├─ private S3 recording persistence
└─ CRM callback(s)
└─► CRM orchestration callback
├─ Pipedrive labels
├─ Pipedrive activity note
└─ Calendar / Meet / emailPipedrive lead/person webhook, inbound webhook or operator creation; fetch Pipedrive contact arrays, persist locally and gate outreach using designated labels
Campaign stage, Vapi assistant, prompt, knowledge base, ElevenLabs voice and Twilio/Vonage number produce lead-aware caller configuration
Immediate, queued or scheduled worker paths protected by concurrency controls and leases
Vapi status, tool results and end-of-call reports drive classification, stage progression, voicemail detection and private S3 recording storage
Pipedrive labels and HTML activity notes, CRM callbacks, Google Calendar/Meet and email remain aligned without blocking the call path
Vapi webhooks could arrive out of order. Preliminary call-ended events were deferred until richer end-of-call reports arrived, while completion activity was upserted to avoid duplicate processing.
Async workers used local concurrency limits, shared leases tied to Vapi call IDs, retries, EventBridge-delayed requeues and SQS dead-letter paths so provider failures did not silently exhaust capacity.
Tool and function results updated lead-stage data, validated required fields and determined whether a campaign stage could advance.
Pipedrive updates preserved unrelated labels, enforced mutually exclusive AI status groups, avoided no-op writes and best-effort synchronized local state after external patches.
Temporary Vapi recording URLs were copied into private S3 storage and exposed through time-limited playback access.
Primary AI voice orchestration across both voice products. Assistants and calls were created through api.vapi.ai; IDs, statuses, transcripts, analysis, recordings, costs and tool results were persisted and processed asynchronously.
Inbound lead/person webhooks and label synchronization powered outreach gating. Call completion updated labels without overwriting unrelated state and created rich HTML activities containing summaries, transcripts, qualification data and follow-up details.
Telephony providers supplied and managed outbound phone numbers associated with Vapi phone-number IDs. Vonage was supported as an alternate configured transport.
Configurable voice synthesis option used when building assistant and Vapi call configuration.
Qualified leads could trigger calendar events, Meet links and attendee invitations, with local event records and background reminder scheduling.
Transactional email with an SMTP/SES-style fallback handled confirmations and reminders. Voice products emitted independent callback POSTs for call state, completion outcomes and retry metadata.
ECS/Fargate, ECR, RDS PostgreSQL, S3, Secrets Manager, CloudWatch, KMS and ALB/ACM were provisioned with Terraform; GitHub Actions OIDC pushed images to ECR and deployed ECS services.
Contributed across campaign operations, voice calling and CRM orchestration
Implemented and refined call initiation, lead/campaign workflows and post-call processing
Coordinated async execution with queues, retries and shared capacity controls
Handled out-of-order provider events and idempotent completion processing
Built structured outcome evaluation against campaign and stage requirements
Supported containerized AWS delivery with infrastructure-as-code and CI/CD
Anonymized service family across the platform.
| Service | Responsibility | Stack |
|---|---|---|
| Voice Outreach Platform | Staged campaigns, Vapi calling, Twilio/Vonage numbers, operator review and CRM callbacks | Angular 19, FastAPI, PostgreSQL, Redis/SQS, AWS ECS, Terraform |
| Campaign Operations Console | Lead operations, stage evaluation, retries, calling windows and dashboards | Angular 19, FastAPI, PostgreSQL, Redis/RQ, Terraform |
| CRM Orchestration Service | Pipedrive events, label gating, AI call triggers, dispositions, Calendar/Meet and email | FastAPI, Tortoise ORM, PostgreSQL, Redis/TaskIQ, AWS ECS |
Connected campaign operations, AI voice execution and CRM follow-through in one coordinated stack
Integrated Vapi for assistant configuration, call execution and webhook-driven post-call processing
Integrated Pipedrive for lead/person ingestion, label gating, disposition writeback and activity notes
Supported Twilio and Vonage telephony with ElevenLabs voice configuration
Persisted Vapi call recordings into private S3 and orchestrated follow-up through Google Calendar/Meet and email
Deployed containerized services on AWS ECS using Terraform and GitHub Actions OIDC
AI voice workflows, asynchronous processing, webhook reliability, CRM reconciliation, cross-stack delivery and cloud infrastructure.
These implementation boundaries keep the public description technically honest.



Backend platform for a flagship social virtual world — Go realtime game server, NestJS Alpha API, versioned content releases, Kafka telemetry contracts, and an internal support console for live operations.
View case study →
A browser-first platform for recording, correcting, processing, organizing and sharing video—with a defining pause, rewind and overwrite workflow that let users fix mistakes without starting again.
View case study →
A multi-application platform connecting physical artworks to secure digital records through NFC, enabling authenticity checks, provenance, ownership, subscriptions, auctions and scan analytics.
View case study →