This workflow follows the Agent → Documentdefaultdataloader recipe pattern — see all workflows that pair these two integrations.
The workflow JSON
Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →
{
"name": "voice-assistant",
"nodes": [
{
"parameters": {
"content": "# DATA UPLOAD + EMBEDDINGS",
"height": 576,
"width": 1488,
"color": 4
},
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
-2352,
-48
],
"id": "REDACTED",
"name": "Sticky Note"
},
{
"parameters": {
"content": "# 11Labs VOICE AGENT RAG CAPABILIITES",
"height": 768,
"width": 1008,
"color": 6
},
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
-560,
-16
],
"id": "REDACTED",
"name": "Sticky Note1"
},
{
"parameters": {
"pollTimes": {
"item": [
{
"mode": "everyMinute"
}
]
},
"triggerOn": "specificFolder",
"folderToWatch": {
"__rl": true,
"value": "REDACTED",
"mode": "list",
"cachedResultName": "voice-assistant-rag-knowledge",
"cachedResultUrl": "REDACTED"
},
"event": "fileCreated",
"options": {}
},
"type": "n8n-nodes-base.googleDriveTrigger",
"typeVersion": 1,
"position": [
-2288,
160
],
"id": "REDACTED",
"name": "File Upload",
"credentials": {
"googleDriveOAuth2Api": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"operation": "delete",
"tableId": "documents",
"filterType": "string",
"filterString": "=metadata->>file_id=like.*{{ $json.id }}*"
},
"type": "n8n-nodes-base.supabase",
"typeVersion": 1,
"position": [
-1968,
160
],
"id": "REDACTED",
"name": "Delete a row",
"alwaysOutputData": true,
"credentials": {
"supabaseApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"assignments": {
"assignments": [
{
"id": "REDACTED",
"name": "id",
"value": "={{ $json.id }}",
"type": "string"
}
]
},
"options": {}
},
"type": "n8n-nodes-base.set",
"typeVersion": 3.4,
"position": [
-2128,
160
],
"id": "REDACTED",
"name": "Edit Fields"
},
{
"parameters": {
"operation": "download",
"fileId": {
"__rl": true,
"value": "={{ $('Edit Fields').item.json.id }}",
"mode": "id"
},
"options": {
"googleFileConversion": {
"conversion": {
"docsToFormat": "text/plain"
}
}
}
},
"type": "n8n-nodes-base.googleDrive",
"typeVersion": 3,
"position": [
-1792,
160
],
"id": "REDACTED",
"name": "Download file",
"credentials": {
"googleDriveOAuth2Api": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"mode": "insert",
"tableName": {
"__rl": true,
"value": "documents",
"mode": "list",
"cachedResultName": "documents"
},
"options": {}
},
"type": "@n8n/n8n-nodes-langchain.vectorStoreSupabase",
"typeVersion": 1.3,
"position": [
-1216,
176
],
"id": "REDACTED",
"name": "Supabase Vector Store",
"credentials": {
"supabaseApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"options": {}
},
"type": "@n8n/n8n-nodes-langchain.embeddingsOpenAi",
"typeVersion": 1.2,
"position": [
-1280,
368
],
"id": "REDACTED",
"name": "Embeddings OpenAI",
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"httpMethod": "POST",
"path": "REDACTED",
"responseMode": "responseNode",
"options": {}
},
"type": "n8n-nodes-base.webhook",
"typeVersion": 2.1,
"position": [
-480,
64
],
"id": "REDACTED",
"name": "Webhook"
},
{
"parameters": {
"options": {}
},
"type": "n8n-nodes-base.respondToWebhook",
"typeVersion": 1.4,
"position": [
144,
64
],
"id": "REDACTED",
"name": "Respond to Webhook"
},
{
"parameters": {
"promptType": "define",
"text": "=USER QUESTION: {{ $json.body.question }}",
"options": {
"systemMessage": "# OBJECTIVE:\n- Find relevant information for user's request based on information in vector database, which is main tool you have access to."
}
},
"type": "@n8n/n8n-nodes-langchain.agent",
"typeVersion": 3,
"position": [
-208,
64
],
"id": "REDACTED",
"name": "AI Agent"
},
{
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "gpt-4.1-mini"
},
"options": {}
},
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"typeVersion": 1.2,
"position": [
-352,
320
],
"id": "REDACTED",
"name": "OpenAI Chat Model",
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"operation": "pdf",
"options": {}
},
"type": "n8n-nodes-base.extractFromFile",
"typeVersion": 1,
"position": [
-1600,
96
],
"id": "REDACTED",
"name": "Extract from PDF"
},
{
"parameters": {
"operation": "text",
"options": {}
},
"type": "n8n-nodes-base.extractFromFile",
"typeVersion": 1,
"position": [
-1584,
288
],
"id": "REDACTED",
"name": "Extract from Text File"
},
{
"parameters": {
"jsCode": "return [\n {\n json: {\n text: $json[\"text\"]\n }\n }\n]\n"
},
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
-1392,
176
],
"id": "REDACTED",
"name": "Return Text From JSON"
},
{
"parameters": {
"mode": "retrieve-as-tool",
"toolDescription": "Vector Database For Any User Uploaded Documents",
"tableName": {
"__rl": true,
"value": "documents",
"mode": "list",
"cachedResultName": "documents"
},
"topK": 5,
"useReranker": true,
"options": {}
},
"type": "@n8n/n8n-nodes-langchain.vectorStoreSupabase",
"typeVersion": 1.3,
"position": [
0,
320
],
"id": "REDACTED",
"name": "Supabase Vector Store1",
"credentials": {
"supabaseApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"options": {}
},
"type": "@n8n/n8n-nodes-langchain.embeddingsOpenAi",
"typeVersion": 1.2,
"position": [
-96,
512
],
"id": "REDACTED",
"name": "Embeddings OpenAI1",
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"topN": 5
},
"type": "@n8n/n8n-nodes-langchain.rerankerCohere",
"typeVersion": 1,
"position": [
192,
512
],
"id": "REDACTED",
"name": "Reranker Cohere",
"credentials": {
"cohereApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"options": {
"metadata": {
"metadataValues": [
{
"name": "file_id",
"value": "={{ $('Edit Fields').item.json.id }}"
}
]
}
}
},
"type": "@n8n/n8n-nodes-langchain.documentDefaultDataLoader",
"typeVersion": 1.1,
"position": [
-1040,
368
],
"id": "REDACTED",
"name": "Default Data Loader"
}
],
"connections": {
"File Upload": {
"main": [
[
{
"node": "Edit Fields",
"type": "main",
"index": 0
}
]
]
},
"Edit Fields": {
"main": [
[
{
"node": "Delete a row",
"type": "main",
"index": 0
}
]
]
},
"Delete a row": {
"main": [
[
{
"node": "Download file",
"type": "main",
"index": 0
}
]
]
},
"Download file": {
"main": [
[
{
"node": "Extract from PDF",
"type": "main",
"index": 0
},
{
"node": "Extract from Text File",
"type": "main",
"index": 0
}
]
]
},
"Embeddings OpenAI": {
"ai_embedding": [
[
{
"node": "Supabase Vector Store",
"type": "ai_embedding",
"index": 0
}
]
]
},
"Webhook": {
"main": [
[
{
"node": "AI Agent",
"type": "main",
"index": 0
}
]
]
},
"OpenAI Chat Model": {
"ai_languageModel": [
[
{
"node": "AI Agent",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"AI Agent": {
"main": [
[
{
"node": "Respond to Webhook",
"type": "main",
"index": 0
}
]
]
},
"Extract from PDF": {
"main": [
[
{
"node": "Return Text From JSON",
"type": "main",
"index": 0
}
]
]
},
"Extract from Text File": {
"main": [
[
{
"node": "Return Text From JSON",
"type": "main",
"index": 0
}
]
]
},
"Return Text From JSON": {
"main": [
[
{
"node": "Supabase Vector Store",
"type": "main",
"index": 0
}
]
]
},
"Supabase Vector Store1": {
"ai_tool": [
[
{
"node": "AI Agent",
"type": "ai_tool",
"index": 0
}
]
]
},
"Embeddings OpenAI1": {
"ai_embedding": [
[
{
"node": "Supabase Vector Store1",
"type": "ai_embedding",
"index": 0
}
]
]
},
"Reranker Cohere": {
"ai_reranker": [
[
{
"node": "Supabase Vector Store1",
"type": "ai_reranker",
"index": 0
}
]
]
},
"Respond to Webhook": {
"main": [
[]
]
},
"Default Data Loader": {
"ai_document": [
[
{
"node": "Supabase Vector Store",
"type": "ai_document",
"index": 0
}
]
]
}
},
"active": true,
"settings": {
"executionOrder": "v1"
},
"versionId": "REDACTED",
"meta": {
"templateCredsSetupCompleted": true
},
"id": "REDACTED",
"tags": []
}
Credentials you'll need
Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.
cohereApigoogleDriveOAuth2ApiopenAiApisupabaseApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
How this works
This workflow transforms your voice recordings into actionable insights by automatically processing audio files uploaded to Google Drive, extracting key information with AI, and storing it in a Supabase vector database for quick retrieval and analysis. It's ideal for professionals like podcasters, journalists, or researchers who need to transcribe and organise spoken content without manual effort, saving hours on data entry and search. The key step involves using OpenAI embeddings to convert transcriptions into searchable vectors, enabling intelligent querying via an AI agent for personalised responses.
Use this workflow when handling regular voice notes or interviews that require semantic search and integration with tools like Google Drive for seamless file management. Avoid it for real-time transcription needs, as it's event-driven and best for batch processing; opt for live streaming alternatives instead. Common variations include swapping OpenAI for other embedding models or adding email notifications for new insights.
About this workflow
voice-assistant. Uses googleDriveTrigger, supabase, googleDrive, vectorStoreSupabase. Event-driven trigger; 19 nodes.
Source: https://github.com/sonofslaytin/VoiceRAG-AI-Powered-Voice-Assistant-with-Knowledge-Retrieval/blob/main/n8n_workflow_redacted.json — original creator credit. Request a take-down →
Related workflows
Workflows that share integrations, category, or trigger type with this one. All free to copy and import.
Your AI workforce is ready. Are you?
This n8n template automatically classifies incoming emails (Sales, Support, Internal, Finance, Promotions) and routes them to a dedicated OpenAI LLM Agent for processing. Depending on the category, th
Automate Outreach Prospect automates finding, enriching, and messaging potential partners (like restaurants, malls, and bars) using Apify Google Maps scraping, Perplexity enrichment, OpenAI LLMs, Goog
Chat with docs - 5minAI New version. Uses httpRequest, documentDefaultDataLoader, textSplitterRecursiveCharacterTextSplitter, embeddingsOpenAi. Event-driven trigger; 62 nodes.
I prepared a detailed guide that illustrates the entire process of building an AI agent using Supabase and Google Drive within N8N workflows.