This workflow corresponds to n8n.io template #10194 — we link there as the canonical source.
This workflow follows the Agent → Chainllm 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 →
{
"id": "qeDWlH9s79U0ePoL",
"meta": {
"templateCredsSetupCompleted": true
},
"name": "Formal Gmail Draft Updated",
"tags": [],
"nodes": [
{
"id": "5a2cd71e-c453-4d50-abd6-c548175665e0",
"name": "Answer questions with a vector store",
"type": "@n8n/n8n-nodes-langchain.toolVectorStore",
"position": [
-688,
1472
],
"parameters": {
"name": "safai_info",
"description": "Use this tool to answer every questions by the user."
},
"typeVersion": 1
},
{
"id": "6f04f96a-80af-4498-8fb6-9fbb0d9765fb",
"name": "Pinecone Vector Store1",
"type": "@n8n/n8n-nodes-langchain.vectorStorePinecone",
"position": [
-784,
1600
],
"parameters": {
"options": {
"pineconeNamespace": "mens-collection"
},
"pineconeIndex": {
"__rl": true,
"mode": "list",
"value": "mens-collection",
"cachedResultName": "mens-collection"
}
},
"credentials": {
"pineconeApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.1
},
{
"id": "156218ac-ac53-4709-a817-6ad0c3c0391b",
"name": "Embeddings OpenAI",
"type": "@n8n/n8n-nodes-langchain.embeddingsOpenAi",
"position": [
-656,
1744
],
"parameters": {
"options": {}
},
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.2
},
{
"id": "0081e565-c292-48a8-bc29-c6197e0b56de",
"name": "OpenAI Chat Model2",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
-960,
1472
],
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "gpt-4.1-nano",
"cachedResultName": "gpt-4.1-nano"
},
"options": {}
},
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.2
},
{
"id": "2a672d15-27ca-4891-898d-aee83839f994",
"name": "OpenAI Chat Model3",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
-432,
1600
],
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "gpt-4.1-nano",
"cachedResultName": "gpt-4.1-nano"
},
"options": {}
},
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.2
},
{
"id": "f190f735-3dd1-4680-83ab-1b853816e5f0",
"name": "Gmail Trigger1",
"type": "n8n-nodes-base.gmailTrigger",
"position": [
-1760,
1296
],
"parameters": {
"simple": false,
"filters": {
"q": "-from:me"
},
"options": {},
"pollTimes": {
"item": [
{
"mode": "everyMinute"
}
]
}
},
"credentials": {
"gmailOAuth2": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "c7d38e8b-313e-4029-9162-a4a421efbdac",
"name": "If Needs Reply1",
"type": "n8n-nodes-base.if",
"position": [
-1184,
1312
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 1,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "53849246-ad32-4845-9976-9f9688f5a6f2",
"operator": {
"type": "boolean",
"operation": "true",
"singleValue": true
},
"leftValue": "={{ $json.needsReply }}",
"rightValue": "true"
}
]
}
},
"typeVersion": 2
},
{
"id": "a396adb8-3aef-46f1-af0b-35b9bb0c55a7",
"name": "JSON Parser1",
"type": "@n8n/n8n-nodes-langchain.outputParserStructured",
"position": [
-1392,
1488
],
"parameters": {
"jsonSchema": "{\n \"type\": \"object\",\n \"properties\": {\n \"needsReply\": {\n \"type\": \"boolean\"\n }\n },\n \"required\": [\"needsReply\"]\n}\n"
},
"typeVersion": 1
},
{
"id": "e1e6c625-b2c9-4987-84b9-bdd01c7c0add",
"name": "OpenAI Chat1",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
-1552,
1488
],
"parameters": {
"model": "gpt-4.1",
"options": {
"temperature": 0,
"responseFormat": "json_object"
}
},
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "abdef9bf-cfeb-4530-aac0-7c686d6a5d4c",
"name": "Assess if message needs a reply1",
"type": "@n8n/n8n-nodes-langchain.chainLlm",
"position": [
-1536,
1312
],
"parameters": {
"prompt": "=Subject: {{ $json.subject }}\nMessage:\n{{ $json.textAsHtml }} ",
"messages": {
"messageValues": [
{
"message": "=Your task is to assess if the message requires a response. Return in JSON format true if it does, false otherwise. Emails which are not asking about anything regarding our men's clothin store don't require a response."
}
]
}
},
"typeVersion": 1.3
},
{
"id": "2b435c89-1c00-41fe-ba84-6e5d81f213c5",
"name": "Gmail",
"type": "n8n-nodes-base.gmail",
"position": [
-592,
1136
],
"parameters": {
"message": "={{ $json.output }}",
"options": {},
"emailType": "text",
"messageId": "={{ $('Gmail Trigger1').item.json.id }}",
"operation": "reply"
},
"credentials": {
"gmailOAuth2": {
"name": "<your credential>"
}
},
"typeVersion": 2.1
},
{
"id": "5d2ee49d-a014-4ba6-a036-5a2c610203bd",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1840,
1200
],
"parameters": {
"color": 4,
"height": 256,
"content": "## Collecting Recieved Email"
},
"typeVersion": 1
},
{
"id": "88aa8b62-f52e-49f0-8c12-bc3c1b0b78b8",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1584,
1200
],
"parameters": {
"width": 304,
"height": 448,
"content": "## Assesing whether the mail needs a reply or not"
},
"typeVersion": 1
},
{
"id": "0dfaa8d0-9879-4ceb-89c0-51da658748b5",
"name": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1264,
1200
],
"parameters": {
"color": 3,
"width": 272,
"height": 272,
"content": "## Selecting only the mails that need a reply"
},
"typeVersion": 1
},
{
"id": "3b53a096-022b-4f4c-9b08-f18211c6e7b4",
"name": "Sticky Note3",
"type": "n8n-nodes-base.stickyNote",
"position": [
-816,
1392
],
"parameters": {
"color": 6,
"width": 528,
"height": 480,
"content": "## Custom Knowledge Base for the AI Agent"
},
"typeVersion": 1
},
{
"id": "72bca71f-0248-4132-a0c6-ccfe1fa2ab32",
"name": "Sticky Note4",
"type": "n8n-nodes-base.stickyNote",
"position": [
-976,
1136
],
"parameters": {
"color": 5,
"width": 304,
"height": 208,
"content": "## RAG Agent"
},
"typeVersion": 1
},
{
"id": "dca5339b-d877-42c6-bed3-377d51f6b26a",
"name": "AI Agent",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
-944,
1200
],
"parameters": {
"text": "=Subject: {{ $('Gmail Trigger1').item.json.headers.subject }}\nMessage: {{ $('Gmail Trigger1').item.json.text }}",
"options": {
"systemMessage": "=You are a friendly and professional support agent for a men's clothing store whose goal is to help users by providing clear, accurate, and empathetic responses to their email. When a user asks a question or describes an issue through email regarding anything related to men's clothing store, use the Retrieval-Augmented Generation (RAG) tool to search and fetch the most relevant, up-to-date information from the knowledge base or documents available. Start the response with \"Dear\" header and end by saying \"Best regrads\" footer just like how a mail is written. (Dont add any name after \"Dear\")\n\nYour responses should:\n\n* Acknowledge the user\u2019s concern with empathy.\n* Use the RAG tool to find precise information relevant to the user\u2019s query.\n* Clearly explain the solution or information in simple, easy-to-understand language.\n* If you don\u2019t find an exact answer, be honest about it and offer helpful alternatives or next steps.\n* Always maintain a polite, patient, and supportive tone.\n* Keep responses short and concise: Only provide the price and key features of the service requested. Avoid additional details unless directly requested."
},
"promptType": "define"
},
"typeVersion": 1.9
},
{
"id": "98ac7648-0609-46c8-892f-fcfc236086a0",
"name": "Sticky Note5",
"type": "n8n-nodes-base.stickyNote",
"position": [
-656,
1056
],
"parameters": {
"color": 4,
"width": 224,
"height": 240,
"content": "## Sending a Reply"
},
"typeVersion": 1
}
],
"active": false,
"settings": {
"executionOrder": "v1"
},
"versionId": "6e680f8b-d304-441c-9c11-5bdacf7b7c87",
"connections": {
"AI Agent": {
"main": [
[
{
"node": "Gmail",
"type": "main",
"index": 0
}
]
]
},
"JSON Parser1": {
"ai_outputParser": [
[
{
"node": "Assess if message needs a reply1",
"type": "ai_outputParser",
"index": 0
}
]
]
},
"OpenAI Chat1": {
"ai_languageModel": [
[
{
"node": "Assess if message needs a reply1",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Gmail Trigger1": {
"main": [
[
{
"node": "Assess if message needs a reply1",
"type": "main",
"index": 0
}
]
]
},
"If Needs Reply1": {
"main": [
[
{
"node": "AI Agent",
"type": "main",
"index": 0
}
]
]
},
"Embeddings OpenAI": {
"ai_embedding": [
[
{
"node": "Pinecone Vector Store1",
"type": "ai_embedding",
"index": 0
}
]
]
},
"OpenAI Chat Model2": {
"ai_languageModel": [
[
{
"node": "AI Agent",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"OpenAI Chat Model3": {
"ai_languageModel": [
[
{
"node": "Answer questions with a vector store",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Pinecone Vector Store1": {
"ai_vectorStore": [
[
{
"node": "Answer questions with a vector store",
"type": "ai_vectorStore",
"index": 0
}
]
]
},
"Assess if message needs a reply1": {
"main": [
[
{
"node": "If Needs Reply1",
"type": "main",
"index": 0
}
]
]
},
"Answer questions with a vector store": {
"ai_tool": [
[
{
"node": "AI Agent",
"type": "ai_tool",
"index": 0
}
]
]
}
}
}
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.
gmailOAuth2openAiApipineconeApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
Description This workflow is built for e-commerce store owners, customer support teams, and retail businesses who want to provide instant, intelligent email support without hiring additional staff. If you're tired of manually responding to customer inquiries, searching through…
Source: https://n8n.io/workflows/10194/ — 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.
Alfred (funcional). Uses gmailTool, googleCalendarTool, gmail, embeddingsOpenAi. Event-driven trigger; 83 nodes.
This advanced n8n workflow automates the full lead enrichment, qualification, and personalized outreach process tailored specifically for the B2B real estate sector. Integrating top platforms like Api
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
Who is this for? This workflow is ideal for HR teams, startups, and enterprises that want to handle employee interactions through WhatsApp and automate responses using LLM (OpenAI) and intelligent rou
BambooHR AI-Powered Company Policies and Benefits Chatbot. Uses manualTrigger, documentDefaultDataLoader, embeddingsOpenAi, textSplitterRecursiveCharacterTextSplitter. Event-driven trigger; 50 nodes.