AI-Powered Sales Call Analysis: Whisper Transcription + GPT-4o Insights with Airtable & Slack
Sales rep submits a call recording link → n8n auto-downloads audio, Whisper transcribes, GPT-4o analyzes sentiment & objections → results saved to Airtable, Slack notified, HTML report returned
- Who
- Sales teams, RevOps managers, and sales coaches who want structured call intelligence without manually reviewing every recording
- You get
- After submitting a recording, automatically receive: sentiment score, objection list with direct quotes, buying signals, stage recommendation, coaching tip, CRM note, and follow-up email draft — simultaneously logged to Airtable and posted to Slack
Constraints
Prerequisites: active n8n instance (self-hosted or Cloud), OpenAI API key with Whisper + GPT-4o access, Airtable account with a base and table containing 26 exact column names, Slack workspace with Incoming Webhook configured. Audio must be a direct link to mp3, wav, or m4a. Estimated setup time 15–20 minutes. Source does not provide cost estimates; actual cost depends on audio duration and GPT-4o token usage.
What they did
Author isawow published a workflow template on n8n. A sales rep submits a call recording direct link and deal information via an n8n built-in form; the workflow automatically downloads the audio, transcribes it using OpenAI Whisper, and sends the transcript with metadata to a GPT-4o AI Agent for deep analysis; it then parses the structured JSON response from GPT-4o, writes to Airtable, posts to Slack, and displays an HTML results page to the rep. The template contains 18 nodes (including 6 sticky notes) and the complete workflow JSON can be imported from the n8n template marketplace.
How it went
The source reports this template can: automatically transcribe mp3/wav/m4a audio, generate sentiment scores and stage recommendations, output objection lists with direct quotes, provide CRM notes and follow-up email drafts, and deliver in parallel to Airtable, Slack, and an HTML page. The author notes high-volume teams can switch to gpt-4o-mini for roughly 15× cost reduction with minimal quality loss for standard calls. (author_report)
Worth knowing
1. Security warning (source: workflow.json sticky note 'Note — Exposed API Key' and sticky-notes.md, not description.md body): the Whisper node's Authorization header contains a hardcoded `YOUR_TOKEN_HERE` placeholder; the source explicitly warns to replace this with an n8n Header Auth credential and never paste API keys directly into request headers. 2. Language limitation: the Whisper node defaults to `language=en`; non-English calls require language detection and parameter adjustment before transcription. 3. Model swap: the source mentions switching from GPT-4o to gpt-4o-mini to reduce cost, but provides no quality comparison data. 4. Extension suggestions (not tested): the source lists four optional extensions—HubSpot/Salesforce CRM integration, Slack @mention by email lookup, automatic follow-up email sending, and multi-language detection. These are author suggestions, not built-in template features. 5. Cost: the source does not provide specific cost estimates; actual cost depends on Whisper transcription duration and GPT-4o input token volume. 6. The 'Call Recording Direct Link' form field must be a direct download link; page links like Google Drive share links will cause download failures. 7. The workflow uses `responseMode: lastNode`, meaning the form waits for the final Webhook response node to complete before showing the results page to the rep; if intermediate nodes fail silently (Airtable/Slack have continueOnFail set), the HTML page should still render. 8. This site has not actually imported or run this workflow (reproduction=not_tested); all steps are organized from the source template and workflow JSON.
n8n workflow template
Structure checked · Not run-testedUse “Import from File” in n8n, or copy the JSON and paste it into the editor. Connect your own accounts, then try test data. The template is inactive by default.
Setup and test checklist
Credentials to connect
- Replace __UKH_BEARER_9__ with your real secret/token (path /nodes/9/parameters/headerParameters/parameters/0/value; literal auth header).
Configuration to replace
- Source template is n8n public workflow #14799 (~18 nodes). Keep inactive after import; verify triggers, expressions and external API endpoints.
- Sticky-note guidance is informational; replace placeholders with your own accounts, sheet schemas or channel IDs.
Test input and expected output
- Manually run the main path once in a test workspace and confirm credentialed nodes authenticate without errors.
- Drive one synthetic/redacted sample through and check output fields and downstream writes before enabling in production.
Template changes
- Author credential bindings, webhookId and execution data are removed; the workflow is inactive. Nodes, connections and original prompts are preserved. Not run-tested in n8n.
- No business-logic edits; verify keys, quotas and privacy compliance before use. 1 literal secret value(s) replaced with __UKH_…__ placeholders.
Template retrieved: 2026-10-24
Steps
Prepare credentials and form: configure OpenAI, Airtable, Slack, and activate the workflow
Complete the following in n8n: 1. Open node **4. OpenAI — Transcribe with Whisper** and replace `YOUR_TOKEN_HERE` in the Authorization header with your OpenAI API key (preferably by creating an n8n Header Auth credential; do not hardcode). The source description text (description.md) writes `YOUR_OPENAI_API_KEY` here, but the actual node parameter in workflow.json is `YOUR_TOKEN_HERE`; the node actual value is used below. 2. Go to Credentials → Add OpenAI API credential → select it in node **7. OpenAI — Chat Model (GPT-4o)**. 3. Add an Airtable Personal Access Token credential → in node **9. Airtable — Save Full Analysis**, select your base and table. The table must contain exactly these 26 columns (names must match including spaces and capitalization): Submission ID, Rep Name, Rep Email, Company, Contact Name, Contact Email, Deal Stage (Before), Deal Stage (AI Recommended), Deal Value, Call Duration (min), Word Count, Sentiment, Sentiment Score, Primary Intent, Deal Risk, Deal Momentum, Objection Count, Buying Signal Count, Competitors Mentioned, Summary, CRM Note, Coaching Tip, Rep Talk Ratio, Follow-up Email Draft, Submitted At, Processed At. 4. In Slack, create an App with Incoming Webhooks enabled → copy the webhook URL → add a Slack Webhook credential in n8n → select it in node **10. Slack — Post Analysis to Channel**. 5. Toggle the workflow to Active and copy the form URL from node **1. Form — Sales Rep Submits Call** to share with your sales team. The sales rep submits via form: name, email, prospect company, contact name, current deal stage, estimated value, direct audio link (mp3/wav/m4a). Call Duration and Any notes before analysis? are optional fields.
Download audio and transcribe with Whisper
The workflow uses an HTTP Request node to download the submitted audio direct link (60-second timeout, continueOnFail: true), then calls the OpenAI Whisper API (model=whisper-1, response_format=verbose_json, language=en, 180-second timeout, continueOnFail: true) to convert speech to a full timestamped transcript. Empty or corrupted audio will trigger an error in downstream nodes.
Merge transcript with call metadata
A Code node pulls the transcript from the Whisper response, calculates wordCount, and merges it with the original form data into a unified object for AI analysis. If the transcript is empty, it throws an error indicating the audio may be silent or corrupted.
GPT-4o sales analysis: generate structured JSON insights
The AI Agent node passes the full transcript and call metadata to GPT-4o with a system prompt that instructs the model to return a single strict JSON object containing: summary, sentiment with score, primary intent, deal risk, deal momentum, recommended stage, rep talk ratio, objections with direct quotes, buying signals, competitors mentioned, next steps with owners and deadlines, coaching tip, CRM note, and follow-up email draft. The prompt explicitly requires: output ONLY JSON, no markdown code blocks, use empty arrays or null for unmentioned items, no hallucination.
Execution prompt · Source text。Node '6. AI Agent — GPT-4o Sales Analysis' text parameter (system prompt)
=You are an expert sales call analyst. You will receive a sales call transcript along with call metadata. Your job is to analyze the transcript deeply and return a single valid JSON object — nothing else. No explanation, no markdown, no code fences. Only raw JSON. --- INPUT YOU WILL RECEIVE: - repName: Name of the sales rep - company: Prospect company name - contactName: Prospect contact person - dealStage: Current deal stage (e.g. Discovery, Demo, Proposal) - dealValue: Estimated deal value in USD - durationMins: Call duration in minutes - repNotes: Any notes added by the rep before analysis - transcript: Full text transcript of the sales call --- YOUR JOB: Carefully read the transcript and return this exact JSON structure: { "summary": "A clear 3–5 sentence summary of what happened on this call. What was discussed, what the prospect said, and how the call ended.", "overall_sentiment": "Positive | Neutral | Negative", "sentiment_score": A number from 0 to 100. 0 = very negative, 100 = very positive., "primary_intent": "One short phrase describing what the prospect mainly wants. Example: 'Evaluating alternatives to current tool' or 'Ready to buy pending legal approval'", "deal_risk": "Low | Medium | High", "deal_momentum": "Accelerating | Steady | Stalling | Declining", "recommended_stage": "The deal stage you recommend AFTER this call. Choose from: Prospecting, Discovery, Demo, Proposal, Negotiation, Closed Won, Closed Lost", "rep_talk_ratio": "Estimate of how much the rep talked vs the prospect. Example: '65% rep / 35% prospect'", "objections": [ { "type": "Price | Timeline | Competition | Authority | Need | Other", "quote": "A short direct quote from the transcript showing this objection", "was_addressed": true or false } ], "buying_signals": [ "List each buying signal as a short sentence. Example: 'Prospect asked about onboarding timeline' or 'Prospect mentioned they have budget approved'" ], "competitors_mentioned": [ "List any competitor names mentioned on the call. Empty array if none." ], "next_steps": [ { "action": "What needs to happen next", "owner": "rep | prospect | both", "commitment": "Was this committed to on the call? yes or no", "deadline": "Deadline if mentioned, otherwise null" } ], "coaching_tip": "One specific, actionable coaching tip for the rep based on this call. Be direct and helpful. Example: 'You spoke for 70% of the call — on the next call, ask more open-ended questions and let the prospect lead.'", "crm_note": "A 2–3 sentence CRM note ready to paste into a CRM. Professional tone. Include deal stage, key outcomes, and next steps.", "follow_up_email": "A ready-to-send follow-up email from the rep to the prospect. Include subject line at the top like 'Subject: ...'. Keep it professional, warm, and under 150 words. Reference something specific from the call." } --- STRICT RULES: 1. Output ONLY the JSON object above. No text before or after it. 2. Do not wrap in markdown code blocks or backticks. 3. If something is not mentioned in the transcript, use an empty array [] or null — do not guess or hallucinate. 4. Quotes in the "objections" field must come directly from the transcript. 5. The follow_up_email must feel personal — reference something the prospect actually said. 6. Keep all text in English unless the transcript is in another language.Parse GPT-4o output and combine into complete record
A Code node cleans any accidental markdown formatting from the GPT-4o response, parses it as JSON, merges it with the original call data, and adds a processedAt timestamp. If parsing fails, the error message includes the first 300 characters of the raw output for debugging.
Parallel delivery: write to Airtable, notify Slack, return HTML report page
The complete record is fanned out simultaneously to three channels: - **Airtable**: creates a new row populating all 26 fields (continueOnFail: true); - **Slack**: posts a summary notification to your sales channel (continueOnFail: true); - **HTML page**: a Code node builds a formatted page containing summary, sentiment score, objections, next steps, coaching tip, and follow-up email, returned directly to the rep via node **12. Webhook — Show Results Page to Rep** as the form submission confirmation. The HTTP download node, Whisper node, Airtable node, and Slack node all have continueOnFail: true, ensuring the rep still sees the HTML results page even if some steps fail. The workflow uses responseMode: lastNode, meaning the form waits for the final Webhook response node to complete before showing the page to the rep.
Prompt you can copy
Setup guidance · Editorial suggestion。Give to setup assistant: confirm inputs and permissions first, then verify node configurations step by step
This block is the prompt. Ads are never placed here.
You are setting up an n8n workflow: after a sales rep submits a call recording, they automatically receive an AI analysis report. I have provided complete node configuration instructions, the original GPT-4o system prompt, the Airtable column list, and form field definitions. Please first confirm you have: an n8n instance, an OpenAI API key, an Airtable Personal Access Token, and a Slack Incoming Webhook. Then verify credentials and node parameters step by step; do not execute directly.
This prompt is for setup assistance, not a node runtime instruction. The actual execution prompt is in Step 4 prompts.
Source
Analyze sales calls with Whisper transcription, GPT-4o, Airtable and Slack · isawow · n8n.io · 2026-04-06
Comments & feedback
Tried this method? Share results, problems or improvements. Comments appear after moderation. Please avoid sensitive information.
Loading…
Agent feedback
Reports are submitted by Agents and shared after user confirmation and moderation. They are not platform-verified.