Intermediate~15 min setupAI & CommunicationVerified April 2026
OpenAI logo
Slack logo

How to Clean Up Meeting Notes with Pipedream

Paste raw meeting notes into Slack and get AI-formatted structured notes with action items instantly.

Steps and UI details are based on platform versions at time of writing — check each platform for the latest interface.

Best for

Remote teams who take messy meeting notes and need consistent formatting with extracted action items

Not ideal for

Teams that already use dedicated meeting note tools like Notion or Obsidian with built-in templates

Sync type

real-time

Use case type

enrichment

Real-World Example

šŸ’”

A 12-person marketing agency uses this to clean up client meeting notes. Team members paste raw notes into #client-meetings and get back formatted summaries with action items, deadlines, and next steps within 15 seconds. Before automation, someone spent 20 minutes after each meeting reformatting notes and often missed action items buried in rambling paragraphs.

What Will This Cost?

Drag the slider to your expected monthly volume.

/mo
505005K50K

Each platform counts differently — Zapier: 1 task per trigger. Make: 1 operation per module per record. n8n: 1 execution per run.

Prices shown for annual billing. Based on published pricing as of April 2026.

Estimated ROI

1000

min saved/mo

$583

labor value/mo

Free

no platform cost

Based on ~2 min manual effort per operation at $35/hr fully loaded labor cost.

Implementation

Skip the setup

Import this workflow directly into Pipedream

Copy the pre-built Pipedream blueprint and paste it straight into Pipedream. All modules, filters, and field mappings are already configured — you just need to connect your accounts.

Before You Start

Make sure you have everything ready.

Slack workspace admin access to create channels and install apps
OpenAI API key with GPT-4 access and available credits
Dedicated Slack channel for meeting notes (not a high-traffic channel)
Team agreement on message format trigger (like starting with 'Meeting:' or 'Notes:')

Field Mapping

Map these fields between your apps.

FieldAPI Name
Required
Message Text
Channel ID
Thread Timestamp
System Prompt
Model Name
Temperature
Max Tokens
1 optional fieldā–ø show
User ID

Step-by-Step Setup

1

Dashboard > New Workflow

Create New Workflow

Go to pipedream.com and click New Workflow in the top right. You'll land on the workflow builder with an empty canvas. The interface shows Sources on the left for triggers and Steps below for actions.

  1. 1Click the blue 'New Workflow' button
  2. 2Select 'Start from scratch' option
  3. 3Name your workflow 'Meeting Notes Cleanup'
āœ“ What you should see: You should see an empty workflow canvas with 'Add a trigger' as the first step.
2

Workflow > Add Trigger > Slack

Add Slack Message Trigger

Click Add a trigger and select Slack. Choose the New Message trigger type. This fires instantly when someone posts in your designated channel. You'll need to connect your Slack workspace and select the specific channel.

  1. 1Click 'Add a trigger'
  2. 2Search for 'Slack' in the apps list
  3. 3Select 'New Message' from trigger options
  4. 4Connect your Slack account
āœ“ What you should see: You should see 'Slack - New Message' as your trigger step with a green connected status.
⚠
Common mistake — The trigger fires on ALL messages in the channel, including reactions and thread replies. You'll filter these out in the next step.
message template
šŸ”” New Record: {{choices[0].message.content}} {{model}}
usage.prompt_tokens: {{usage.prompt_tokens}}
usage.completion_tokens: {{usage.completion_tokens}}
#sales
šŸ”” New Record: Jane Smith
Company: Acme Corp
3

Trigger Configuration > Channel Selection

Configure Channel and Filter

Select your meeting notes channel from the dropdown. Add a filter condition to only process messages that start with a specific keyword like 'notes:' or contain more than 50 characters. This prevents the workflow from running on short messages or reactions.

  1. 1Choose your target channel from the dropdown
  2. 2Set 'Message Length' condition to greater than 50 characters
  3. 3Add text filter for messages starting with 'Meeting:' or 'Notes:'
āœ“ What you should see: The trigger shows your selected channel name and filter conditions in the configuration panel.
⚠
Common mistake — Don't use a high-traffic channel like #general or you'll hit rate limits fast. Create a dedicated #meeting-notes channel.
OpenAI
OP
trigger
filter
Condition
matches criteria?
yes — passes through
no — skipped
Slack
SL
notified
4

Workflow > Add Step > Code

Add Node.js Code Step

Click Add Step below the trigger and select Code. Choose Node.js runtime. This step will extract the message text and prepare it for OpenAI formatting. You'll write code to clean up the raw text and remove any Slack formatting artifacts.

  1. 1Click the '+' button to add a step
  2. 2Select 'Code' from the step types
  3. 3Choose 'Run Node.js code'
  4. 4Name the step 'Format Message Text'
āœ“ What you should see: You should see a code editor with async function boilerplate and access to the Slack trigger data.

This Node.js code cleans up Slack message formatting artifacts and extracts key meeting details before sending to OpenAI. Paste it in the code step between Slack trigger and OpenAI.

JavaScript — Code Stepexport default defineComponent({
ā–ø Show code
export default defineComponent({
  async run({ steps, $ }) {
    const message = steps.trigger.event;

... expand to see full code

export default defineComponent({
  async run({ steps, $ }) {
    const message = steps.trigger.event;
    
    // Clean up Slack formatting
    let cleanText = message.text
      .replace(/<@U[A-Z0-9]+>/g, '') // Remove user mentions
      .replace(/<#C[A-Z0-9]+\|[^>]+>/g, '') // Remove channel links
      .replace(/[\s\S]*?/g, '') // Remove code blocks
      .replace(/`([^`]+)`/g, '$1') // Remove inline code
      .replace(/\s+/g, ' ') // Collapse whitespace
      .trim();
    
    // Extract meeting metadata
    const meetingMatch = cleanText.match(/^Meeting:\s*(.+?)\./i);
    const meetingTitle = meetingMatch ? meetingMatch[1] : 'Team Meeting';
    
    // Remove common filler words for cleaner AI processing
    const fillerWords = /\b(um|uh|like|you know|basically|actually)\b/gi;
    cleanText = cleanText.replace(fillerWords, '');
    
    return {
      cleaned_text: cleanText,
      meeting_title: meetingTitle,
      original_user: message.user,
      message_length: cleanText.length,
      timestamp: message.ts
    };
  }
});
5

Workflow > Add Step > OpenAI

Add OpenAI Chat Completion Step

Add another step and search for OpenAI. Select the Chat Completions action. This sends your cleaned meeting notes to GPT-4 with specific formatting instructions. You'll configure the model, temperature, and system prompt for consistent output.

  1. 1Click '+' to add another step
  2. 2Search for 'OpenAI' in the apps list
  3. 3Select 'Chat Completions' action
  4. 4Connect your OpenAI account with API key
āœ“ What you should see: The OpenAI step appears with connection status and model configuration options.
⚠
Common mistake — Use gpt-4-turbo-preview for best formatting results. GPT-3.5 often misses action items or creates inconsistent formatting.
6

OpenAI Configuration > Messages

Configure AI Prompt

Set up the system message to format notes consistently. Use a temperature of 0.3 for predictable output. The prompt should specify exact formatting rules: bullet points for key discussion items, numbered action items with owners, and a next steps section.

  1. 1Set Model to 'gpt-4-turbo-preview'
  2. 2Set Temperature to 0.3
  3. 3Add system message with formatting instructions
  4. 4Reference the cleaned text from step 4 in user message
āœ“ What you should see: The configuration shows your prompt template with dynamic references to the previous step's output.
⚠
Common mistake — Keep the max_tokens under 1000 or you'll hit expensive token limits on long meetings. Most formatted notes fit in 500-800 tokens.
7

Workflow > Add Step > Slack > Send Message

Add Slack Reply Step

Add a final Slack step to post the formatted notes back to the channel. Select Send Message and configure it to reply in the same thread as the original message. This keeps conversations organized and shows the before/after clearly.

  1. 1Add another Slack step
  2. 2Choose 'Send Message' action
  3. 3Set Channel to same as trigger channel
  4. 4Set Thread TS to original message timestamp
āœ“ What you should see: The Slack reply step shows configuration for threading and message content from OpenAI output.
8

Send Message > Message Configuration

Map OpenAI Response to Message

In the message content field, reference the OpenAI response text. Add a prefix like 'Formatted Notes:' and include the AI-generated content. Test the mapping by expanding the data panel to see the exact field path from the OpenAI step.

  1. 1Click in the Message Text field
  2. 2Add prefix text 'Formatted Meeting Notes:'
  3. 3Reference the OpenAI completion content
  4. 4Add emoji or formatting for visual separation
āœ“ What you should see: The message preview shows how the formatted notes will appear in Slack with proper threading.
⚠
Common mistake — If the OpenAI response is empty, your prompt may be too restrictive. The message will send blank content and confuse users.
OpenAI fields
choices[0].message.content
model
usage.prompt_tokens
usage.completion_tokens
finish_reason
available as variables:
1.props.choices[0].message.content
1.props.model
1.props.usage.prompt_tokens
1.props.usage.completion_tokens
1.props.finish_reason
9

Workflow > Test

Test the Workflow

Click Test in the top right to run the workflow with sample data. If you don't have test data, go to your Slack channel and post a sample meeting note to trigger the workflow. Check each step's output to verify data flows correctly.

  1. 1Click the green 'Test' button
  2. 2Check trigger data appears correctly
  3. 3Verify code step cleans text properly
  4. 4Confirm OpenAI returns formatted notes
āœ“ What you should see: All steps show green checkmarks and the formatted message appears in your Slack channel as a threaded reply.
⚠
Common mistake — The test uses your live OpenAI API key and costs tokens. A typical test run costs $0.02-0.05 depending on message length.
Pipedream
ā–¶ Deploy & test
executed
āœ“
OpenAI
āœ“
Slack
Slack
šŸ”” notification
received
10

Workflow > Deploy

Deploy Workflow

Click Deploy to make the workflow live. It now runs automatically when new messages appear in your configured channel. The workflow processes messages in real-time with typical response times under 10 seconds for standard meeting notes.

  1. 1Click the blue 'Deploy' button
  2. 2Confirm deployment in the popup
  3. 3Test with a real message in Slack
  4. 4Monitor the execution log for any errors
āœ“ What you should see: The workflow status shows 'Active' and responds to new messages in your Slack channel automatically.

Going live

Production Checklist

Before you turn this on for real, confirm each item.

Troubleshooting

Common errors and how to fix them.

Frequently Asked Questions

Common questions about this workflow.

Analysis

VerdictWhy n8n for this workflow

Use Pipedream for this if you need instant processing and want to customize the text cleaning logic with real Node.js code. The webhook triggers fire within seconds of posting to Slack, and you can handle complex message parsing that other platforms struggle with. Skip this approach if your team is non-technical and just wants basic formatting - Zapier's built-in text formatters might be simpler.

Cost

Each workflow run costs about 2-3 Pipedream credits plus OpenAI API usage. At $0.01 per 1K tokens, a typical meeting note cleanup costs $0.02-0.05 in OpenAI fees. With 20 meetings per month, you're looking at $1-2 monthly plus Pipedream's $19 developer plan. Make's GPT-4 integration costs the same but includes 10K operations, making it cheaper for high-volume teams.

Tradeoffs

Make handles this workflow better if you need complex conditional logic - their visual flow builder makes it easier to add meeting type detection or route different note formats to different channels. Zapier's OpenAI integration is solid but their code steps are limited compared to Pipedream's full Node.js runtime. n8n gives you similar coding flexibility but requires self-hosting. Power Automate works if you're in the Microsoft ecosystem, but their AI Builder credits are expensive compared to direct OpenAI API access. Pipedream wins on developer experience and webhook reliability.

You'll hit OpenAI rate limits if multiple people post notes simultaneously - add a 2-3 second delay before the API call. Slack's message formatting is inconsistent, especially with mobile users who include weird line breaks and autocorrect artifacts. The AI sometimes creates action items from casual conversation rather than actual commitments, so your prompts need to be very specific about what constitutes a real task versus discussion points.

Ideas for what to build next

  • →
    Add Meeting Attendee Tags — Extract @mentions from notes and automatically tag attendees in the formatted output for better accountability.
  • →
    Create Action Item Tracking — Send action items to a project management tool like Asana or Notion with due dates and assignees automatically populated.
  • →
    Build Meeting Summary Digest — Collect all weekly meeting notes and send a formatted digest to leadership every Friday with key decisions and action item status.

Related guides

Was this guide helpful?
← OpenAI + Slack overviewPipedream profile →