{ "meta": { "instanceId": "workflow-c384e1ac", "versionId": "1.0.0", "createdAt": "2025-09-29T07:08:00.193554", "updatedAt": "2025-09-29T07:08:00.193670", "owner": "n8n-user", "license": "MIT", "category": "automation", "status": "active", "priority": "high", "environment": "production" }, "nodes": [ { "id": "01730710-e299-4e66-93e9-6079fdf9b8b7", "name": "Sticky Note1", "type": "n8n-nodes-base.stickyNote", "position": [ 2120, 0 ], "parameters": { "color": 6, "width": 903.0896125323785, "height": 733.5099670584011, "content": "## Step 2: Setup the Q&A \n### The incoming message from the webhook is queried from the Supabase Vector Store. The response is provided in the response webhook. " }, "typeVersion": 1, "notes": "This stickyNote node performs automated tasks as part of the workflow." }, { "id": "66aed89e-fd72-4067-82bf-d480be27e5d6", "name": "When clicking \"Execute Workflow\"", "type": "n8n-nodes-base.manualTrigger", "position": [ 840, 140 ], "parameters": {}, "typeVersion": 1, "notes": "This manualTrigger node performs automated tasks as part of the workflow." }, { "id": "9dc8f2a7-eeff-4a35-be52-05c42b71eee4", "name": "Google Drive", "type": "n8n-nodes-base.googleDrive", "position": [ 1140, 140 ], "parameters": { "fileId": { "__rl": true, "mode": "list", "value": "1LZezppYrWpMStr4qJXtoIX-Dwzvgehll", "cachedResultUrl": "{{ $env.WEBHOOK_URL }}", "cachedResultName": "crowdstrike.pdf" }, "options": {}, "operation": "download" }, "credentials": { "googleDriveOAuth2Api": { "id": "yOwz41gMQclOadgu", "name": "Google Drive account" } }, "typeVersion": 3, "notes": "This googleDrive node performs automated tasks as part of the workflow." }, { "id": "1dd3d3fd-6c2e-4e23-9c82-b0d07b199de3", "name": "Sticky Note", "type": "n8n-nodes-base.stickyNote", "position": [ 1100, 0 ], "parameters": { "color": 6, "width": 772.0680602743597, "height": 732.3675002130781, "content": "## Step 1: Upserting the PDF\n### Fetch file from Google Drive, split it into chunks and insert into Supabase index\n\n" }, "typeVersion": 1, "notes": "This stickyNote node performs automated tasks as part of the workflow." }, { "id": "4796124f-bc12-4353-b7ea-ec8cd7653e68", "name": "Sticky Note2", "type": "n8n-nodes-base.stickyNote", "position": [ 0, 0 ], "parameters": { "color": 6, "width": 710.9124489067698, "height": 726.4452519516944, "content": "## Start here: Step-by Step Youtube Tutorial :star:\n\n[![Building an AI Crew to Analyze Financial Data with CrewAI and n8n]({{ $env.WEBHOOK_URL }}]({{ $env.WEBHOOK_URL }}\n" }, "typeVersion": 1, "notes": "This stickyNote node performs automated tasks as part of the workflow." }, { "id": "1e2ecc88-c8c7-4687-a2a1-b20b0da9b772", "name": "Default Data Loader", "type": "n8n-nodes-base.noOp", "position": [ 1400, 320 ], "parameters": { "options": { "splitPages": true }, "dataType": "binary" }, "typeVersion": 1, "notes": "This documentDefaultDataLoader node performs automated tasks as part of the workflow." }, { "id": "6dd8545d-df8c-49ff-acf6-f8c150723ee8", "name": "Recursive Character Text Splitter1", "type": "n8n-nodes-base.noOp", "position": [ 1400, 460 ], "parameters": { "options": {}, "chunkSize": 3000, "chunkOverlap": 200 }, "typeVersion": 1, "notes": "This textSplitterRecursiveCharacterTextSplitter node performs automated tasks as part of the workflow." }, { "id": "6899e2d6-965a-40cd-a34f-a61de8fd32ef", "name": "Qdrant Vector Store", "type": "n8n-nodes-base.noOp", "position": [ 1480, 140 ], "parameters": { "mode": "insert", "options": {}, "qdrantCollection": { "__rl": true, "mode": "id", "value": "crowd" } }, "credentials": { "qdrantApi": { "id": "NyinAS3Pgfik66w5", "name": "QdrantApi account" } }, "typeVersion": 1.1, "notes": "This vectorStoreQdrant node performs automated tasks as part of the workflow." }, { "id": "6136c6fb-3d20-44a7-ab00-6c5671bafa10", "name": "When chat message received", "type": "n8n-nodes-base.noOp", "disabled": true, "position": [ 2180, 120 ], "webhookId": "551107fb-b349-4e2b-a888-febe5e282734", "parameters": { "options": {} }, "typeVersion": 1.1, "notes": "This chatTrigger node performs automated tasks as part of the workflow." }, { "id": "c970f654-4c79-4637-bec0-73f79a01ab59", "name": "Webhook", "type": "n8n-nodes-base.webhook", "position": [ 2180, 320 ], "webhookId": "55b825ad-8987-4618-ae92-d9b08966324b", "parameters": { "path": "19f5499a-3083-4783-93a0-e8ed76a9f742", "options": {}, "httpMethod": "POST", "responseMode": "responseNode" }, "typeVersion": 2, "notes": "This webhook node performs automated tasks as part of the workflow." }, { "id": "e05e9046-de17-4ca1-b1ac-2502ee123e5f", "name": "Retrieval QA Chain", "type": "n8n-nodes-base.noOp", "position": [ 2420, 120 ], "parameters": { "text": "={{ $json.chatInput || $json.body.input }}", "options": {}, "promptType": "define" }, "typeVersion": 1.5, "notes": "This chainRetrievalQa node performs automated tasks as part of the workflow." }, { "id": "ecf0d248-a8a9-45ed-8786-8864547f79b6", "name": "Vector Store Retriever", "type": "n8n-nodes-base.noOp", "position": [ 2580, 320 ], "parameters": { "topK": 5 }, "typeVersion": 1, "notes": "This retrieverVectorStore node performs automated tasks as part of the workflow." }, { "id": "4fb1d8ac-bc6f-4f99-965f-7d38ea0680e0", "name": "Qdrant Vector Store1", "type": "n8n-nodes-base.noOp", "position": [ 2540, 460 ], "parameters": { "options": {}, "qdrantCollection": { "__rl": true, "mode": "id", "value": "={{ $json.body.company }}" } }, "credentials": { "qdrantApi": { "id": "NyinAS3Pgfik66w5", "name": "QdrantApi account" } }, "typeVersion": 1.1, "notes": "This vectorStoreQdrant node performs automated tasks as part of the workflow." }, { "id": "66868422-39c9-4e76-99b9-a77bb613b248", "name": "OpenAI Chat Model", "type": "n8n-nodes-base.noOp", "position": [ 2420, 340 ], "parameters": { "model": { "__rl": true, "mode": "list", "value": "gpt-4o-mini" }, "options": {} }, "credentials": { "openAiApi": { "id": "8gccIjcuf3gvaoEr", "name": "OpenAi account" } }, "typeVersion": 1.2, "notes": "This lmChatOpenAi node performs automated tasks as part of the workflow." }, { "id": "f290f809-3b4e-42e3-bfb5-d505566d9275", "name": "Embeddings OpenAI1", "type": "n8n-nodes-base.noOp", "position": [ 2520, 580 ], "parameters": { "options": {} }, "credentials": { "openAiApi": { "id": "8gccIjcuf3gvaoEr", "name": "OpenAi account" } }, "typeVersion": 1.2, "notes": "This embeddingsOpenAi node performs automated tasks as part of the workflow." }, { "id": "c360f7b3-2ae4-4ebd-85ca-f64c3966e65d", "name": "Embeddings OpenAI", "type": "n8n-nodes-base.noOp", "position": [ 1700, 320 ], "parameters": { "options": {} }, "credentials": { "openAiApi": { "id": "8gccIjcuf3gvaoEr", "name": "OpenAi account" } }, "typeVersion": 1.2, "notes": "This embeddingsOpenAi node performs automated tasks as part of the workflow." }, { "id": "9223d119-b5a7-40d4-b8da-f85951b52bde", "name": "Respond to Webhook", "type": "n8n-nodes-base.respondToWebhook", "position": [ 2840, 120 ], "parameters": { "options": {}, "respondWith": "text", "responseBody": "={{ $json.response.text }}" }, "typeVersion": 1.1, "notes": "This respondToWebhook node performs automated tasks as part of the workflow." } ], "pinData": {}, "connections": { "c970f654-4c79-4637-bec0-73f79a01ab59": { "main": [ [ { "node": "error-handler-c970f654-4c79-4637-bec0-73f79a01ab59", "type": "main", "index": 0 } ], [ { "node": "error-handler-c970f654-4c79-4637-bec0-73f79a01ab59-fff4071a", "type": "main", "index": 0 } ], [ { "node": "error-handler-c970f654-4c79-4637-bec0-73f79a01ab59-11addf1b", "type": "main", "index": 0 } ], [ { "node": "error-handler-c970f654-4c79-4637-bec0-73f79a01ab59-1fca6f2c", "type": "main", "index": 0 } ], [ { "node": "error-handler-c970f654-4c79-4637-bec0-73f79a01ab59-ac3e0999", "type": "main", "index": 0 } ], [ { "node": "error-handler-c970f654-4c79-4637-bec0-73f79a01ab59-040ed533", "type": "main", "index": 0 } ], [ { "node": "error-handler-c970f654-4c79-4637-bec0-73f79a01ab59-433bb2b7", "type": "main", "index": 0 } ], [ { "node": "error-handler-c970f654-4c79-4637-bec0-73f79a01ab59-33b094b2", "type": "main", "index": 0 } ], [ { "node": "error-handler-c970f654-4c79-4637-bec0-73f79a01ab59-86a3f7a0", "type": "main", "index": 0 } ] ] }, "9223d119-b5a7-40d4-b8da-f85951b52bde": { "main": [ [ { "node": "error-handler-9223d119-b5a7-40d4-b8da-f85951b52bde", "type": "main", "index": 0 } ], [ { "node": "error-handler-9223d119-b5a7-40d4-b8da-f85951b52bde-fb4a4839", "type": "main", "index": 0 } ], [ { "node": "error-handler-9223d119-b5a7-40d4-b8da-f85951b52bde-026a291a", "type": "main", "index": 0 } ], [ { "node": "error-handler-9223d119-b5a7-40d4-b8da-f85951b52bde-40a879bc", "type": "main", "index": 0 } ], [ { "node": "error-handler-9223d119-b5a7-40d4-b8da-f85951b52bde-7140f75e", "type": "main", "index": 0 } ], [ { "node": "error-handler-9223d119-b5a7-40d4-b8da-f85951b52bde-fde02002", "type": "main", "index": 0 } ], [ { "node": "error-handler-9223d119-b5a7-40d4-b8da-f85951b52bde-e7c43982", "type": "main", "index": 0 } ], [ { "node": "error-handler-9223d119-b5a7-40d4-b8da-f85951b52bde-911529b1", "type": "main", "index": 0 } ], [ { "node": "error-handler-9223d119-b5a7-40d4-b8da-f85951b52bde-ac90d439", "type": "main", "index": 0 } ] ] }, "9dc8f2a7-eeff-4a35-be52-05c42b71eee4": { "main": [ [ { "node": "error-handler-9dc8f2a7-eeff-4a35-be52-05c42b71eee4-39727cd4", "type": "main", "index": 0 } ] ] }, "66868422-39c9-4e76-99b9-a77bb613b248": { "main": [ [ { "node": "error-handler-66868422-39c9-4e76-99b9-a77bb613b248-72a9bd42", "type": "main", "index": 0 } ] ] }, "f290f809-3b4e-42e3-bfb5-d505566d9275": { "main": [ [ { "node": "error-handler-f290f809-3b4e-42e3-bfb5-d505566d9275-6a04050a", "type": "main", "index": 0 } ] ] }, "c360f7b3-2ae4-4ebd-85ca-f64c3966e65d": { "main": [ [ { "node": "error-handler-c360f7b3-2ae4-4ebd-85ca-f64c3966e65d-519f326a", "type": "main", "index": 0 } ] ] } }, "name": "Stickynote Workflow", "settings": { "executionOrder": "v1", "saveManualExecutions": true, "callerPolicy": "workflowsFromSameOwner", "errorWorkflow": null, "timezone": "UTC", "executionTimeout": 3600, "maxExecutions": 1000, "retryOnFail": true, "retryCount": 3, "retryDelay": 1000 }, "description": "Automated workflow: Stickynote Workflow. This workflow integrates 14 different services: webhook, stickyNote, textSplitterRecursiveCharacterTextSplitter, vectorStoreQdrant, chainRetrievalQa. It contains 25 nodes and follows best practices for error handling and security.", "tags": [ "automation", "n8n", "production-ready", "excellent", "optimized" ], "notes": "Excellent quality workflow: Stickynote Workflow. This workflow has been optimized for production use with comprehensive error handling, security, and documentation." }