What this automation does
The workflow runs after every connected call and does the typing a rep would otherwise skip.
- Call ends. The phone system sends a webhook with the call ID, direction, numbers, duration and disposition.
- Filter. Calls under a set duration, voicemails, and internal calls stop here.
- Get the transcript. Use the phone system’s own transcript if it provides one with speaker labels. Otherwise download the recording and send it to a transcription service with speaker separation turned on.
- Match the record. Normalize the external number to E.164 format and search CRM contacts and companies. If the rep had the contact open in a dialer, use that ID instead.
- Extract fields. The model reads the transcript and returns your fields as strict JSON: outcome, next step, next step date, pain points, budget range, decision role, competitor mentioned, and a short summary. Each field is restricted to your picklist values or “not discussed”.
- Write and confirm. Low-risk fields (summary, pain points, competitor) are written immediately as a call note and properties. Deal stage, amount and close date are proposed to the rep in Slack or a CRM task with Approve and Edit buttons.
When it is worth building
This is worth it when you depend on CRM data for forecasting and routing, and the data is mostly empty because reps make dozens of calls a day and log only the bare minimum. If your pipeline reviews start with “let me tell you where this deal really is”, the CRM is not getting fed.
It is not worth building for a team of two who make a handful of long calls a week. Have them use a note-taker or dictate notes. For longer video meetings with several attendees, the meeting notes to CRM guide is the better fit because attendee matching and deal association work differently.
Architecture
| Layer | What we use | Why |
|---|---|---|
| Call source | Aircall, RingCentral, Twilio or another cloud phone system, via webhook and REST API | Call events and recordings are available within minutes of hang-up |
| Transcription | The phone system’s transcript, or a speech-to-text API with speaker diarization | Speaker labels matter, because “we have $50k” means something different from each side |
| Matching | Phone normalization plus CRM search | Phone formats vary wildly; matching fails without normalization |
| Extraction | Claude Sonnet 5.5 or OpenAI’s GPT models with a JSON schema | Reliable structured output from messy conversational text |
| Validation | Code step that checks picklists, dates and number ranges | CRM writes fail or corrupt reports when values do not match exactly |
| Confirmation | Slack interactive message or a CRM task | High-impact fields need a human; a button is faster than a form |
| Orchestration | n8n | Webhooks, HTTP calls to phone APIs, and built-in HubSpot and Salesforce nodes in one place |
How to build it
- Agree on the fields. Sit with sales leadership and pick the eight to twelve properties that matter. For each, write the allowed values and what counts as evidence for them.
- Wire the call webhook. Subscribe to call-ended or recording-ready events. Many phone APIs connect through n8n’s HTTP Request node rather than a dedicated node, so plan time for authentication and pagination.
- Normalize and match. Convert numbers to E.164, search contacts first, then companies, then open deals. If more than one record matches, ask the rep to choose instead of guessing.
- Write the extraction prompt. Include the field list with allowed values, two short example transcripts with correct outputs, and the instruction to return “not discussed” rather than infer.
- Validate every value. Reject anything outside a picklist, dates in the past for next steps, and amounts outside a sane range. Rejected fields go to the rep, not to the CRM.
- Split auto-write from confirm. Write notes and descriptive fields directly. Send stage, amount and close-date changes for approval. Record who approved each change.
- Pilot with three reps. Compare AI-filled fields to what those reps would enter for two weeks, then tune the prompt and picklist mappings before rolling out.
What breaks in production
- Shared numbers. A company main line maps to six contacts. Fall back to the dialer’s record ID or ask the rep.
- Speaker confusion. Without diarization, the model attributes the rep’s pitch (“we usually see a 30-day rollout”) to the prospect. Require speaker labels or skip extraction for that call.
- Transcription errors on specifics. “Fifteen” versus “fifty” and competitor names are common misses. Flag numeric and named fields as lower confidence by default.
- Picklist drift. An admin renames a stage and every write fails silently. Pull picklist values from the CRM at runtime rather than hardcoding them.
- Overwriting better data. A short follow-up call with no budget talk sets budget to “not discussed”. Never overwrite a filled field with an empty or unknown value.
- Recording consent gaps. A rep disables the recording notice on outbound calls. Audit settings monthly, especially for numbers in all-party consent states.
Timeline and cost
One phone system, one CRM, and a defined field set typically take two to four weeks including the pilot. Lumeor builds call-to-CRM automation in the range of $6,000 to $12,000. The range moves with how many phone systems you use, whether transcription comes from the phone platform or a separate service, and how complex your approval rules are. Running costs are transcription (billed per audio minute by most services) plus model usage per call; check current pricing for both.
How to measure success
- Fill rate for each target CRM field on connected calls
- Rep-reported admin minutes per day, before and after
- Share of AI-proposed stage changes approved without edits
- Next-step tasks created per 100 connected calls
- Minutes from call end to CRM update