Deal Room Automation
Build workflow automation for deal rooms with CRM integration
In this tutorial, you'll build a comprehensive workflow that automates deal room activities, including CRM updates, task creation, and intelligent notifications based on meeting outcomes.
Time: 30 minutes Difficulty: Intermediate Prerequisites:
- Completed previous tutorials
- HubSpot or Salesforce integration connected
- Understanding of conditional logic
What You'll Build
A workflow that:
- Triggers when a deal room meeting ends
- Analyzes the meeting for deal signals
- Updates CRM opportunity status
- Creates follow-up tasks
- Notifies the team with context-aware messages
[Deal Room Meeting] → [Analyze] → [Update CRM] → [Create Task] → [Notify]
Step 1: Create the Workflow
- Create a new workflow named "Deal Room Automation"
- Add an Event Trigger with type:
MEETING_ENDED_FOR_DEAL_ROOM
This special event type only fires for meetings associated with deal rooms.

Step 2: Load Meeting Data
Add a Load Meeting node to get full meeting details including:
- Meeting metadata
- Attendees (internal and external)
- Transcript and summary
- Deal room association
Step 3: Analyze Meeting Sentiment
Use AI to analyze the meeting's business signals:
Add AI Prompt for Sentiment
Model: Medium Return Type: Integer
System Message:
You are a deal analyst evaluating sales meeting outcomes.
Rate meetings on a scale of 1-10 based on deal health signals.
1-3: Negative (objections, concerns, competition mentioned)
4-6: Neutral (informational, no clear signals)
7-10: Positive (enthusiasm, commitment, next steps agreed)
Return only the number.
User Message:
Rate this sales meeting:
Meeting: {{ json.meeting.title }}
Attendees: {{ json.meeting.attendees | map: "name" | join: ", " }}
Summary:
{{ json.callRecording.transcriptSummary }}
Name this node: "Sentiment Analysis"
Step 4: Route Based on Sentiment
Add an If node to route based on sentiment score:
High Sentiment Path (7-10)
json.value >= 7
Low Sentiment Path (1-3)
Add another If node for low sentiment:
json.value <= 3
Neutral Path (4-6)
Default path for scores 4-6
Step 5: Configure High Sentiment Path
For positive meetings, update the deal stage and notify the team:
Update CRM Opportunity
Add CRM Update Opportunity node:
Stage: Negotiation (or your appropriate stage)
Notes Template:
Meeting on {{ json.meeting.startTime | date: "%B %d" }} showed positive signals.
Sentiment score: {{ steps.sentimentAnalysis.value }}/10
Moving to negotiation stage.
Create Follow-up Task
Add Create HubSpot Task (or Salesforce Task):
Subject:
Follow up on positive meeting: {{ json.meeting.title }}
Body:
The meeting showed strong buying signals ({{ steps.sentimentAnalysis.value }}/10).
Recommended next steps:
- Send proposal within 48 hours
- Schedule technical deep-dive
- Loop in executive sponsor
Meeting summary:
{{ json.callRecording.transcriptSummary }}
Due Date: 2 days from now Priority: High
Slack Notification
Add Slack Post:
Channel: #deals or #sales-wins
Message:
🎉 *Positive Signal Detected!*
*Deal:* {{ json.dealRoom.name }}
*Meeting:* {{ json.meeting.title }}
*Score:* {{ steps.sentimentAnalysis.value }}/10
The meeting showed strong buying signals. A follow-up task has been created.
Step 6: Configure Low Sentiment Path
For concerning meetings, escalate and create recovery tasks:
Update CRM with Note
Add CRM Update Opportunity:
Notes Template:
⚠️ Meeting on {{ json.meeting.startTime | date: "%B %d" }} showed concerning signals.
Sentiment score: {{ steps.sentimentAnalysis.value }}/10
Review required.
Create Urgent Task
Add Create HubSpot Task:
Subject:
URGENT: Review concerning meeting - {{ json.meeting.title }}
Body:
The meeting showed concerning signals ({{ steps.sentimentAnalysis.value }}/10).
Immediate action required:
- Review meeting transcript
- Schedule internal strategy call
- Prepare risk mitigation plan
Meeting summary:
{{ json.callRecording.transcriptSummary }}
Due Date: Today Priority: High
Alert Notification
Add Slack Post:
Channel: #deals-at-risk
Message:
⚠️ *Deal Risk Alert*
*Deal:* {{ json.dealRoom.name }}
*Meeting:* {{ json.meeting.title }}
*Score:* {{ steps.sentimentAnalysis.value }}/10
Concerning signals detected. Urgent review task created.
cc: @sales-manager
Step 7: Configure Neutral Path
For neutral meetings, create standard follow-up:
Create Standard Task
Add Create HubSpot Task:
Subject:
Follow up: {{ json.meeting.title }}
Body:
Standard follow-up required for recent meeting.
Meeting summary:
{{ json.callRecording.transcriptSummary }}
Due Date: 3 days from now Priority: Normal
Standard Notification
Add Slack Post:
Message:
📋 *Meeting Recorded*
*Deal:* {{ json.dealRoom.name }}
*Meeting:* {{ json.meeting.title }}
*Score:* {{ steps.sentimentAnalysis.value }}/10
Summary available. Follow-up task created.
Step 8: Extract Action Items
Add parallel AI analysis to extract action items:
Branch After Load Meeting
Use Broadcast to run sentiment analysis and action item extraction in parallel.
Action Item Extraction
Add AI Prompt:
Model: Medium Return Type: String List
User Message:
Extract all action items from this meeting.
Format each as: "[Owner] will [action] by [date if mentioned]"
If owner not specified, use "Team"
{{ json.callRecording.transcriptSummary }}
Merge Results
Use Zip to combine sentiment and action items before routing.
Step 9: Complete Workflow Structure
[Deal Room Meeting Ended]
│
▼
[Load Meeting]
│
▼
[Broadcast]
┌────┴────┐
▼ ▼
[Sentiment] [Action Items]
│ │
└────┬────┘
▼
[Zip]
│
▼
[If: Score >= 7]
┌─────┴─────┐
▼ ▼
[Yes] [If: Score <= 3]
│ ┌────┴────┐
│ ▼ ▼
│ [Yes] [Neutral]
│ │ │
▼ ▼ ▼
[Update] [Alert] [Standard]
[Task] [Task] [Task]
[Notify] [Notify] [Notify]
Step 10: Add Error Handling
Connect error outputs to a unified error handler:
⚠️ *Workflow Error*
Deal: {{ json.dealRoom.name }}
Meeting: {{ json.meeting.title }}
An error occurred during processing. Please review manually.
Step 11: Release and Test
-
Release the workflow
-
Test with various meeting types:
- Positive meeting (expect high score path)
- Concerning meeting (expect low score path)
- Neutral meeting (expect neutral path)
-
Verify:
- CRM updates appear correctly
- Tasks are created with right priority
- Slack notifications go to correct channels
Advanced Enhancements
Add Competitor Detection
Analyze this meeting for competitor mentions.
Return true if any competitor was discussed.
Known competitors: [CompanyA, CompanyB, CompanyC]
{{ json.callRecording.transcriptSummary }}
Route competitor mentions to additional alerting.
Add Budget Discussion Detection
Did this meeting include budget discussions?
Return true if pricing, budget, or cost was discussed.
{{ json.callRecording.transcriptSummary }}
Add Decision Maker Identification
Identify if any decision makers were in this meeting.
Based on titles, behavior, and discussion context.
Attendees:
{% for attendee in json.meeting.attendees %}
- {{ attendee.name }} ({{ attendee.title }})
{% endfor %}
{{ json.callRecording.transcriptSummary }}
Troubleshooting
CRM Update Failing
Check:
- Is CRM connected?
- Does the deal room have a linked opportunity?
- Do you have permission to update?
Wrong Sentiment Scores
Try:
- Add more specific criteria to prompt
- Include examples in system message
- Test with various meeting types
Tasks Not Creating
Check:
- Task owner permissions
- Date format validity
- Required fields populated
Congratulations! 🎉
You've built a sophisticated deal room automation! You now understand:
- ✅ Multi-path conditional routing
- ✅ CRM integration patterns
- ✅ Task creation automation
- ✅ Context-aware notifications
- ✅ Parallel processing with Broadcast and Zip
Next Steps
- Explore AI Content Generation for more AI patterns
- Review HubSpot Integration for advanced CRM features
- Read Error Handling Guide for robust workflows