This repository contains the n8n workflows for a sophisticated AI Meeting Summarizer. This agent-based system allows users to process, summarize, and query Zoom and YouTube meetings through a simple chat interface.
The system is designed to be the central hub for all meeting-related information, leveraging AI to extract structured data and a dual-vector-database strategy for both broad and detailed semantic search.
- Chat-based Interface: Users interact with a simple chat trigger.
- Multi-Platform Support: Processes both YouTube and Zoom meeting URLs.
- Intelligent Orchestration: A main AI agent analyzes user intent to decide which tool to use.
- Automated Transcription & Processing: Calls external services to scrape transcripts from provided URLs.
- AI-Powered Insights: Uses
gpt-4o-minito generate:- Executive Summaries
- Key Action Items (with owners)
- Structured Insights & Decisions
- Attendee Lists
- Duplicate Prevention: Checks if a meeting URL has already been processed before starting a new transcription job.
- Dual Vector Storage: Creates two types of vector embeddings for nuanced search:
- Summary Embeddings: For broad, fuzzy search ("Which meeting was about Project X?").
- Transcript Chunk Embeddings: For detailed, granular Q&A ("What did Alex say about the Q4 deadline?").
- Conversation Memory: Remembers the context of the user's conversation using a Postgres database.
The project consists of two main n8n workflows that work together:
Chat agent.json(The Main Orchestrator): This is the user-facing workflow that manages the conversation and orchestrates all tasks.Transcript_maker.json(The Processing Tool): This is a sub-workflow, run as a "tool" by the main agent, that handles the heavy lifting of transcription and database population.
This workflow acts as the "brain" of the operation. It's a stateful agent that maintains a conversation and intelligently calls one of its three available tools based on the user's request.
Core Components:
- ** Chat Trigger:** Provides the public-facing chat interface for the user.
- ** AI Agent (Meeting Orchestrator):** The central agent (
gpt-4o-mini) that interprets the user's needs. Its system prompt instructs it to follow a specific, step-wise logic. - ** Postgres Chat Memory:** Remembers the previous messages in the conversation.
The Agent's Tools:
-
** Meeting Existence Checker Tool (
HTTP Request)**- Purpose: To prevent redundant processing.
- Trigger: Called whenever a user provides a new URL.
- Action: Performs a
GETrequest to the Supabasemeetinglisttable to check if a record with thezoom_urlalready exists. - Logic:
- If Found: The agent informs the user the meeting is already processed and proceeds to the Retrieval Tool.
- If Not Found: The agent proceeds to the Transcript Maker Tool.
-
** Transcript Maker Tool (
Workflow Tool)**- Purpose: To process a new meeting.
- Trigger: Called when a user provides a new, unprocessed URL.
- Action: Executes the entire
Transcript_maker.jsonsub-workflow, passing the URL as a parameter.
-
** Meeting Retrieval Tool (
Supabase Vector Store)**- Purpose: To answer questions about meetings.
- Trigger: Called when a user asks a question without a URL (e.g., "What were my action items last week?") or when they ask a question about a meeting that is already known to exist.
- Action: Performs a semantic search against the
transcript_chunksvector database to find the most relevant information to answer the user's query directly.
This workflow is the "factory." It is not triggered directly by the user but is called by the Chat agent. Its sole purpose is to take a URL, process it, and populate the databases.
Step-by-Step Flow:
- Receive URL: The workflow starts with the URL provided by the main agent.
- Classify URL: An AI model (
gpt-4o-mini) analyzes the URL and outputs a JSON object identifying it as{"task": "YouTube", ...}or{"task": "Zoom", ...}. - Scrape Transcript: A Switch node routes the URL to the correct scraper:
- Zoom: Calls a custom Google Cloud Run service (
zoom-transcript-scraper...) to get the transcript. - YouTube: Calls a custom Google Cloud Run service (
youtubecc...) to get the transcript.
- Zoom: Calls a custom Google Cloud Run service (
- Generate AI Insights: The raw transcript is fed to
gpt-4o-miniwith a specific prompt to extract structured JSON containing the summary, action items, insights, attendees, and metadata. - Populate Databases (Dual Storage Strategy): This is the most critical step.
- Database 1:
meetinglist(For Summaries)- Insert Row: The AI-generated summary and metadata are saved to a primary table in Supabase (
HTTP Request5). - Create Summary Embedding: A new embedding is generated only from the AI-generated summary and title (
LangChain Code1). - Update Row: This "summary embedding" is added to the meeting's row in
meetinglist(HTTP Request3). This embedding is used by theMeeting Existence Checker Toolfor broad semantic matching.
- Insert Row: The AI-generated summary and metadata are saved to a primary table in Supabase (
- Database 2:
transcript_chunks(For Detailed Q&A)- Chunk Transcript: The original, raw transcript is split into small, overlapping chunks (
LangChain Code). - Create Chunk Embeddings: An embedding is created for each individual chunk.
- Insert Chunks: Each chunk, its embedding, and the
transcript_id(linking it to the mainmeetinglistrow) are saved to thetranscript_chunkstable (HTTP Request1). This database is used by theMeeting Retrieval Toolfor detailed Q&A.
- Chunk Transcript: The original, raw transcript is split into small, overlapping chunks (
- Database 1:
To run this project, you will need:
- n8n: An active n8n instance (cloud or self-hosted).
- OpenAI: An API key for
gpt-4o-miniandtext-embedding-3-small. - PostgreSQL: A database for the Chat Memory node.
- Supabase Account:
- A project with two tables:
meetinglist: To store the main meeting record, metadata, and summary embedding.transcript_chunks: To store the raw transcript chunks and their individual embeddings.
- A database function (e.g.,
match_meetings) for vector search, as referenced by theMeeting Retrieval Tool.
- A project with two tables:
- Deployed Scraper Services:
- This workflow relies on two external, custom-deployed services (likely on Google Cloud Run) to handle the actual transcript scraping:
https://youtubecc-423771082043.us-central1.run.apphttps://zoom-transcript-scraper-423771082043.us-central1.run.app
- You will need to deploy your own versions of these scraper functions for the workflow to be operational.
- This workflow relies on two external, custom-deployed services (likely on Google Cloud Run) to handle the actual transcript scraping:


