Back to Templates

Create Meeting Minutes from Telegram Messages with GPT-5 to Airtable Slack Gmail

Created by

Created by: Baptiste Fort || baptistefort

Baptiste Fort

Last update

Last update 2 days ago

Share


How it works?

baptistefortautomatisationairtable.png

Send a message or a voice note on Telegram right after the meeting.

n8n transcribes (if it’s a voice note) and sends the text to GPT.

GPT generates a structured and professional meeting minutes report.

The report is automatically stored in Airtable.

Your team is instantly notified in Slack.

A formal email is sent via Gmail to the right recipients.

👉 Works for all types of meetings: client calls, team syncs, project updates… whether you type a message or send a quick voice memo.


✅ Requirements

Before running this workflow, you’ll need:

  • A Telegram account with a bot configured (to send your messages/voice notes)
  • An OpenAI API key (for GPT and voice transcription)
  • An Airtable account with a base containing these fields:
    • Email
    • Subject
    • Report
  • A Slack account with the target channel for notifications
  • A Gmail account connected to n8n (OAuth2)

🔧 Step-by-step setup

baptistefortautomatisationagentia.png

Step 1 – Telegram Trigger

  • Node: Telegram Trigger
  • Updates: message
    👉 Captures every message or voice note sent to the bot.

Step 2 – Detect text or voice

  • Node: Code (“Message or Voice ?”)
  • Expected output:
    • { type: "text", content } if message
    • { type: "voice", file_id } if voice note
      👉 Routes the workflow based on the input type.

Step 3 – IF Condition

  • Condition: {{$json.type}} == voice
    👉 Directs to the transcription branch if it’s a voice note.

Voice Branch 🎤

Step 4 – Download the voice file

  • Node: Telegram → Voice note
  • Parameter: fileId = {{$json.file_id}}

Step 5 – Wait

  • Node: Wait (2–3s)
    👉 Lets Telegram prepare the file.

Step 6 – Voice note download

  • Node: Telegram (file download)
    👉 Retrieves the audio file.

Step 7 – Transcribe to text

  • Node: OpenAI (Transcription)
  • Resource: audio
  • Operation: transcribe
    👉 Converts the voice note into plain text.

Step 8 – Short wait

👉 Ensures continuity before sending to GPT.


Text Branch ✍️

Step 9 – Normalize

  • Node: Code (“Content”)
  • Return: { text: $json.content }
    👉 Standardizes the text as if it were already a transcription.

Step 10 – Detect email

  • Node: Code (“Domain or Email detection”)
    👉 Extracts the target email (or builds a fallback [email protected]).

Step 11 – Generate meeting minutes

  • Node: Agent (“Generate Meeting Message”)
  • Prompt: specialized for “meeting minutes”
  • Model: GPT-4.1-mini
  • Output: { email, subject, body }
    👉 GPT creates a clean and structured meeting report.

Step 12 – Enforce clean JSON

  • Node: Output Parser Structured
  • JSON Example:
    json {"email": "[email protected]","subject":"Subject","body":Email"}

👉 Ensures the output is always valid JSON.

Step 13 – Cleanup / Airtable mapping

  • Node: Code
  • Return: { Email, subject, Report }
    👉 Prepares the correct fields aligned with your Airtable table.

Step 14 – Store in Airtable

baptistefortautomatisationleads.png

  • Node: Airtable (Create Record)
  • Mapping:
    • Email = {{$json.Email}}
    • subject = {{$json.subject}}
    • Report = {{$json.Report}}
      👉 Archives each meeting report in your Airtable base.

Step 15 – Notify in Slack

  • Node: Slack (Send Message)
  • Channel: your team channel
  • Message: {{$json.fields.subject}}{{$json.fields.Report}}

Step 16 – Send the email

  • Node: Gmail (Send Email)
  • sendTo: {{$('Create a record').item.json.fields.Email}}
  • subject: {{$('Create a record').item.json.fields.subject}}
  • message: {{$('Create a record').item.json.fields.Report}}