← Back to all projects
Project 02

Post-Call Intelligence Engine

Voice agent hangs up → transcript captured, AI brief written, CRM updated, Slack notified. Same architecture across Retell AI, Vapi, and Bland — one pipeline, three platforms, zero manual steps.

< 5 min
call → CRM + Slack
3
voice platforms unified
100%
calls auto-processed
0
manual transcript review

Five layers. One internal schema.

Voice Layer
Retell AI
Vapi
Bland
Orchestration
n8n
Webhook Normalizer
AI Layer
OpenRouter
Claude
Storage
Supabase
HubSpot
Output
Slack
CRM Activity
The Brief

Calls were happening. Insights were not.

Voice agents on Retell, Vapi, and Bland were closing real conversations every day. The recordings sat in three different vendor dashboards. Transcripts had to be pulled by hand. Briefs were written in slow Slack threads after the fact. The CRM was only updated when someone remembered.

Each platform had its own webhook shape, its own transcript format, its own way of exposing call metadata. Engineering effort was scattered across three integrations that never quite talked to each other.

The ask: one post-call pipeline that works the same way regardless of which voice platform handled the call. Transcript, AI brief, CRM record, and Slack notification — all done before the operator even checks their inbox.

How It Works

Five steps. One pipeline. Three voice platforms.

Step The Work
Webhook Capture Each platform fires its end-of-call webhook into a single n8n entry node. Retell, Vapi, and Bland payloads are normalized to one internal call schema (id, agent, transcript, recording, metadata).
Transcript Stitching Speaker-tagged transcript is cleaned, timestamps merged, agent vs. caller turns split. Stored in Supabase against the call ID for downstream lookup.
AI Brief OpenRouter / Claude writes a structured brief: outcome, intent, action items, sentiment, follow-up window. One prompt, one pass, schema-validated output.
CRM Sync Contact is matched (by phone or call metadata) or created. The AI brief, sentiment, and recording URL are attached as a fresh activity entry — HubSpot or custom CRM.
Slack Notification Channel message: who called, what about, what to do next, sentiment, and direct links to the recording and CRM record. Operator opens Slack, sees the brief, decides — no transcript hunting.
AI Brief — Sample Output
"Caller: Maria L. — interested in the 8-week program. Asked about pricing tiers, refund policy, and class scheduling. Outcome: Soft yes — wants to think it over for 24 hours. Sentiment: Warm, comparison-shopping. Follow-up: Send pricing PDF + sample class schedule today; check back tomorrow afternoon. Flags: Mentioned a competitor by name — worth knowing for objection prep."
Stack

What it runs on.

VoiceRetell AI
VoiceVapi
VoiceBland
Orchestrationn8n
AI BriefOpenRouter
AI BriefClaude
StorageSupabase
CRMHubSpot
StorageAirtable
NotificationsSlack