πŸ”¬ Categorize meetings and log time with Fireflies, GPT-4o-mini, and Google Sheets

⚑ 3 views Β· πŸ”¬ Document Extraction & Analysis

Description

Description

Connect Fireflies to this workflow once and every meeting you record is automatically categorized and logged to Google Sheets the moment transcription finishes. GPT-4o-mini reads the meeting title, keywords, overview, and action items, then assigns one of seven categories β€” Sales, Client, Internal, HR, Product, Finance, or Other β€” along with a confidence rating and a one-sentence reason. Each meeting becomes one clean row in your sheet with emoji labels for instant visual scanning. Built for founders, operations managers, and team leads who want a searchable, sortable record of how their time is actually being spent across meeting types.


What This Workflow Does


Setup Requirements

Tools Needed

Credentials Required

Estimated Setup Time: 10–15 minutes


Step-by-Step Setup

  1. Import the workflow β€” Open n8n β†’ Workflows β†’ Import from JSON β†’ paste the workflow JSON β†’ click Import

  2. Activate the workflow and copy the webhook URL β€” Toggle the workflow to Active β†’ click on node Fireflies Webhook β†’ copy the Production URL shown

  3. Register the webhook in Fireflies β€” Log in to app.fireflies.ai β†’ Settings β†’ Developer Settings β†’ Webhooks β†’ paste the webhook URL β†’ save

  4. Get your Fireflies API key β€” In Fireflies, go to Settings β†’ Integrations β†’ Fireflies API β†’ copy your API key

  5. Get your Google Sheet ID β€” Open your Google Sheet in a browser β†’ look at the URL β†’ copy the string between /d/ and /edit (e.g. in docs.google.com/spreadsheets/d/1ABC123xyz/edit, the ID is 1ABC123xyz)

  6. Fill in Config Values β€” Open node Set Config Values β†’ replace the two placeholders:

FieldWhat to enter
YOUR_FIREFLIES_API_KEYYour Fireflies API key from step 4
YOUR_GOOGLE_SHEET_IDYour Google Sheet ID from step 5

> ⚠️ Do NOT change the meetingId field β€” it is extracted automatically from the Fireflies webhook and must remain as-is.

  1. Create your Google Sheet tab β€” Open your Google Sheet β†’ add a tab named exactly Meeting Categories β†’ add these 10 column headers in row 1: Date, Meeting Title, Category, Confidence, Reason, Duration (min), Participants, Keywords, Fireflies URL, Logged At

  2. Connect OpenAI β€” Open node OpenAI Chat Model β†’ click the credential dropdown β†’ add your OpenAI API key β†’ test the connection

  3. Connect Google Sheets β€” Open node Log to Google Sheets β†’ click the credential dropdown β†’ add Google Sheets OAuth2 β†’ sign in with your Google account β†’ authorize access

  4. Activate the workflow β€” Confirm the workflow is Active β€” Fireflies will now fire it automatically after every recorded meeting


How It Works (Step by Step)

Step 1 β€” Webhook: Fireflies Webhook This step listens for a signal from Fireflies. Every time a meeting finishes transcribing, Fireflies sends a POST request to this webhook URL containing the meeting ID and event type. No manual trigger is needed β€” it fires automatically after every recorded call where you are the organizer.

Step 2 β€” Set: Config Values Your Fireflies API key, Google Sheet ID, sheet tab name, and the meeting ID from the webhook are stored here. The meeting ID is extracted automatically from all possible Fireflies payload formats β€” you never need to enter it manually.

Step 3 β€” HTTP: Fetch Transcript from Fireflies A request is sent to the Fireflies API using your API key and the meeting ID. It retrieves the meeting title, date, duration, participants, transcript URL, keywords, overview, and action items. Only lightweight summary fields are fetched β€” no full sentence-by-sentence transcript β€” keeping the response fast and small.

Step 4 β€” Code: Extract Meeting Data The Fireflies response is processed into clean, usable fields. Keywords are limited to the top 12, the overview is capped at 600 characters, and action items are limited to the top 5. The meeting date is formatted as a readable date string. If the transcript is not found or not yet ready, the step throws an error and the workflow stops cleanly without creating a blank row in your sheet.

Step 5 β€” AI Agent: Categorize Meeting GPT-4o-mini receives the meeting title, keywords, overview, action items, participants, and duration. It assigns exactly one category from the seven options and returns three structured fields: the category name, a confidence level (High, Medium, or Low), and a one-sentence plain-text reason for the choice. The model runs at temperature 0.1 for highly consistent, repeatable categorization.

Step 6 β€” OpenAI Chat Model This is the language model powering the categorization step. It uses GPT-4o-mini at temperature 0.1 and is capped at 150 tokens β€” only three short fields are needed per meeting, making this extremely cost-efficient at approximately $0.0002 per meeting.

Step 7 β€” Structured Output Parser This step enforces the exact three-field schema GPT-4o-mini must return. It validates that category, confidence, and reason are all present and correctly typed before the results move forward, preventing any malformed AI output from reaching your sheet.

Step 8 β€” Code: Prepare Sheet Row The AI output is read and emoji labels are added based on category and confidence. Category emojis: πŸ’° Sales, 🀝 Client, 🏒 Internal, πŸ‘₯ HR, πŸ› οΈ Product, πŸ“Š Finance, πŸ“‹ Other. Confidence emojis: βœ… High, 🟑 Medium, ⚠️ Low. All meeting metadata from step 4 is combined with the AI output into one complete row ready for logging.

Step 9 β€” Google Sheets: Log to Google Sheets One row is appended to your Meeting Categories tab with all 10 columns populated: date, meeting title, category with emoji, confidence with emoji, reason, duration in minutes, participants, keywords, Fireflies transcript URL, and the logged-at timestamp.

The final result: every meeting ends with a new row in your Google Sheet β€” categorized, confidence-rated, and ready to filter or sort by meeting type.


Key Features

βœ… Fires automatically on every meeting β€” No manual input ever needed after the one-time webhook setup in Fireflies βœ… Seven category options cover all meeting types β€” Sales, Client, Internal, HR, Product, Finance, and Other handle virtually every business meeting scenario βœ… Confidence rating per classification β€” High, Medium, and Low ratings tell you exactly how certain the AI was so you can spot which rows to review manually βœ… Emoji-coded for instant visual scanning β€” Category and confidence columns use emojis so you can read your sheet at a glance without needing to filter βœ… Direct Fireflies link in every row β€” Each row includes a clickable link back to the full Fireflies transcript so you can open the original meeting in one click βœ… Ultra-low cost per meeting β€” GPT-4o-mini at temperature 0.1 with a 150-token cap costs approximately $0.0002 per meeting β€” a full year of daily meetings costs less than a dollar βœ… Structured output enforced β€” A schema parser validates all three AI fields before anything reaches your sheet β€” no broken or incomplete rows βœ… Lightweight API call β€” Only summary fields are fetched from Fireflies (not full sentences), keeping each API call fast and the response small


Customisation Options

Add your own custom categories β€” In node AI Agent β€” Categorize Meeting, edit the category list in the prompt to replace or add categories that match your business (e.g. replace β€œFinance” with β€œInvestor” or add β€œPartnership” as an eighth option) β€” also update the schema in Structured Output Parser to match.

Add a Slack notification for Sales meetings β€” After node Log to Google Sheets, add an IF check that reads the category field β€” if it contains β€œSales”, post a Slack message to your #sales-team channel with the meeting title, participants, and Fireflies link for immediate team visibility.

Filter out internal meetings from the sheet β€” In node Prepare Sheet Row, add a condition: if the category is β€œInternal” and confidence is β€œHigh”, set a skipLog flag to true β€” then add an IF check before Log to Google Sheets to bypass logging for confirmed internal meetings and keep your sheet focused on client-facing activity.

Add a weekly category summary email β€” Add a separate Schedule trigger that fires every Monday morning, reads the Meeting Categories sheet via a Google Sheets read step, counts rows by category from the past 7 days, and sends a summary email showing how many Sales, Client, and Internal meetings happened that week.

Use a different sheet per category β€” In node Prepare Sheet Row, add logic that maps each category to a different sheetName value β€” then Log to Google Sheets will route each meeting to its own dedicated tab (e.g. all Sales calls on a Sales tab, all Client calls on a Client tab).


Troubleshooting

Workflow not triggering when a meeting ends:

Fireflies API key error or transcript not found:

OpenAI not categorizing correctly:

Google Sheets not logging rows:

AI returning a category not in the list:


Support

Need help setting this up or want a custom version built for your team or agency?

πŸ“§ Email: info@isawow.com 🌐 Website: https://isawow.com/

πŸ”— Nodes Used

Google Sheets, HTTP Request, Webhook, AI Agent, OpenAI Chat Model, Structured Output Parser

πŸ“₯ Import

Download workflow.json and import into n8n: Workflow menu β†’ Import from File

πŸ“– Importing guide Β· πŸ”‘ Credential setup