Search documentation

Search for pages in the documentation

Meeting Follow-Up Workflow

Build an automated meeting follow-up with AI summarization

In this tutorial, you'll build a workflow that automatically generates an AI summary of meetings and posts it to Slack. This is one of the most common and valuable automation patterns.

Time: 20 minutes Difficulty: Beginner Prerequisites:

What You'll Build

A workflow that:

  1. Triggers when a meeting with a recording ends
  2. Loads meeting details including transcript
  3. Uses AI to generate a summary
  4. Posts the summary to Slack
text
[Meeting Ended] → [Load Meeting] → [AI: Summarize] → [Slack Post]

Step 1: Create the Workflow

  1. Navigate to Workflows
  2. Click "Create Workflow"
  3. Name it: "Meeting Follow-Up"
  4. Click "Create"

Step 2: Add the Event Trigger

Configure the trigger for recorded meetings:

  1. Add an Event Trigger node
  2. Set Event Type to: MEETING_ENDED

Step 3: Add Load Meeting

  1. Connect a Load Meeting node after the trigger
  2. No additional configuration needed - it uses the meeting ID from the trigger

Step 4: Add Conditional Check (Optional)

Only process meetings that have recordings:

  1. Add an If node after Load Meeting
  2. Configure the condition:
cel
json.callRecording != null
  1. Connect the true path to continue
  2. Connect the false path to a Sink node (ends that branch)

This prevents errors when meetings don't have transcripts.

Step 5: Add AI Summarization

Now add the AI node to generate summaries:

  1. Add an AI Prompt node
  2. Configure it:

Model: Medium

Return Type: String

System Message:

liquid
You are a professional meeting summarizer. Create concise, actionable summaries that help team members who weren't in the meeting understand what happened.

Guidelines:
- Be concise (3-5 bullet points max)
- Focus on decisions and action items
- Use professional language
- Don't include small talk or off-topic discussion

User Message:

liquid
Summarize this meeting:

Meeting: {{ json.meeting.title }}
Date: {{ json.meeting.startTime | date: "%B %d, %Y" }}
Attendees: {{ json.meeting.attendees | map: "name" | join: ", " }}

Transcript Summary:
{{ json.callRecording.transcriptSummary }}

Step 6: Add Slack Notification

Post the AI-generated summary to Slack:

  1. Add a Slack Post node after the AI node
  2. Configure it:

Channel: Select your channel

Message:

liquid
šŸ“‹ *Meeting Summary: {{ json.meeting.title }}*

{{ json.value }}

_Generated automatically by Agents_

Understanding the Output

Notice {{ json.value }} in the Slack message. This references the AI node's output:

  • After AI Prompt executes, its output is available as json.value
  • The string output (the summary) is directly inserted into the Slack message

Step 7: Add Error Handling

Handle potential AI failures gracefully:

  1. Connect the AI node's error output
  2. Add another Slack Post node for errors
  3. Configure the error notification:

Message:

liquid
āš ļø *Meeting Summary Failed*

Meeting: {{ json.meeting.title }}
Error: Unable to generate summary. Please review the meeting manually.

Step 8: Final Workflow Structure

Your complete workflow should look like:

text
[Event Trigger: MEETING_ENDED]
        │
        ā–¼
[Load Meeting]
        │
        ā–¼
[If: Has Recording?]
        │
    ā”Œā”€ā”€ā”€ā”“ā”€ā”€ā”€ā”
    ā–¼       ā–¼
  [Yes]   [No → Sink]
    │
    ā–¼
[AI Prompt: Summarize]
    │
ā”Œā”€ā”€ā”€ā”“ā”€ā”€ā”€ā”
ā–¼       ā–¼
[Slack]  [Error Slack]

Step 9: Test Your Workflow

Test the workflow using the trigger execution feature:

  1. Click the "Trigger" button in the toolbar
  2. In the trigger execution modal, fill in the form with your test data (select a recorded meeting)
  3. Click "Execute"
  4. Check your Slack channel for the summary

Once testing succeeds, click "Release" to make the workflow active

Example Output

Here's what a typical summary looks like:

text
šŸ“‹ Meeting Summary: Q4 Planning Review

• Decision: Moving forward with the enterprise tier launch in November
• Action Item: Sarah to finalize pricing by Friday
• Action Item: Mike to update the roadmap document
• Key Discussion: Budget allocation approved for additional headcount
• Next Steps: Follow-up meeting scheduled for next Tuesday

Generated automatically by Agents

Customizing the Summary

Different Summary Styles

Executive Summary:

liquid
Create a brief executive summary suitable for leadership.
Focus on decisions, financial impact, and strategic direction.
Maximum 3 sentences.

Technical Summary:

liquid
Summarize the technical discussions from this meeting.
Include any architecture decisions, technical debt discussed, and implementation details.

Sales Summary:

liquid
Summarize this sales meeting focusing on:
- Customer needs and pain points
- Objections raised
- Next steps in the sales process
- Deal probability assessment

Adding Action Items

Extract action items separately:

  1. Add another AI Prompt node
  2. Configure for action items:

Return Type: String List

User Message:

liquid
Extract all action items from this meeting.
Each item should be a complete, actionable task.
If an owner or deadline was mentioned, include it.

{{ json.callRecording.transcriptSummary }}

Then format in Slack:

liquid
šŸ“‹ *Meeting Summary: {{ json.meeting.title }}*

{{ steps.summary.value }}

*Action Items:*
{% for item in steps.actionItems.value %}
• {{ item }}
{% endfor %}

Advanced: Adding Urgency Detection

Add AI-based urgency detection to prioritize notifications:

  1. Add an AI Prompt node after Load Meeting
  2. Configure for boolean output:

Return Type: Boolean

User Message:

liquid
Determine if this meeting requires urgent follow-up.

Return true if ANY of these apply:
- Customer expressed concerns or frustration
- Deadline mentioned within 48 hours
- Competitive threat discussed
- Deal at risk

Meeting summary:
{{ json.callRecording.transcriptSummary }}
  1. Add an If node to check the result:
cel
json.value == true
  1. Route urgent meetings to a different channel or add a priority indicator

Troubleshooting

Issue: AI returns "No transcript available"

Cause: Meeting doesn't have a recording or transcript Solution: Ensure the If node checks for json.callRecording != null

Issue: Summary is too long

Solution: Add length constraints to the system message:

text
Maximum 5 bullet points. Each point should be one sentence.

Issue: Summary misses key points

Solution: Be more specific in the prompt:

text
Focus specifically on: decisions made, action items assigned, and deadlines mentioned.

Congratulations! šŸŽ‰

You've built an AI-powered meeting follow-up workflow! You now understand:

  • āœ… How to use AI nodes for text generation
  • āœ… How to pass data between nodes
  • āœ… How to add conditional logic
  • āœ… How to handle errors gracefully
  • āœ… How to customize AI prompts

Next Steps