How it works
What this workflow does
Turn a sales call into evidence-backed coaching notes. An authenticated webhook retrieves the specified Fireflies transcript, asks OpenAI for up to four objections with exact excerpts, verifies each quote against a transcript line, and sends the note to the assigned sales lead in Slack. Sharing to the wider coaching channel is a separate, explicit step.
The workflow imports inactive with dryRun: true. Run with sample data uses a fictional transcript and objection output, so the preview does not call Fireflies, OpenAI, Slack, or the Data Table.
This is the conversation-analysis layer for the AI-Powered Conversation Intelligence & Data Capture blueprint, with the surrounding meeting process covered by the Meeting Lifecycle & Outcome Verification blueprint.
Evidence before coaching
The Fireflies request must return the requested transcript ID with readable sentences under 40,000 characters. The model may return zero to four objections, each with a category, an exact quote between 8 and 160 characters that appears within one transcript line, and a coaching suggestion under 220 characters. Duplicate quotes are removed. Any unsupported quote or invalid field stops the run before a Slack request.
A call with no supported objection is recorded as no_objections and produces no review message. Sensitive details, names, contact information, and performance ratings are excluded by the prompt; the reviewer still checks every excerpt before sharing.
Review, then optionally share
A review is reserved in the Data Table by meeting ID. The Slack approval request goes only to the configured sales lead and waits up to two days. Only that reviewer can approve; a decline or timeout is recorded as declined or review_expired.
shareAfterApproval is false by default. When enabled and the note is approved, the workflow reserves a delivery entry, posts the reviewed note to the private coaching channel, confirms the Slack timestamp, and records it. If delivery stops at post_pending, confirm the channel result before retrying.
Validation scope
The supplied report confirms the isolated n8n 2.47.4 import, inactive state, and sample path. It also covers structural checks, transcript-excerpt matching, no-objection handling, reviewer binding, and the approval requirement for channel delivery. Live Fireflies, OpenAI, Slack, and Data Table calls require a staging test with your accounts.
How to use
Before you start
- A current n8n instance with Data Table support.
- A Fireflies API key with access to the relevant transcripts.
- An OpenAI API key and a JSON-mode model.
- A Slack app with signed approvals and Capture Who Responded support.
- A private Slack channel for coaching notes and a bot token with
chat:writeaccess.
1. Import and run the sample
Download the complete package, extract the ZIP, and read the full setup guide. Import sales-objections-coaching.n8n.json and keep it inactive.
Open Run with sample data and choose Test workflow. Check objection evidence should return the sample objection with its exact quote and coaching suggestion.
2. Create the state table
Create an n8n Data Table with text columns event_key, status, detail, and result_id. Enter its ID in Setup. The workflow uses the meeting ID, review state, reviewer, and optional Slack message timestamp.
3. Configure the reviewer and model
In Setup, set reviewerId, coachingChannelId, the OpenAI model, and keep shareAfterApproval false for the first staging run. The reviewer ID and channel ID must be real Slack member and channel IDs.
4. Connect credentials
- Add a Header Auth credential on Read Fireflies call using
Authorization: Bearer <Fireflies API key>. - Add a separate Header Auth credential on Find objections with OpenAI using
Authorization: Bearer <OpenAI API key>. - Configure the Slack approval credential on Ask sales lead to review.
- Add a Header Auth credential for Share coaching in Slack using a Slack bearer token with
chat:writeand access to the private channel. - Put a private inbound Header Auth credential on Receive event.
5. Send a transcript-ready event
Have a trusted relay verify the Fireflies event and forward {"meetingId":"..."}. Use the supplied test payloads to check the transcript, model output, and approval shapes. The webhook acknowledges receipt; the Data Table and execution show the outcome.
6. Review before sharing
In staging, disable dry run while keeping shareAfterApproval false. Review exact excerpts and make sure the private channel is restricted to the people who should see coaching notes. Enable sharing only after that check.
The configured reviewer can approve or decline. No response within two days is logged as review_expired. Review all excerpts for sensitive details before approving; decline and edit the note manually if changes are needed. Serialize events for the same meeting ID and set transcript retention for n8n and the model provider.
Related automations
Use the Sales-Call Follow-Up Draft System for the rep's follow-up and the Missed Demo Follow-Up System when the meeting does not happen. The Tender Bid Review System and Proposal Draft & Slack Approval System use the same reviewer-gated pattern. Read the Conversation Intelligence blueprint for the wider call-analysis process.