{"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,"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,"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,"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,"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,"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,"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,"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."}],"connections":{"Webhook":{"main":[[],[],[],[],[],[],[],[],[]]},"Respond to Webhook":{"main":[[],[],[],[],[],[],[],[],[]]},"Google Drive":{"main":[[]]},"OpenAI Chat Model":{"main":[[]]},"Embeddings OpenAI1":{"main":[[]]},"Embeddings OpenAI":{"main":[[]]}},"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.","notes":"Excellent quality workflow: Stickynote Workflow. This workflow has been optimized for production use with comprehensive error handling, security, and documentation."}