{"workflow":{"id":10534,"name":"Capture and score website leads with Gemini RAG, Supabase, Google Sheets and Slack alerts","views":56,"recentViews":0,"totalViews":56,"createdAt":"2025-11-05T14:01:39.346Z","description":"Turn your website chat into a lead-generating machine. Visitors chat with an AI that answers questions from your knowledge base, captures their contact info, syncs everything to Google Sheets, and automatically scores leads based on buying signals - all without manual intervention.\n\n## What it does\n- Gates conversations behind identity capture (requires name + email before answering questions)\n- Saves user identity to Supabase per session (name, email, session_id)—supports updates if user changes their email\n- Answers visitor questions using RAG from your Supabase vector store with Cohere reranking\n- Detects new vs returning leads by email (prevents duplicate CRM entries)\n- Creates/updates lead records in Google Sheets with:\n  - Contact info (name, email, created date)\n  - Conversation insights (interests, summary, notes)\n  - Scoring metadata (last message time, score timer)\n- Sends Slack alerts when high-intent signals detected (pricing questions, demo requests, urgency)\n- Runs automated lead scoring every 10 minutes:\n  - Finds leads inactive for 30+ minutes\n  - AI analyzes conversation and assigns score (1-10) + status (Hot/Warm/Cold)\n  - Writes results back to Google Sheets\n\n## Requirements\n- Google Sheets OAuth2 credentials\n- Supabase account (for vector store + identity storage)\n- Google Gemini API key\n- Cohere API key (for reranking)\n- Slack OAuth2 credentials\n- Postgres database (for chat memory)\n- A Google Sheet with columns: email, name, lead_score, lead_status, interests, conversation_summary, notes, last_message_at, score_after, scored, created_at\n\n## Setup\n1. Create your Google Sheet with the required columns (or duplicate the template structure)\n2. Set up Supabase tables: `chat_users` (session_id, name, email), `documents` (vector store), `chat_memory` (conversation history)\n3. Connect all credentials to their respective nodes (Google Sheets, Supabase, Gemini, Cohere, Slack, Postgres)\n4. Update the AI agent prompts: replace `[AI AGENT NAME]`, `[COMPANY]`, and `[YOUR SERVICES/PRODUCTS/SOLUTIONS]` with your details\n5. Populate your Supabase vector store with company knowledge base documents\n6. Update the Google Sheet document ID if using your own sheet\n7. Activate the workflow: chat flow runs on every message, scoring runs every 10 minutes\n\n## Next steps\nEmbed the n8n chat widget on your website to start capturing leads. Monitor your Google Sheet to see leads populate with conversation summaries and scores. Use the lead_status column (Hot/Warm/Cold) to prioritize sales follow-up, or connect to your existing CRM via additional nodes.\n\n**Tip:** Test the full flow with a few conversations first: provide name/email → ask questions → wait 30 minutes → verify the lead gets scored. The scoring timer resets with each new message, so leads are only scored after conversation inactivity.\n\n## Sample Outputs\n\n### AI support agent refusing to answer questions until identity received and confirmed\n**via embedded n8n chat module.** \n\n![](https://i.postimg.cc/nLJsYnfq/Screenshot-2025-11-05-1533-57.png)\n\n### n8n RAG chatbot running with hosted chat interface on external website\n**via hosted n8n chat trigger.**\n\n![](https://i.postimg.cc/q7zsSk5g/Screenshot-2025-11-05-154926.png)\n\n![](https://i.postimg.cc/0jBxt0M9/Screenshot-2025-11-05-154939.png)\n\n### Supabase DB table updated with users' name and email address once provided\n**Creates a new row, or updates the row if the user requests to change their email address in the same chat session.**\n\n![](https://i.postimg.cc/J4YcqDp5/Screenshot-2025-11-05-170547.png)\n\n### Google Sheets CRM updated\n**Creates a new row for a new lead, or updates an existing row for an existing lead. Enters details about the chat, and scores the lead.**\n[Link to Google Sheets CRM sample file](https://docs.google.com/spreadsheets/d/1GJdgFLrKpjg3oyUvieW1mIbN7vWnJC2yxaEbwbAllbw/edit?usp=sharing)\n\n![](https://i.postimg.cc/pV943SPC/lead-crm-record-scored.png)\n\n### Slack alerts triggered in leads channel\n**Alerts the relevant channel with automated Slack messages any time a lead shares their name and email, plus any time they show possible buying intent.**\n\n![](https://i.postimg.cc/DyT65p0d/lead-slack-alert.png)","workflow":{"id":"XD13YYXBD3REvwUy","meta":{"instanceId":"90dd23d886c9cb675f452d0fb004af6ee783e4e974ef4384cbfad1854c68a875","templateCredsSetupCompleted":true},"name":"AI Sales Chatbot: RAG, Lead Capture, Scoring, CRM and DB Sync, and Slack Alerts","tags":[{"id":"94yO3JL7wpOZjk3A","name":"AI Chatbot","createdAt":"2025-10-22T11:21:35.499Z","updatedAt":"2025-10-22T11:21:35.499Z"},{"id":"G2fbfHeKIPv2Lpo9","name":"RAG","createdAt":"2025-11-05T11:27:13.020Z","updatedAt":"2025-11-05T11:27:13.020Z"},{"id":"W01fUigEbpzoMJlg","name":"Lead Capture","createdAt":"2025-11-05T11:27:38.370Z","updatedAt":"2025-11-05T11:27:38.370Z"},{"id":"fQJMELuV9jzEHujv","name":"Customer Support","createdAt":"2025-11-05T11:27:35.406Z","updatedAt":"2025-11-05T11:27:35.406Z"},{"id":"qZx9OTwt2STp2V9s","name":"Identity Verification","createdAt":"2025-11-05T11:27:46.110Z","updatedAt":"2025-11-05T11:27:46.110Z"}],"nodes":[{"id":"de3b285e-4006-421a-b580-f4e05c1e129c","name":"Chat Trigger","type":"@n8n/n8n-nodes-langchain.chatTrigger","position":[-1712,256],"webhookId":"66279de8-b010-4d9e-9233-5db61f26419b","parameters":{"options":{"responseMode":"responseNodes"}},"typeVersion":1.3},{"id":"38e2375a-e033-4309-9694-bef4dd59628b","name":"Vector Store","type":"@n8n/n8n-nodes-langchain.vectorStoreSupabase","position":[-176,512],"parameters":{"mode":"retrieve-as-tool","topK":30,"options":{},"tableName":{"__rl":true,"mode":"list","value":"documents","cachedResultName":"documents"},"useReranker":true,"toolDescription":"Use this tool to search for information about [COMPANY] to answer the user's question/concern/feedback/enquiry."},"credentials":{"supabaseApi":{"id":"credential-id","name":"Supabase account TC1-WS"}},"typeVersion":1.3},{"id":"3e75814d-af98-41c0-9f7e-7f8c6a9f70e6","name":"Embeddings","type":"@n8n/n8n-nodes-langchain.embeddingsGoogleGemini","position":[-256,704],"parameters":{},"credentials":{"googlePalmApi":{"id":"credential-id","name":"TC Paid Google Gemini API account"}},"typeVersion":1},{"id":"a9eda68f-bb97-41bb-b9f5-117190c583ad","name":"Reranker","type":"@n8n/n8n-nodes-langchain.rerankerCohere","position":[-96,704],"parameters":{"topN":4},"credentials":{"cohereApi":{"id":"credential-id","name":"CohereApi account"}},"typeVersion":1},{"id":"1e749878-5772-4b12-ab65-da65ddad4a53","name":"Supabase Upsert - Save User Identity","type":"n8n-nodes-base.httpRequestTool","position":[-1200,512],"parameters":{"url":"https://YOUR_PROJECT_REF.supabase.co/rest/v1/chat_users","fields":"session_id,name,email","method":"POST","options":{},"jsonBody":"={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('JSON', ``, 'json') }}","sendBody":true,"sendHeaders":true,"specifyBody":"json","fieldsToInclude":"selected","toolDescription":"=Makes an HTTP request to Supabase to UPSERT a record. Take the chat message details and extract the session_id, name, and/or email, and UPSERT them in the correct JSON body format for your response. Make sure the name starts with a capital letter.","headerParameters":{"parameters":[{"name":"apikey","value":"YOUR_SUPABASE_API_KEY"},{"name":"Authorization","value":"Bearer YOUR_TOKEN_HERE"},{"name":"Prefer","value":"resolution=merge-duplicates,return=representation"}]},"optimizeResponse":true},"typeVersion":4.2},{"id":"87e3c640-3f98-4efc-95c0-bb379bcc000e","name":"Check Identity In DB","type":"n8n-nodes-base.supabase","position":[-1408,256],"parameters":{"filters":{"conditions":[{"keyName":"session_id","keyValue":"={{ $json.sessionId }}","condition":"eq"}]},"tableId":"chat_users","operation":"getAll"},"credentials":{"supabaseApi":{"id":"credential-id","name":"Supabase account TC1-WS"}},"typeVersion":1,"alwaysOutputData":true},{"id":"f4ac6301-a6a1-488c-a984-0116f24f5493","name":"Respond to Chat","type":"@n8n/n8n-nodes-langchain.chat","position":[-608,256],"parameters":{"message":"={{ $json.output }}","options":{},"waitUserReply":false},"typeVersion":1},{"id":"schedule-trigger-scoring","name":"Schedule Trigger - Score Leads","type":"n8n-nodes-base.scheduleTrigger","position":[-1680,1072],"parameters":{"rule":{"interval":[{"field":"minutes","minutesInterval":10}]}},"typeVersion":1.2},{"id":"if-has-leads","name":"If Has Leads","type":"n8n-nodes-base.if","position":[-1008,1072],"parameters":{"options":{},"conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"has-items","operator":{"type":"number","operation":"gt"},"leftValue":"={{ $input.all().length }}","rightValue":0}]}},"typeVersion":2.2},{"id":"filter-leads-to-score","name":"Filter Leads Ready to Score","type":"n8n-nodes-base.filter","position":[-1232,1072],"parameters":{"options":{},"conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"loose"},"combinator":"and","conditions":[{"id":"scored-false","operator":{"type":"string","operation":"equals"},"leftValue":"={{ $json.scored }}","rightValue":"false"},{"id":"7fdf21d9-f1d2-4ba4-9420-7b28b2490620","operator":{"type":"boolean","operation":"false","singleValue":true},"leftValue":"={{ new Date($json.score_after) < new Date() }}","rightValue":"false"}]},"looseTypeValidation":true},"typeVersion":2.2},{"id":"d5680ad8-dec2-42d1-a995-6ac65bc076cb","name":"Google Gemini Chat Model","type":"@n8n/n8n-nodes-langchain.lmChatGoogleGemini","position":[-800,1264],"parameters":{"options":{}},"credentials":{"googlePalmApi":{"id":"credential-id","name":"TC Paid Google Gemini API account"}},"typeVersion":1},{"id":"fb8897d0-e7fd-43a6-bcb7-40900d792771","name":"Google Gemini Chat Model1","type":"@n8n/n8n-nodes-langchain.lmChatGoogleGemini","position":[-1552,512],"parameters":{"options":{}},"credentials":{"googlePalmApi":{"id":"credential-id","name":"TC Paid Google Gemini API account"}},"typeVersion":1},{"id":"af48ecde-f603-42b6-ac5c-d5538aa1f5d4","name":"Postgres Chat Memory","type":"@n8n/n8n-nodes-langchain.memoryPostgresChat","position":[-1376,512],"parameters":{"tableName":"chat_memory"},"credentials":{"postgres":{"id":"credential-id","name":"Postgres (Supabase - TidyCurve Website)"}},"typeVersion":1.3},{"id":"gs-get-leads-to-score","name":"Get All Leads","type":"n8n-nodes-base.googleSheets","position":[-1456,1072],"parameters":{"options":{},"sheetName":{"__rl":true,"mode":"list","value":348462050,"cachedResultUrl":"https://docs.google.com/spreadsheets/d/1GJdgFLrKpjg3oyUvieW1mIbN7vWnJC2yxaEbwbAllbw/edit#gid=348462050","cachedResultName":"Sheet1"},"documentId":{"__rl":true,"mode":"list","value":"1GJdgFLrKpjg3oyUvieW1mIbN7vWnJC2yxaEbwbAllbw","cachedResultUrl":"https://docs.google.com/spreadsheets/d/1GJdgFLrKpjg3oyUvieW1mIbN7vWnJC2yxaEbwbAllbw/edit?usp=drivesdk","cachedResultName":"leads_template"}},"credentials":{"googleSheetsOAuth2Api":{"id":"credential-id","name":"Google Sheets account 2"}},"typeVersion":4.5},{"id":"gs-mark-as-scored","name":"Mark as Scored","type":"n8n-nodes-base.googleSheets","position":[-384,1056],"parameters":{"columns":{"value":{"email":"={{ $('Get All Leads').item.json.email }}","scored":"TRUE"},"schema":[{"id":"email","type":"string","display":true,"removed":false,"required":false,"displayName":"email","defaultMatch":false,"canBeUsedToMatch":true},{"id":"name","type":"string","display":true,"removed":false,"required":false,"displayName":"name","defaultMatch":false,"canBeUsedToMatch":true},{"id":"lead_score","type":"string","display":true,"removed":false,"required":false,"displayName":"lead_score","defaultMatch":false,"canBeUsedToMatch":true},{"id":"lead_status","type":"string","display":true,"removed":false,"required":false,"displayName":"lead_status","defaultMatch":false,"canBeUsedToMatch":true},{"id":"interests","type":"string","display":true,"removed":false,"required":false,"displayName":"interests","defaultMatch":false,"canBeUsedToMatch":true},{"id":"conversation_summary","type":"string","display":true,"removed":false,"required":false,"displayName":"conversation_summary","defaultMatch":false,"canBeUsedToMatch":true},{"id":"notes","type":"string","display":true,"removed":false,"required":false,"displayName":"notes","defaultMatch":false,"canBeUsedToMatch":true},{"id":"last_message_at","type":"string","display":true,"removed":false,"required":false,"displayName":"last_message_at","defaultMatch":false,"canBeUsedToMatch":true},{"id":"score_after","type":"string","display":true,"removed":false,"required":false,"displayName":"score_after","defaultMatch":false,"canBeUsedToMatch":true},{"id":"scored","type":"string","display":true,"required":false,"displayName":"scored","defaultMatch":false,"canBeUsedToMatch":true},{"id":"created_at","type":"string","display":true,"removed":false,"required":false,"displayName":"created_at","defaultMatch":false,"canBeUsedToMatch":true}],"mappingMode":"defineBelow","matchingColumns":["email"],"attemptToConvertTypes":false,"convertFieldsToString":false},"options":{},"operation":"appendOrUpdate","sheetName":{"__rl":true,"mode":"list","value":348462050,"cachedResultUrl":"https://docs.google.com/spreadsheets/d/1GJdgFLrKpjg3oyUvieW1mIbN7vWnJC2yxaEbwbAllbw/edit#gid=348462050","cachedResultName":"Sheet1"},"documentId":{"__rl":true,"mode":"list","value":"1GJdgFLrKpjg3oyUvieW1mIbN7vWnJC2yxaEbwbAllbw","cachedResultUrl":"https://docs.google.com/spreadsheets/d/1GJdgFLrKpjg3oyUvieW1mIbN7vWnJC2yxaEbwbAllbw/edit?usp=drivesdk","cachedResultName":"leads_template"}},"credentials":{"googleSheetsOAuth2Api":{"id":"credential-id","name":"Google Sheets account 2"}},"typeVersion":4.5},{"id":"c332f4d1-d44f-47bf-a028-3765533768ea","name":"Update row in Google Sheets CRM","type":"n8n-nodes-base.googleSheetsTool","position":[-672,512],"parameters":{"columns":{"value":{"email":"={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('email__using_to_match_', ``, 'string') }}","notes":"={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('notes', ``, 'string') }}","scored":"FALSE","interests":"={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('interests', ``, 'string') }}","score_after":"={{ $now.plus({minutes: 30}).toISO() }}","last_message_at":"={{ $now.toISO() }}","conversation_summary":"={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('conversation_summary', ``, 'string') }}"},"schema":[{"id":"email","type":"string","display":true,"removed":false,"required":false,"displayName":"email","defaultMatch":false,"canBeUsedToMatch":true},{"id":"name","type":"string","display":true,"removed":true,"required":false,"displayName":"name","defaultMatch":false,"canBeUsedToMatch":true},{"id":"lead_score","type":"string","display":true,"required":false,"displayName":"lead_score","defaultMatch":false,"canBeUsedToMatch":true},{"id":"lead_status","type":"string","display":true,"required":false,"displayName":"lead_status","defaultMatch":false,"canBeUsedToMatch":true},{"id":"interests","type":"string","display":true,"required":false,"displayName":"interests","defaultMatch":false,"canBeUsedToMatch":true},{"id":"conversation_summary","type":"string","display":true,"required":false,"displayName":"conversation_summary","defaultMatch":false,"canBeUsedToMatch":true},{"id":"notes","type":"string","display":true,"required":false,"displayName":"notes","defaultMatch":false,"canBeUsedToMatch":true},{"id":"last_message_at","type":"string","display":true,"removed":false,"required":false,"displayName":"last_message_at","defaultMatch":false,"canBeUsedToMatch":true},{"id":"score_after","type":"string","display":true,"required":false,"displayName":"score_after","defaultMatch":false,"canBeUsedToMatch":true},{"id":"scored","type":"string","display":true,"required":false,"displayName":"scored","defaultMatch":false,"canBeUsedToMatch":true},{"id":"created_at","type":"string","display":true,"removed":true,"required":false,"displayName":"created_at","defaultMatch":false,"canBeUsedToMatch":true},{"id":"row_number","type":"number","display":true,"removed":true,"readOnly":true,"required":false,"displayName":"row_number","defaultMatch":false,"canBeUsedToMatch":true}],"mappingMode":"defineBelow","matchingColumns":["email"],"attemptToConvertTypes":false,"convertFieldsToString":false},"options":{},"operation":"update","sheetName":{"__rl":true,"mode":"list","value":348462050,"cachedResultUrl":"https://docs.google.com/spreadsheets/d/1GJdgFLrKpjg3oyUvieW1mIbN7vWnJC2yxaEbwbAllbw/edit#gid=348462050","cachedResultName":"Sheet1"},"documentId":{"__rl":true,"mode":"list","value":"1GJdgFLrKpjg3oyUvieW1mIbN7vWnJC2yxaEbwbAllbw","cachedResultUrl":"https://docs.google.com/spreadsheets/d/1GJdgFLrKpjg3oyUvieW1mIbN7vWnJC2yxaEbwbAllbw/edit?usp=drivesdk","cachedResultName":"leads_template"},"descriptionType":"manual","toolDescription":"=Update an existing lead's information in the CRM.\n\nUse this tool after any meaningful conversation exchange to record:\n- interests: Topics they asked about (append to existing)\n- conversation_summary: Brief summary of the full conversation so far\n- notes: Any relevant details (budget, timeline, company mentioned, etc.)\n\nMatch by email - the lead must already exist in the sheet.\nWorks for both NEW leads (after Append) and RETURNING users."},"credentials":{"googleSheetsOAuth2Api":{"id":"credential-id","name":"Google Sheets account 2"}},"typeVersion":4.7},{"id":"676d4a0b-d61d-4691-bf57-7777d1497398","name":"Update row in Google Sheets CRM (2)","type":"n8n-nodes-base.googleSheetsTool","position":[-608,1264],"parameters":{"columns":{"value":{"email":"={{ $('Get All Leads').item.json.email }}","lead_score":"={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('lead_score', ``, 'string') }}","lead_status":"={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('lead_status', ``, 'string') }}"},"schema":[{"id":"email","type":"string","display":true,"removed":false,"required":false,"displayName":"email","defaultMatch":false,"canBeUsedToMatch":true},{"id":"name","type":"string","display":true,"required":false,"displayName":"name","defaultMatch":false,"canBeUsedToMatch":true},{"id":"lead_score","type":"string","display":true,"required":false,"displayName":"lead_score","defaultMatch":false,"canBeUsedToMatch":true},{"id":"lead_status","type":"string","display":true,"required":false,"displayName":"lead_status","defaultMatch":false,"canBeUsedToMatch":true},{"id":"interests","type":"string","display":true,"removed":true,"required":false,"displayName":"interests","defaultMatch":false,"canBeUsedToMatch":true},{"id":"conversation_summary","type":"string","display":true,"removed":true,"required":false,"displayName":"conversation_summary","defaultMatch":false,"canBeUsedToMatch":true},{"id":"notes","type":"string","display":true,"removed":true,"required":false,"displayName":"notes","defaultMatch":false,"canBeUsedToMatch":true},{"id":"last_message_at","type":"string","display":true,"required":false,"displayName":"last_message_at","defaultMatch":false,"canBeUsedToMatch":true},{"id":"score_after","type":"string","display":true,"required":false,"displayName":"score_after","defaultMatch":false,"canBeUsedToMatch":true},{"id":"scored","type":"string","display":true,"removed":true,"required":false,"displayName":"scored","defaultMatch":false,"canBeUsedToMatch":true},{"id":"created_at","type":"string","display":true,"required":false,"displayName":"created_at","defaultMatch":false,"canBeUsedToMatch":true},{"id":"row_number","type":"number","display":true,"removed":true,"readOnly":true,"required":false,"displayName":"row_number","defaultMatch":false,"canBeUsedToMatch":true}],"mappingMode":"defineBelow","matchingColumns":["email"],"attemptToConvertTypes":false,"convertFieldsToString":false},"options":{},"operation":"update","sheetName":{"__rl":true,"mode":"list","value":348462050,"cachedResultUrl":"https://docs.google.com/spreadsheets/d/1GJdgFLrKpjg3oyUvieW1mIbN7vWnJC2yxaEbwbAllbw/edit#gid=348462050","cachedResultName":"Sheet1"},"documentId":{"__rl":true,"mode":"list","value":"1GJdgFLrKpjg3oyUvieW1mIbN7vWnJC2yxaEbwbAllbw","cachedResultUrl":"https://docs.google.com/spreadsheets/d/1GJdgFLrKpjg3oyUvieW1mIbN7vWnJC2yxaEbwbAllbw/edit?usp=drivesdk","cachedResultName":"leads_template"},"descriptionType":"manual","toolDescription":"Set the lead_score and lead_status"},"credentials":{"googleSheetsOAuth2Api":{"id":"credential-id","name":"Google Sheets account 2"}},"typeVersion":4.7},{"id":"check-lead-exists-crm","name":"Check if Lead Exists in CRM","type":"n8n-nodes-base.googleSheetsTool","position":[-1008,512],"parameters":{"options":{"returnFirstMatch":true},"filtersUI":{"values":[{"lookupValue":"={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('email_to_lookup', 'The email address to check in the CRM', 'string') }}","lookupColumn":"email"}]},"sheetName":{"__rl":true,"mode":"list","value":348462050,"cachedResultUrl":"https://docs.google.com/spreadsheets/d/1GJdgFLrKpjg3oyUvieW1mIbN7vWnJC2yxaEbwbAllbw/edit#gid=348462050","cachedResultName":"Sheet1"},"documentId":{"__rl":true,"mode":"list","value":"1GJdgFLrKpjg3oyUvieW1mIbN7vWnJC2yxaEbwbAllbw","cachedResultUrl":"https://docs.google.com/spreadsheets/d/1GJdgFLrKpjg3oyUvieW1mIbN7vWnJC2yxaEbwbAllbw/edit?usp=drivesdk","cachedResultName":"leads_template"},"descriptionType":"manual","toolDescription":"Check if a lead with this email already exists in the CRM.\n\nCALL THIS TOOL FIRST when a user provides their email address, BEFORE deciding to use Append or Update.\n\nReturns:\n- If lead EXISTS: Returns the lead's row data (email, name, created_at, etc.)\n- If lead NOT FOUND: Returns empty result\n\nBased on the result:\n- Empty result → Lead is NEW → Use 'Append row in Google Sheets CRM'\n- Has data → Lead EXISTS → Use 'Update row in Google Sheets CRM' only"},"credentials":{"googleSheetsOAuth2Api":{"id":"credential-id","name":"Google Sheets account 2"}},"typeVersion":4.7},{"id":"6567e584-ff64-4523-8c7f-797dc9cab9d1","name":"Append row in Google Sheets CRM","type":"n8n-nodes-base.googleSheetsTool","position":[-848,512],"parameters":{"columns":{"value":{"name":"={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('name', ``, 'string') }}","email":"={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('email', ``, 'string') }}","scored":"FALSE","created_at":"={{ $now.toISO() }}","score_after":"={{ $now.plus({minutes: 30}).toISO() }}","last_message_at":"={{ $now.toISO() }}"},"schema":[{"id":"email","type":"string","display":true,"required":false,"displayName":"email","defaultMatch":false,"canBeUsedToMatch":true},{"id":"name","type":"string","display":true,"required":false,"displayName":"name","defaultMatch":false,"canBeUsedToMatch":true},{"id":"lead_score","type":"string","display":true,"removed":true,"required":false,"displayName":"lead_score","defaultMatch":false,"canBeUsedToMatch":true},{"id":"lead_status","type":"string","display":true,"removed":true,"required":false,"displayName":"lead_status","defaultMatch":false,"canBeUsedToMatch":true},{"id":"interests","type":"string","display":true,"removed":true,"required":false,"displayName":"interests","defaultMatch":false,"canBeUsedToMatch":true},{"id":"conversation_summary","type":"string","display":true,"removed":true,"required":false,"displayName":"conversation_summary","defaultMatch":false,"canBeUsedToMatch":true},{"id":"notes","type":"string","display":true,"removed":true,"required":false,"displayName":"notes","defaultMatch":false,"canBeUsedToMatch":true},{"id":"last_message_at","type":"string","display":true,"removed":false,"required":false,"displayName":"last_message_at","defaultMatch":false,"canBeUsedToMatch":true},{"id":"score_after","type":"string","display":true,"removed":false,"required":false,"displayName":"score_after","defaultMatch":false,"canBeUsedToMatch":true},{"id":"scored","type":"string","display":true,"removed":false,"required":false,"displayName":"scored","defaultMatch":false,"canBeUsedToMatch":true},{"id":"created_at","type":"string","display":true,"required":false,"displayName":"created_at","defaultMatch":false,"canBeUsedToMatch":true}],"mappingMode":"defineBelow","matchingColumns":[],"attemptToConvertTypes":false,"convertFieldsToString":false},"options":{},"operation":"append","sheetName":{"__rl":true,"mode":"list","value":348462050,"cachedResultUrl":"https://docs.google.com/spreadsheets/d/1GJdgFLrKpjg3oyUvieW1mIbN7vWnJC2yxaEbwbAllbw/edit#gid=348462050","cachedResultName":"Sheet1"},"documentId":{"__rl":true,"mode":"list","value":"1GJdgFLrKpjg3oyUvieW1mIbN7vWnJC2yxaEbwbAllbw","cachedResultUrl":"https://docs.google.com/spreadsheets/d/1GJdgFLrKpjg3oyUvieW1mIbN7vWnJC2yxaEbwbAllbw/edit?usp=drivesdk","cachedResultName":"leads_template"},"descriptionType":"manual","toolDescription":"Create a NEW lead record in the CRM.\n\nPREREQUISITE: You MUST call 'Check if Lead Exists in CRM' FIRST!\n\nONLY use this tool when:\n- You already called 'Check if Lead Exists in CRM' with the email\n- AND that check returned EMPTY (no data found)\n\nNEVER use this tool if:\n- You haven't checked the CRM first\n- The check returned existing data (lead already exists)\n\nFields: email, name, created_at (auto-set to current time)"},"credentials":{"googleSheetsOAuth2Api":{"id":"credential-id","name":"Google Sheets account 2"}},"typeVersion":4.7},{"id":"85c41b38-d5b2-4f26-aed9-833e3f8911b2","name":"AI Support Specialist","type":"@n8n/n8n-nodes-langchain.agent","position":[-1056,256],"parameters":{"text":"={{ $('Chat Trigger').item.json.chatInput }}","options":{"systemMessage":"=# OVERVIEW\nYou are [AI AGENT NAME], an AI Sales Assistant for [COMPANY] (a company specializing in [YOUR SERVICES/PRODUCTS/SOLUTIONS]). You help answer questions based on what's in the knowledge base AND you help capture and qualify leads. Greet and introduce yourself briefly ONLY upon receiving the first message.\n\n## CURRENT USER IDENTITY STATUS\n  - Name: {{ $json.name || 'NOT PROVIDED YET' }}\n  - Email: {{ $json.email || 'NOT PROVIDED YET' }}\n  - Session ID: {{ $('Chat Trigger').item.json.sessionId }}\n\n## CRITICAL REQUIREMENTS\n1. Before answering ANY questions, you MUST have BOTH the user's name AND email.\n2. If either is 'NOT PROVIDED YET', ask for the missing information naturally, conversationally, and in a kind yet concise manner.\n3. When the user provides their email address:\n   a) FIRST: Call 'Check if Lead Exists in CRM' tool with their email\n   b) Check the result:\n      - If EMPTY (no data returned) → Lead is NEW → Call 'Append row in Google Sheets CRM'\n      - If HAS DATA (row returned) → Lead EXISTS → Skip Append, go straight to Update\n   c) Call 'Supabase Upsert - Save User Identity' tool with: name, email, and session_id\n   d) Call 'Update row in Google Sheets CRM' tool to update interests, conversation_summary, and notes\n   e) Call 'Slack Alert - New Lead and Intent' tool to notify the sales team\n4. Once you have name and email stored, answer their questions using the company knowledge base\n5. Be natural, kind, concise, and professional\n6. Focus on brevity when providing answers\n\n## GOOGLE SHEET CRM TOOLS\n\n### Check if Lead Exists in CRM (CALL THIS FIRST!)\n**Purpose:** Check if email already exists in the CRM\n**When to use:** ALWAYS call this FIRST when user provides their email\n**Returns:** Row data if exists, empty if not found\n**CRITICAL:** This determines whether to Append or just Update!\n\n### Append row in Google Sheets CRM\n**Purpose:** Create a NEW lead record\n**When to use:** ONLY if 'Check if Lead Exists in CRM' returned EMPTY (no data)\n**What it writes:** email, name, created_at (auto-set)\n**NEVER use if:** The lookup tool returned existing data\n\n### Update row in Google Sheets CRM\n**Purpose:** Update an EXISTING lead's conversation data\n**When to use:** After EVERY meaningful interaction\n**What it writes:** interests, conversation_summary, notes\n\n## TOOL SEQUENCE WHEN USER PROVIDES EMAIL\n1. Check if Lead Exists in CRM (with their email)\n2. IF empty result → Append row in Google Sheets CRM (create new lead)\n3. Supabase Upsert - Save User Identity\n4. Update row in Google Sheets CRM (update conversation data)\n5. Slack Alert - New Lead and Intent\n\n## WHEN TO USE SLACK TOOL\n- **Slack - Notify Sales**: When user explicitly asks for pricing, requests a demo, says they're ready to buy, or mentions urgent timeline\n\n## LEAD QUALIFICATION SIGNALS (Listen for anything like this!)\nHigh-value signals that should trigger sales notification:\n- Budget mentions (\"what's the pricing?\", \"within our budget\", \"how much does it cost?\")\n- Urgency (\"need this ASAP\", \"starting next month\", \"urgent requirement\")\n- Decision-maker language (\"my team\", \"I can approve\", \"we're evaluating options\")\n- Specific feature/product questions (indicates serious research)\n- Demo or trial requests\n\n## INSTRUCTIONS\n- Check the identity status above at the start of each response\n- If name or email is missing, ask for it kindly in a conversational yet concise way\n- If asked \"why?\", explain it helps personalize their experience and enables follow-up\n- ALWAYS check CRM for existing lead BEFORE creating a new one\n- When user asks questions, shows intent, or shares information, update their Google Sheet CRM record\n- Notify sales if high-intent signals detected\n- Only answer company questions after identity is complete\n- Use the Vector Store tool to search company documents for answers\n- Be helpful and concise\n- Use \"we\", \"ours\", \"us\" naturally when referring to [COMPANY]"},"promptType":"define"},"typeVersion":3.1},{"id":"01b65962-597c-4d22-b817-82657b15696c","name":"AI Leader Scorer","type":"@n8n/n8n-nodes-langchain.agent","position":[-752,1056],"parameters":{"text":"=lead's email: {{ $json.email }}\n\nConversation Summary:\n{{ $json.conversation_summary }}\n\nInterests:\n{{ $json.interests }}\n\nNotes:\n{{ $json.notes }}\n","options":{"systemMessage":"# Lead Scoring Analyst\n\nAnalyze the chat conversation and score the lead from 1-10 based on buying signals.\n\n## Scoring Guide\n\n| Score | Level | Signals |\n|-------|-------|---------|\n| **8-10** | Hot | Pricing questions, demo requests, \"ready to buy\", urgency |\n| **5-7** | Warm | Multiple questions, team/company mentions, specific feature interest |\n| **3-4** | Cold | Basic questions, early research, \"just looking\" |\n| **1-2** | New | Only provided name/email, minimal interaction |\n\n## Key Signals to Look For\n\n**High Intent (+2-3 points)**\n- Asks about pricing or cost\n- Requests demo or trial\n- Mentions urgency or deadlines\n\n**Medium Intent (+1-2 points)**\n- Mentions their team or company\n- Asks multiple follow-up questions\n- Discusses specific use cases\n\n**Low Intent (+0-1 points)**\n- Only greeted and provided contact info\n- Single generic question\n- Says \"just browsing\" or \"maybe later\"\n\n## Your Task\n\n1. The email provided corresponds to a lead in the Google Sheets CRM\n2. Analyze the conversation associated with this session\n3. Identify buying signals present\n4. Calculate a score from 1-10\n5. **Use the \"Google Sheets Score Tool\"** to update the lead record with:\n   - **lead_score**: Number 1-10\n   - **lead_status**: \"Hot\", \"Warm\", \"Cold\"\n\n## Important\n- You MUST use the Google Sheets Score Tool to save the scoring results"},"promptType":"define"},"typeVersion":3.1},{"id":"e5a1ca3a-8d83-44f9-af34-254633f927fc","name":"Sticky Note","type":"n8n-nodes-base.stickyNote","position":[-1808,-240],"parameters":{"color":7,"width":1408,"height":336,"content":"## Sample Output\n\n### Google Sheets CRM updated \n**Creates a new row for a new lead, or updates an existing row for an existing lead. Enters details about the chat, and scores the lead.**\n[Link to Google Sheets CRM sample file](https://docs.google.com/spreadsheets/d/1GJdgFLrKpjg3oyUvieW1mIbN7vWnJC2yxaEbwbAllbw/edit?usp=sharing)\n\n![](https://i.postimg.cc/pV943SPC/lead-crm-record-scored.png)"},"typeVersion":1},{"id":"5da9a309-2b23-46cf-b7ce-c7a4cb2f194d","name":"Slack Alert - New Lead and Intent","type":"n8n-nodes-base.slackTool","position":[-496,512],"webhookId":"2321e1b0-a357-40e7-89c2-3d0b775cc665","parameters":{"text":"={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Message_Text', ``, 'string') }}","select":"channel","channelId":{"__rl":true,"mode":"list","value":"C09G7DR7X52","cachedResultName":"talent"},"otherOptions":{},"authentication":"oAuth2","descriptionType":"manual","toolDescription":"Send a message in Slack to alert the sales team that a new lead has arrived. Make sure to provide their name and email address. \n\nSend a message in Slack if the lead is asking about anything worthy of the sales team's attention (buying intent, pricing, timelines, etc)."},"credentials":{"slackOAuth2Api":{"id":"credential-id","name":"TidyCurve DJP"}},"typeVersion":2.4},{"id":"ceab145b-1968-4990-a00e-1be96e3de4ef","name":"Sticky Note2","type":"n8n-nodes-base.stickyNote","position":[-1808,128],"parameters":{"color":5,"width":1968,"height":756,"content":"## 1. AI Chat with Lead Capture\nLead messages trigger identity verification, RAG-powered responses, CRM updates, and Slack alerts for high-intent leads."},"typeVersion":1},{"id":"d3d922c3-ee9a-4de1-b122-97711de27767","name":"Sticky Note7","type":"n8n-nodes-base.stickyNote","position":[-1808,912],"parameters":{"color":4,"width":1968,"height":592,"content":"## 2. AI-Powered Lead Qualification\nPeriodically scores leads based on conversation history - pricing questions, demo requests, and urgency signals drive higher scores."},"typeVersion":1},{"id":"10b4a954-9f75-4a0d-84e3-5f9001bc8d07","name":"Sticky Note10","type":"n8n-nodes-base.stickyNote","position":[-2704,-240],"parameters":{"width":864,"height":1264,"content":"# AI Sales Chatbot: RAG, Lead Capture, Scoring, CRM and DB Sync, and Slack Alerts\n\nTurn your website chat into a lead-generating machine. Visitors chat with an AI that answers questions from your knowledge base, captures their contact info, syncs everything to Google Sheets, and automatically scores leads based on buying signals - all without manual intervention.\n\n## What it does\n- Gates conversations behind identity capture (requires name + email before answering questions)\n- Saves user identity to Supabase per session (name, email, session_id)—supports updates if user changes their email\n- Answers visitor questions using RAG from your Supabase vector store with Cohere reranking\n- Detects new vs returning leads by email (prevents duplicate CRM entries)\n- Creates/updates lead records in Google Sheets with:\n  - Contact info (name, email, created date)\n  - Conversation insights (interests, summary, notes)\n  - Scoring metadata (last message time, score timer)\n- Sends Slack alerts when high-intent signals detected (pricing questions, demo requests, urgency)\n- Runs automated lead scoring every 10 minutes:\n  - Finds leads inactive for 30+ minutes\n  - AI analyzes conversation and assigns score (1-10) + status (Hot/Warm/Cold)\n  - Writes results back to Google Sheets\n\n## Requirements\n- Google Sheets OAuth2 credentials\n- Supabase account (for vector store + identity storage)\n- Google Gemini API key\n- Cohere API key (for reranking)\n- Slack OAuth2 credentials\n- Postgres database (for chat memory)\n- A Google Sheet with columns: email, name, lead_score, lead_status, interests, conversation_summary, notes, last_message_at, score_after, scored, created_at\n\n## Setup\n1. Create your Google Sheet with the required columns (or duplicate the template structure)\n2. Set up Supabase tables: `chat_users` (session_id, name, email), `documents` (vector store), `chat_memory` (conversation history)\n3. Connect all credentials to their respective nodes (Google Sheets, Supabase, Gemini, Cohere, Slack, Postgres)\n4. Update the AI agent prompts: replace `[AI AGENT NAME]`, `[COMPANY]`, and `[YOUR SERVICES/PRODUCTS/SOLUTIONS]` with your details\n5. Populate your Supabase vector store with company knowledge base documents\n6. Update the Google Sheet document ID if using your own sheet\n7. Activate the workflow: chat flow runs on every message, scoring runs every 10 minutes\n\n## Next steps\nEmbed the n8n chat widget on your website to start capturing leads. Monitor your Google Sheet to see leads populate with conversation summaries and scores. Use the lead_status column (Hot/Warm/Cold) to prioritize sales follow-up, or connect to your existing CRM via additional nodes.\n\n**Tip:** Test the full flow with a few conversations first: provide name/email → ask questions → wait 30 minutes → verify the lead gets scored. The scoring timer resets with each new message, so leads are only scored after conversation inactivity.\n"},"typeVersion":1}],"active":false,"pinData":{},"settings":{"callerPolicy":"workflowsFromSameOwner","availableInMCP":false,"executionOrder":"v1"},"versionId":"a8a2369a-aaed-4c32-8155-3294678bca3a","connections":{"Reranker":{"ai_reranker":[[{"node":"Vector Store","type":"ai_reranker","index":0}]]},"Embeddings":{"ai_embedding":[[{"node":"Vector Store","type":"ai_embedding","index":0}]]},"Chat Trigger":{"main":[[{"node":"Check Identity In DB","type":"main","index":0}]]},"If Has Leads":{"main":[[{"node":"AI Leader Scorer","type":"main","index":0}]]},"Vector Store":{"ai_tool":[[{"node":"AI Support Specialist","type":"ai_tool","index":0}]]},"Get All Leads":{"main":[[{"node":"Filter Leads Ready to Score","type":"main","index":0}]]},"Respond to Chat":{"main":[[]]},"AI Leader Scorer":{"main":[[{"node":"Mark as Scored","type":"main","index":0}]]},"Check Identity In DB":{"main":[[{"node":"AI Support Specialist","type":"main","index":0}]]},"Postgres Chat Memory":{"ai_memory":[[{"node":"AI Support Specialist","type":"ai_memory","index":0}]]},"AI Support Specialist":{"main":[[{"node":"Respond to Chat","type":"main","index":0}]]},"Google Gemini Chat Model":{"ai_languageModel":[[{"node":"AI Leader Scorer","type":"ai_languageModel","index":0}]]},"Google Gemini Chat Model1":{"ai_languageModel":[[{"node":"AI Support Specialist","type":"ai_languageModel","index":0}]]},"Check if Lead Exists in CRM":{"ai_tool":[[{"node":"AI Support Specialist","type":"ai_tool","index":0}]]},"Filter Leads Ready to Score":{"main":[[{"node":"If Has Leads","type":"main","index":0}]]},"Schedule Trigger - Score Leads":{"main":[[{"node":"Get All Leads","type":"main","index":0}]]},"Append row in Google Sheets CRM":{"ai_tool":[[{"node":"AI Support Specialist","type":"ai_tool","index":0}]]},"Update row in Google Sheets CRM":{"ai_tool":[[{"node":"AI Support Specialist","type":"ai_tool","index":0}]]},"Slack Alert - New Lead and Intent":{"ai_tool":[[{"node":"AI Support Specialist","type":"ai_tool","index":0}]]},"Update row in Google Sheets CRM (2)":{"ai_tool":[[{"node":"AI Leader Scorer","type":"ai_tool","index":0}]]},"Supabase Upsert - Save User Identity":{"ai_tool":[[{"node":"AI Support Specialist","type":"ai_tool","index":0}]]}}},"lastUpdatedBy":1,"workflowInfo":{"nodeCount":26,"nodeTypes":{"n8n-nodes-base.if":{"count":1},"n8n-nodes-base.filter":{"count":1},"n8n-nodes-base.supabase":{"count":1},"n8n-nodes-base.slackTool":{"count":1},"n8n-nodes-base.stickyNote":{"count":4},"n8n-nodes-base.googleSheets":{"count":2},"@n8n/n8n-nodes-langchain.chat":{"count":1},"@n8n/n8n-nodes-langchain.agent":{"count":2},"n8n-nodes-base.httpRequestTool":{"count":1},"n8n-nodes-base.scheduleTrigger":{"count":1},"n8n-nodes-base.googleSheetsTool":{"count":4},"@n8n/n8n-nodes-langchain.chatTrigger":{"count":1},"@n8n/n8n-nodes-langchain.rerankerCohere":{"count":1},"@n8n/n8n-nodes-langchain.lmChatGoogleGemini":{"count":2},"@n8n/n8n-nodes-langchain.memoryPostgresChat":{"count":1},"@n8n/n8n-nodes-langchain.vectorStoreSupabase":{"count":1},"@n8n/n8n-nodes-langchain.embeddingsGoogleGemini":{"count":1}}},"status":"published","readyToDemo":null,"user":{"name":"Dean Pike","username":"deanjp","bio":"Saving 20+ hours weekly for growing companies by putting their client-facing and back-office operations on autopilot.\n\nAs the Founder of TidyCurve, we build AI agents and workflow automations that replace critical repetitive work: from lead generation and customer support, to marketing, recruitment, and onboarding. We deploy scalable solutions in 4-8 weeks at a fraction of enterprise costs - backed by a 60-day 3x ROI guarantee.","verified":true,"links":["https://www.linkedin.com/in/deanpike/"],"avatar":"https://gravatar.com/avatar/efb6e19375a6691a97727acd050cf8e18e7530bb3f9e7cef7701c524ccb191cf?r=pg&d=retro&size=200"},"nodes":[{"id":18,"icon":"file:googleSheets.svg","name":"n8n-nodes-base.googleSheets","codex":{"data":{"alias":["CSV","Sheet","Spreadsheet","GS"],"resources":{"generic":[{"url":"https://n8n.io/blog/love-at-first-sight-ricardos-n8n-journey/","icon":"❤️","label":"Love at first sight: Ricardo’s n8n journey"},{"url":"https://n8n.io/blog/why-business-process-automation-with-n8n-can-change-your-daily-life/","icon":"🧬","label":"Why business process automation with n8n can change your daily life"},{"url":"https://n8n.io/blog/automatically-adding-expense-receipts-to-google-sheets-with-telegram-mindee-twilio-and-n8n/","icon":"🧾","label":"Automatically Adding Expense Receipts to Google Sheets with Telegram, Mindee, Twilio, and n8n"},{"url":"https://n8n.io/blog/supercharging-your-conference-registration-process-with-n8n/","icon":"🎫","label":"Supercharging your conference registration process with n8n"},{"url":"https://n8n.io/blog/creating-triggers-for-n8n-workflows-using-polling/","icon":"⏲","label":"Creating triggers for n8n workflows using polling"},{"url":"https://n8n.io/blog/no-code-ecommerce-workflow-automations/","icon":"store","label":"6 e-commerce workflows to power up your Shopify s"},{"url":"https://n8n.io/blog/migrating-community-metrics-to-orbit-using-n8n/","icon":"📈","label":"Migrating Community Metrics to Orbit using n8n"},{"url":"https://n8n.io/blog/automate-google-apps-for-productivity/","icon":"💡","label":"15 Google apps you can combine and automate to increase productivity"},{"url":"https://n8n.io/blog/your-business-doesnt-need-you-to-operate/","icon":" 🖥️","label":"Hey founders! Your business doesn't need you to operate"},{"url":"https://n8n.io/blog/how-honest-burgers-use-automation-to-save-100k-per-year/","icon":"🍔","label":"How Honest Burgers Use Automation to Save $100k per year"},{"url":"https://n8n.io/blog/how-a-digital-strategist-uses-n8n-for-online-marketing/","icon":"💻","label":"How a digital strategist uses n8n for online marketing"},{"url":"https://n8n.io/blog/why-this-product-manager-loves-workflow-automation-with-n8n/","icon":"🧠","label":"Why this Product Manager loves workflow automation with n8n"},{"url":"https://n8n.io/blog/sending-automated-congratulations-with-google-sheets-twilio-and-n8n/","icon":"🙌","label":"Sending Automated Congratulations with Google Sheets, Twilio, and n8n "},{"url":"https://n8n.io/blog/how-a-membership-development-manager-automates-his-work-and-investments/","icon":"📈","label":"How a Membership Development Manager automates his work and investments"},{"url":"https://n8n.io/blog/aws-workflow-automation/","label":"7 no-code workflow automations for Amazon Web Services"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.googlesheets/"}],"credentialDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/credentials/google/oauth-single-service/"}]},"categories":["Data & Storage","Productivity"],"nodeVersion":"1.0","codexVersion":"1.0"}},"group":"[\"input\",\"output\"]","defaults":{"name":"Google Sheets"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI2MCIgaGVpZ2h0PSI2MCI+PGcgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjxwYXRoIGZpbGw9IiMyOEI0NDYiIGQ9Ik0zNS42OSAxIDUyIDE3LjIyNXYzOS4wODdhMy42NyAzLjY3IDAgMCAxLTEuMDg0IDIuNjFBMy43IDMuNyAwIDAgMSA0OC4yOTMgNjBIMTIuNzA3YTMuNyAzLjcgMCAwIDEtMi42MjMtMS4wNzhBMy42NyAzLjY3IDAgMCAxIDkgNTYuMzEyVjQuNjg4YTMuNjcgMy42NyAwIDAgMSAxLjA4NC0yLjYxQTMuNyAzLjcgMCAwIDEgMTIuNzA3IDF6Ii8+PHBhdGggZmlsbD0iIzZBQ0U3QyIgZD0iTTM1LjY5IDEgNTIgMTcuMjI1SDM5LjM5N2MtMi4wNTQgMC0zLjcwNy0xLjgyOS0zLjcwNy0zLjg3MnoiLz48cGF0aCBmaWxsPSIjMjE5QjM4IiBkPSJNMzkuMjExIDE3LjIyNSA1MiAyMi40OHYtNS4yNTV6Ii8+PHBhdGggZmlsbD0iI0ZGRiIgZD0iTTIwLjEyIDMxLjk3NWMwLS44MTcuNjYyLTEuNDc1IDEuNDgzLTEuNDc1aDE3Ljc5NGMuODIxIDAgMS40ODIuNjU4IDEuNDgyIDEuNDc1djE1LjQ4N2MwIC44MTgtLjY2MSAxLjQ3NS0xLjQ4MiAxLjQ3NUgyMS42MDNhMS40NzYgMS40NzYgMCAwIDEtMS40ODItMS40NzRWMzEuOTc0em0yLjIyNSAxLjQ3NWg2LjY3MnYyLjIxMmgtNi42NzJ6bTAgNS4xNjJoNi42NzJ2Mi4yMTNoLTYuNjcyem0wIDUuMTYzaDYuNjcydjIuMjEyaC02LjY3MnptOS42MzgtMTAuMzI1aDYuNjcydjIuMjEyaC02LjY3MnptMCA1LjE2Mmg2LjY3MnYyLjIxM2gtNi42NzJ6bTAgNS4xNjNoNi42NzJ2Mi4yMTJoLTYuNjcyeiIvPjxwYXRoIGZpbGw9IiMyOEI0NDYiIGQ9Ik0zNC42OSAwIDUxIDE2LjIyNXYzOS4wODdhMy42NyAzLjY3IDAgMCAxLTEuMDg0IDIuNjFBMy43IDMuNyAwIDAgMSA0Ny4yOTMgNTlIMTEuNzA3YTMuNyAzLjcgMCAwIDEtMi42MjMtMS4wNzhBMy42NyAzLjY3IDAgMCAxIDggNTUuMzEyVjMuNjg4YTMuNjcgMy42NyAwIDAgMSAxLjA4NC0yLjYxQTMuNyAzLjcgMCAwIDEgMTEuNzA3IDB6Ii8+PHBhdGggZmlsbD0iIzZBQ0U3QyIgZD0iTTM0LjY5IDAgNTEgMTYuMjI1SDM4LjM5N2MtMi4wNTQgMC0zLjcwNy0xLjgyOS0zLjcwNy0zLjg3MnoiLz48cGF0aCBmaWxsPSIjMjE5QjM4IiBkPSJNMzguMjExIDE2LjIyNSA1MSAyMS40OHYtNS4yNTV6Ii8+PHBhdGggZmlsbD0iI0ZGRiIgZD0iTTE5LjEyIDMwLjk3NWMwLS44MTcuNjYyLTEuNDc1IDEuNDgzLTEuNDc1aDE3Ljc5NGMuODIxIDAgMS40ODIuNjU4IDEuNDgyIDEuNDc1djE1LjQ4N2MwIC44MTgtLjY2MSAxLjQ3NS0xLjQ4MiAxLjQ3NUgyMC42MDNhMS40NzYgMS40NzYgMCAwIDEtMS40ODItMS40NzRWMzAuOTc0em0yLjIyNSAxLjQ3NWg2LjY3MnYyLjIxMmgtNi42NzJ6bTAgNS4xNjJoNi42NzJ2Mi4yMTNoLTYuNjcyem0wIDUuMTYzaDYuNjcydjIuMjEyaC02LjY3MnptOS42MzgtMTAuMzI1aDYuNjcydjIuMjEyaC02LjY3MnptMCA1LjE2Mmg2LjY3MnYyLjIxM2gtNi42NzJ6bTAgNS4xNjNoNi42NzJ2Mi4yMTJoLTYuNjcyeiIvPjwvZz48L3N2Zz4="},"displayName":"Google Sheets","typeVersion":5,"nodeCategories":[{"id":3,"name":"Data & Storage"},{"id":4,"name":"Productivity"}]},{"id":20,"icon":"fa:map-signs","name":"n8n-nodes-base.if","codex":{"data":{"alias":["Router","Filter","Condition","Logic","Boolean","Branch"],"details":"The IF node can be used to implement binary conditional logic in your workflow. You can set up one-to-many conditions to evaluate each item of data being inputted into the node. That data will either evaluate to TRUE or FALSE and route out of the node accordingly.\n\nThis node has multiple types of conditions: Bool, String, Number, and Date & Time.","resources":{"generic":[{"url":"https://n8n.io/blog/learn-to-automate-your-factorys-incident-reporting-a-step-by-step-guide/","icon":"🏭","label":"Learn to Automate Your Factory's Incident Reporting: A Step by Step Guide"},{"url":"https://n8n.io/blog/2021-the-year-to-automate-the-new-you-with-n8n/","icon":"☀️","label":"2021: The Year to Automate the New You with n8n"},{"url":"https://n8n.io/blog/why-business-process-automation-with-n8n-can-change-your-daily-life/","icon":"🧬","label":"Why business process automation with n8n can change your daily life"},{"url":"https://n8n.io/blog/create-a-toxic-language-detector-for-telegram/","icon":"🤬","label":"Create a toxic language detector for Telegram in 4 step"},{"url":"https://n8n.io/blog/no-code-ecommerce-workflow-automations/","icon":"store","label":"6 e-commerce workflows to power up your Shopify s"},{"url":"https://n8n.io/blog/how-to-build-a-low-code-self-hosted-url-shortener/","icon":"🔗","label":"How to build a low-code, self-hosted URL shortener in 3 steps"},{"url":"https://n8n.io/blog/automate-your-data-processing-pipeline-in-9-steps-with-n8n/","icon":"⚙️","label":"Automate your data processing pipeline in 9 steps"},{"url":"https://n8n.io/blog/how-to-get-started-with-crm-automation-and-no-code-workflow-ideas/","icon":"👥","label":"How to get started with CRM automation (with 3 no-code workflow ideas"},{"url":"https://n8n.io/blog/5-tasks-you-can-automate-with-notion-api/","icon":"⚡️","label":"5 tasks you can automate with the new Notion API "},{"url":"https://n8n.io/blog/automate-google-apps-for-productivity/","icon":"💡","label":"15 Google apps you can combine and automate to increase productivity"},{"url":"https://n8n.io/blog/automation-for-maintainers-of-open-source-projects/","icon":"🏷️","label":"How to automatically manage contributions to open-source projects"},{"url":"https://n8n.io/blog/how-uproc-scraped-a-multi-page-website-with-a-low-code-workflow/","icon":" 🕸️","label":"How uProc scraped a multi-page website with a low-code workflow"},{"url":"https://n8n.io/blog/5-workflow-automations-for-mattermost-that-we-love-at-n8n/","icon":"🤖","label":"5 workflow automations for Mattermost that we love at n8n"},{"url":"https://n8n.io/blog/why-this-product-manager-loves-workflow-automation-with-n8n/","icon":"🧠","label":"Why this Product Manager loves workflow automation with n8n"},{"url":"https://n8n.io/blog/sending-automated-congratulations-with-google-sheets-twilio-and-n8n/","icon":"🙌","label":"Sending Automated Congratulations with Google Sheets, Twilio, and n8n "},{"url":"https://n8n.io/blog/how-to-set-up-a-ci-cd-pipeline-with-no-code/","icon":"🎡","label":"How to set up a no-code CI/CD pipeline with GitHub and TravisCI"},{"url":"https://n8n.io/blog/benefits-of-automation-and-n8n-an-interview-with-hubspots-hugh-durkin/","icon":"🎖","label":"Benefits of automation and n8n: An interview with HubSpot's Hugh Durkin"},{"url":"https://n8n.io/blog/aws-workflow-automation/","label":"7 no-code workflow automations for Amazon Web Services"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.if/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Flow"]}}},"group":"[\"transform\"]","defaults":{"name":"If","color":"#408000"},"iconData":{"icon":"map-signs","type":"icon"},"displayName":"If","typeVersion":2,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":545,"icon":"file:supabase.svg","name":"n8n-nodes-base.supabase","codex":{"data":{"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.supabase/"}],"credentialDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/credentials/supabase/"}]},"categories":["Data & Storage"],"nodeVersion":"1.0","codexVersion":"1.0"}},"group":"[\"input\"]","defaults":{"name":"Supabase"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMDkiIGhlaWdodD0iMTEzIiBmaWxsPSJub25lIj48cGF0aCBmaWxsPSJ1cmwoI2EpIiBkPSJNNjMuNzA4IDExMC4yODRjLTIuODYgMy42MDEtOC42NTggMS42MjgtOC43MjctMi45N2wtMS4wMDctNjcuMjUxaDQ1LjIyYzguMTkgMCAxMi43NTggOS40NiA3LjY2NSAxNS44NzR6Ii8+PHBhdGggZmlsbD0idXJsKCNiKSIgZmlsbC1vcGFjaXR5PSIuMiIgZD0iTTYzLjcwOCAxMTAuMjg0Yy0yLjg2IDMuNjAxLTguNjU4IDEuNjI4LTguNzI3LTIuOTdsLTEuMDA3LTY3LjI1MWg0NS4yMmM4LjE5IDAgMTIuNzU4IDkuNDYgNy42NjUgMTUuODc0eiIvPjxwYXRoIGZpbGw9IiMzRUNGOEUiIGQ9Ik00NS4zMTcgMi4wNzFjMi44Ni0zLjYwMSA4LjY1Ny0xLjYyOCA4LjcyNiAyLjk3bC40NDIgNjcuMjUxSDkuODNjLTguMTkgMC0xMi43NTktOS40Ni03LjY2NS0xNS44NzV6Ii8+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJhIiB4MT0iNTMuOTc0IiB4Mj0iOTQuMTYzIiB5MT0iNTQuOTc0IiB5Mj0iNzEuODI5IiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+PHN0b3Agc3RvcC1jb2xvcj0iIzI0OTM2MSIvPjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzNFQ0Y4RSIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPSJiIiB4MT0iMzYuMTU2IiB4Mj0iNTQuNDg0IiB5MT0iMzAuNTc4IiB5Mj0iNjUuMDgxIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+PHN0b3AvPjxzdG9wIG9mZnNldD0iMSIgc3RvcC1vcGFjaXR5PSIwIi8+PC9saW5lYXJHcmFkaWVudD48L2RlZnM+PC9zdmc+"},"displayName":"Supabase","typeVersion":1,"nodeCategories":[{"id":3,"name":"Data & Storage"}]},{"id":565,"icon":"fa:sticky-note","name":"n8n-nodes-base.stickyNote","codex":{"data":{"alias":["Comments","Notes","Sticky"],"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Helpers"]}}},"group":"[\"input\"]","defaults":{"name":"Sticky Note","color":"#FFD233"},"iconData":{"icon":"sticky-note","type":"icon"},"displayName":"Sticky Note","typeVersion":1,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":839,"icon":"fa:clock","name":"n8n-nodes-base.scheduleTrigger","codex":{"data":{"alias":["Time","Scheduler","Polling","Cron","Interval"],"resources":{"generic":[],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.scheduletrigger/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0"}},"group":"[\"trigger\",\"schedule\"]","defaults":{"name":"Schedule Trigger","color":"#31C49F"},"iconData":{"icon":"clock","type":"icon"},"displayName":"Schedule Trigger","typeVersion":1,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":844,"icon":"fa:filter","name":"n8n-nodes-base.filter","codex":{"data":{"alias":["Router","Filter","Condition","Logic","Boolean","Branch"],"details":"The Filter node can be used to filter items based on a condition. If the condition is met, the item will be passed on to the next node. If the condition is not met, the item will be omitted. Conditions can be combined together by AND(meet all conditions), or OR(meet at least one condition).","resources":{"generic":[],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.filter/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Flow","Data Transformation"]}}},"group":"[\"transform\"]","defaults":{"name":"Filter","color":"#229eff"},"iconData":{"icon":"filter","type":"icon"},"displayName":"Filter","typeVersion":2,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":1119,"icon":"fa:robot","name":"@n8n/n8n-nodes-langchain.agent","codex":{"data":{"alias":["LangChain","Chat","Conversational","Plan and Execute","ReAct","Tools"],"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.agent/"}]},"categories":["AI","Langchain"],"subcategories":{"AI":["Agents","Root Nodes"]}}},"group":"[\"transform\"]","defaults":{"name":"AI Agent","color":"#404040"},"iconData":{"icon":"robot","type":"icon"},"displayName":"AI Agent","typeVersion":3,"nodeCategories":[{"id":25,"name":"AI"},{"id":26,"name":"Langchain"}]},{"id":1231,"icon":"file:supabase.svg","name":"@n8n/n8n-nodes-langchain.vectorStoreSupabase","codex":{"data":{"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.vectorstoresupabase/"}]},"categories":["AI","Langchain"],"subcategories":{"AI":["Vector Stores","Tools","Root Nodes"],"Tools":["Other Tools"],"Vector Stores":["Other Vector Stores"]}}},"group":"[\"transform\"]","defaults":{"name":"Supabase Vector Store"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMDkiIGhlaWdodD0iMTEzIiBmaWxsPSJub25lIj48cGF0aCBmaWxsPSJ1cmwoI2EpIiBkPSJNNjMuNzA4IDExMC4yODRjLTIuODYgMy42MDEtOC42NTggMS42MjgtOC43MjctMi45N2wtMS4wMDctNjcuMjUxaDQ1LjIyYzguMTkgMCAxMi43NTggOS40NiA3LjY2NSAxNS44NzR6Ii8+PHBhdGggZmlsbD0idXJsKCNiKSIgZmlsbC1vcGFjaXR5PSIuMiIgZD0iTTYzLjcwOCAxMTAuMjg0Yy0yLjg2IDMuNjAxLTguNjU4IDEuNjI4LTguNzI3LTIuOTdsLTEuMDA3LTY3LjI1MWg0NS4yMmM4LjE5IDAgMTIuNzU4IDkuNDYgNy42NjUgMTUuODc0eiIvPjxwYXRoIGZpbGw9IiMzRUNGOEUiIGQ9Ik00NS4zMTcgMi4wNzFjMi44Ni0zLjYwMSA4LjY1Ny0xLjYyOCA4LjcyNiAyLjk3bC40NDIgNjcuMjUxSDkuODNjLTguMTkgMC0xMi43NTktOS40Ni03LjY2NS0xNS44NzV6Ii8+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJhIiB4MT0iNTMuOTc0IiB4Mj0iOTQuMTYzIiB5MT0iNTQuOTc0IiB5Mj0iNzEuODI5IiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+PHN0b3Agc3RvcC1jb2xvcj0iIzI0OTM2MSIvPjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzNFQ0Y4RSIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPSJiIiB4MT0iMzYuMTU2IiB4Mj0iNTQuNDg0IiB5MT0iMzAuNTc4IiB5Mj0iNjUuMDgxIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+PHN0b3AvPjxzdG9wIG9mZnNldD0iMSIgc3RvcC1vcGFjaXR5PSIwIi8+PC9saW5lYXJHcmFkaWVudD48L2RlZnM+PC9zdmc+"},"displayName":"Supabase Vector Store","typeVersion":1,"nodeCategories":[{"id":25,"name":"AI"},{"id":26,"name":"Langchain"}]},{"id":1247,"icon":"fa:comments","name":"@n8n/n8n-nodes-langchain.chatTrigger","codex":{"data":{"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-langchain.chattrigger/"}]},"categories":["Core Nodes","Langchain"]}},"group":"[\"trigger\"]","defaults":{"name":"When chat message received"},"iconData":{"icon":"comments","type":"icon"},"displayName":"Chat Trigger","typeVersion":1,"nodeCategories":[{"id":9,"name":"Core Nodes"},{"id":26,"name":"Langchain"}]},{"id":1261,"icon":"file:google.svg","name":"@n8n/n8n-nodes-langchain.embeddingsGoogleGemini","codex":{"data":{"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.embeddingsgooglegemini/"}]},"categories":["AI","Langchain"],"subcategories":{"AI":["Embeddings"]}}},"group":"[\"transform\"]","defaults":{"name":"Embeddings Google Gemini"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgNDggNDgiPjxkZWZzPjxwYXRoIGlkPSJhIiBkPSJNNDQuNSAyMEgyNHY4LjVoMTEuOEMzNC43IDMzLjkgMzAuMSAzNyAyNCAzN2MtNy4yIDAtMTMtNS44LTEzLTEzczUuOC0xMyAxMy0xM2MzLjEgMCA1LjkgMS4xIDguMSAyLjlsNi40LTYuNEMzNC42IDQuMSAyOS42IDIgMjQgMiAxMS44IDIgMiAxMS44IDIgMjRzOS44IDIyIDIyIDIyYzExIDAgMjEtOCAyMS0yMiAwLTEuMy0uMi0yLjctLjUtNCIvPjwvZGVmcz48Y2xpcFBhdGggaWQ9ImIiPjx1c2UgeGxpbms6aHJlZj0iI2EiIG92ZXJmbG93PSJ2aXNpYmxlIi8+PC9jbGlwUGF0aD48cGF0aCBmaWxsPSIjRkJCQzA1IiBkPSJNMCAzN1YxMWwxNyAxM3oiIGNsaXAtcGF0aD0idXJsKCNiKSIvPjxwYXRoIGZpbGw9IiNFQTQzMzUiIGQ9Im0wIDExIDE3IDEzIDctNi4xTDQ4IDE0VjBIMHoiIGNsaXAtcGF0aD0idXJsKCNiKSIvPjxwYXRoIGZpbGw9IiMzNEE4NTMiIGQ9Im0wIDM3IDMwLTIzIDcuOSAxTDQ4IDB2NDhIMHoiIGNsaXAtcGF0aD0idXJsKCNiKSIvPjxwYXRoIGZpbGw9IiM0Mjg1RjQiIGQ9Ik00OCA0OCAxNyAyNGwtNC0zIDM1LTEweiIgY2xpcC1wYXRoPSJ1cmwoI2IpIi8+PC9zdmc+"},"displayName":"Embeddings Google Gemini","typeVersion":1,"nodeCategories":[{"id":25,"name":"AI"},{"id":26,"name":"Langchain"}]},{"id":1262,"icon":"file:google.svg","name":"@n8n/n8n-nodes-langchain.lmChatGoogleGemini","codex":{"data":{"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.lmchatgooglegemini/"}]},"categories":["AI","Langchain"],"subcategories":{"AI":["Language Models","Root Nodes"],"Language Models":["Chat Models (Recommended)"]}}},"group":"[\"transform\"]","defaults":{"name":"Google Gemini Chat Model"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgNDggNDgiPjxkZWZzPjxwYXRoIGlkPSJhIiBkPSJNNDQuNSAyMEgyNHY4LjVoMTEuOEMzNC43IDMzLjkgMzAuMSAzNyAyNCAzN2MtNy4yIDAtMTMtNS44LTEzLTEzczUuOC0xMyAxMy0xM2MzLjEgMCA1LjkgMS4xIDguMSAyLjlsNi40LTYuNEMzNC42IDQuMSAyOS42IDIgMjQgMiAxMS44IDIgMiAxMS44IDIgMjRzOS44IDIyIDIyIDIyYzExIDAgMjEtOCAyMS0yMiAwLTEuMy0uMi0yLjctLjUtNCIvPjwvZGVmcz48Y2xpcFBhdGggaWQ9ImIiPjx1c2UgeGxpbms6aHJlZj0iI2EiIG92ZXJmbG93PSJ2aXNpYmxlIi8+PC9jbGlwUGF0aD48cGF0aCBmaWxsPSIjRkJCQzA1IiBkPSJNMCAzN1YxMWwxNyAxM3oiIGNsaXAtcGF0aD0idXJsKCNiKSIvPjxwYXRoIGZpbGw9IiNFQTQzMzUiIGQ9Im0wIDExIDE3IDEzIDctNi4xTDQ4IDE0VjBIMHoiIGNsaXAtcGF0aD0idXJsKCNiKSIvPjxwYXRoIGZpbGw9IiMzNEE4NTMiIGQ9Im0wIDM3IDMwLTIzIDcuOSAxTDQ4IDB2NDhIMHoiIGNsaXAtcGF0aD0idXJsKCNiKSIvPjxwYXRoIGZpbGw9IiM0Mjg1RjQiIGQ9Ik00OCA0OCAxNyAyNGwtNC0zIDM1LTEweiIgY2xpcC1wYXRoPSJ1cmwoI2IpIi8+PC9zdmc+"},"displayName":"Google Gemini Chat Model","typeVersion":1,"nodeCategories":[{"id":25,"name":"AI"},{"id":26,"name":"Langchain"}]},{"id":1267,"icon":"file:postgres.svg","name":"@n8n/n8n-nodes-langchain.memoryPostgresChat","codex":{"data":{"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.memorypostgreschat/"}]},"categories":["AI","Langchain"],"subcategories":{"AI":["Memory"],"Memory":["Other memories"]}}},"group":"[\"transform\"]","defaults":{"name":"Postgres Chat Memory"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBmaWxsPSIjZmZmIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiB2aWV3Qm94PSIwIDAgNzkgODEiPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9Ii41IiB5PSIuNSIvPjxzeW1ib2wgaWQ9ImEiIG92ZXJmbG93PSJ2aXNpYmxlIj48ZyBmaWxsLXJ1bGU9Im5vbnplcm8iIHN0cm9rZT0ibm9uZSI+PHBhdGggZmlsbD0iIzAwMCIgZD0iTTc3LjM5MSA0Ny45MjJjLS40NjYtMS40MTItMS42ODgtMi4zOTYtMy4yNjgtMi42MzItLjc0NS0uMTExLTEuNTk4LS4wNjQtMi42MDguMTQ0LTEuNzYuMzYzLTMuMDY1LjUwMS00LjAxOC41MjggMy41OTYtNi4wNzIgNi41MjEtMTIuOTk3IDguMjA0LTE5LjUxNSAyLjcyMi0xMC41NCAxLjI2OC0xNS4zNDEtLjQzMi0xNy41MTNDNzAuNzcgMy4xODUgNjQuMjA2LjA5NyA1Ni4yODcuMDAyYy00LjIyNC0uMDUyLTcuOTMzLjc4Mi05Ljg2NyAxLjM4MmEzNyAzNyAwIDAgMC01Ljc3LS41MjhjLTMuODA5LS4wNjEtNy4xNzQuNzctMTAuMDUgMi40NzZhNDYgNDYgMCAwIDAtNy4wOTgtMS43ODJDMTYuNTYxLjQxMSAxMC45NjggMS4yOTkgNi44NzYgNC4xOSAxLjkyMiA3LjY4OS0uMzc1IDEzLjc3LjA1IDIyLjI2MmMuMTM1IDIuNjk2IDEuNjQzIDEwLjkgNC4wMTggMTguNjggMS4zNjUgNC40NzIgMi44MiA4LjE4NSA0LjMyNiAxMS4wMzggMi4xMzUgNC4wNDYgNC40MTkgNi40MjggNi45ODQgNy4yODQgMS40MzguNDc5IDQuMDQ5LjgxNCA2Ljc5Ny0xLjQ3M2E2IDYgMCAwIDAgMS40MjkgMS4yM2MuNzgzLjQ5NCAxLjc0Ljg5NyAyLjY5NiAxLjEzNiAzLjQ0Ni44NjIgNi42NzQuNjQ2IDkuNDI3LS41NjFsLjA0MSAxLjM2Mi4wNiAxLjg5OWMuMTYzIDQuMDY0LjQ0IDcuMjIzIDEuMjU5IDkuNDM0LjA0NS4xMjIuMTA1LjMwNy4xNjkuNTAzLjQwOSAxLjI1MSAxLjA5MiAzLjM0NiAyLjgzIDQuOTg3IDEuOCAxLjY5OSAzLjk3OCAyLjIyIDUuOTcyIDIuMjIgMSAwIDEuOTU1LS4xMzEgMi43OTItLjMxMSAyLjk4NC0uNjM5IDYuMzczLTEuNjE0IDguODI0LTUuMTA0IDIuMzE4LTMuMyAzLjQ0NC04LjI3IDMuNjQ4LTE2LjEwMWwuMDc0LS42MzQuMDQ4LS40MTQuNTQ2LjA0OC4xNDEuMDFjMy4wMzkuMTM4IDYuNzU1LS41MDYgOS4wMzctMS41NjYgMS44MDMtLjgzNyA3LjU4Mi0zLjg4OCA2LjIyMS04LjAwNyIvPjxwYXRoIGZpbGw9IiMzMzY3OTEiIGQ9Ik03Mi4xOTUgNDguNzIzYy05LjAzNiAxLjg2NC05LjY1Ny0xLjE5NS05LjY1Ny0xLjE5NSA5LjU0MS0xNC4xNTcgMTMuNTI5LTMyLjEyNyAxMC4wODctMzYuNTI1QzYzLjIzNS0uOTk0IDQ2Ljk4MSA0LjY4IDQ2LjcxIDQuODI3bC0uMDg3LjAxNmMtMS43ODUtLjM3MS0zLjc4My0uNTkxLTYuMDI5LS42MjgtNC4wODktLjA2Ny03LjE5IDEuMDcyLTkuNTQ0IDIuODU3IDAgMC0yOC45OTUtMTEuOTQ1LTI3LjY0NyAxNS4wMjMuMjg3IDUuNzM3IDguMjIzIDQzLjQxIDE3LjY4OSAzMi4wMzEgMy40Ni00LjE2MSA2LjgwMy03LjY3OSA2LjgwMy03LjY3OSAxLjY2IDEuMTAzIDMuNjQ4IDEuNjY2IDUuNzMyIDEuNDYzbC4xNjItLjEzN2E2LjMgNi4zIDAgMCAwIC4wNjUgMS42MmMtMi40MzkgMi43MjUtMS43MjIgMy4yMDMtNi41OTcgNC4yMDYtNC45MzMgMS4wMTctMi4wMzUgMi44MjYtLjE0MyAzLjI5OSAyLjI5NC41NzQgNy42IDEuMzg2IDExLjE4NS0zLjYzM2wtLjE0My41NzNjLjk1Ni43NjUgMS42MjYgNC45NzggMS41MTQgOC43OTdzLS4xODggNi40NDEuNTY1IDguNDg5IDEuNTAzIDYuNjU2IDcuOTEyIDUuMjgyYzUuMzU1LTEuMTQ4IDguMTMtNC4xMjEgOC41MTYtOS4wODEuMjc0LTMuNTI2Ljg5NC0zLjAwNS45MzMtNi4xNThsLjQ5Ny0xLjQ5M2MuNTczLTQuNzguMDkxLTYuMzIyIDMuMzktNS42MDVsLjgwMi4wN2MyLjQyOC4xMSA1LjYwNi0uMzkxIDcuNDcxLTEuMjU3IDQuMDE2LTEuODY0IDYuMzk4LTQuOTc2IDIuNDM4LTQuMTU4Ii8+PHBhdGggZD0iTTMyLjc0NyAyNC42NmMtLjgxNC0uMTEzLTEuNTUyLS4wMDgtMS45MjUuMjc0YS43LjcgMCAwIDAtLjI5Mi40N2MtLjA0Ny4zMzYuMTg4LjcwNy4zMzMuODk4LjQwOS41NDIgMS4wMDYuOTE1IDEuNTk4Ljk5N2EyIDIgMCAwIDAgLjI1Ni4wMThjLjk4NiAwIDEuODgzLS43NjggMS45NjItMS4zMzUuMDk5LS43MS0uOTMyLTEuMTgzLTEuOTMxLTEuMzIybTI2Ljk3NS4wMjJjLS4wNzgtLjU1Ni0xLjA2OC0uNzE1LTIuMDA3LS41ODRzLTEuODQ4LjU1NC0xLjc3MiAxLjExMmMuMDYxLjQzNC44NDQgMS4xNzQgMS43NzEgMS4xNzRxLjExNyAwIC4yMzctLjAxNmMuNjE5LS4wODYgMS4wNzMtLjQ3OSAxLjI4OC0uNzA1LjMyOS0uMzQ1LjUxOC0uNzMuNDg0LS45OG0xNS40NzcgMjMuODI4Yy0uMzQ1LTEuMDQyLTEuNDUzLTEuMzc3LTMuMjk2LS45OTctNS40NzEgMS4xMjktNy40My4zNDctOC4wNzMtLjEyNyA0LjI1Mi02LjQ3OCA3Ljc1LTE0LjMwOCA5LjYzNy0yMS42MTQuODk0LTMuNDYxIDEuMzg4LTYuNjc1IDEuNDI4LTkuMjk0LjA0NS0yLjg3Ni0uNDQ1LTQuOTg4LTEuNDU1LTYuMjc5LTQuMDcyLTUuMjAzLTEwLjA0OC03Ljk5NC0xNy4yODMtOC4wNy00Ljk3My0uMDU2LTkuMTc1IDEuMjE3LTkuOTkgMS41NzVhMjUgMjUgMCAwIDAtNS42MjItLjcyMmMtMy43MzQtLjA2LTYuOTYxLjgzNC05LjYzMyAyLjY1NWE0MyA0MyAwIDAgMC03LjgyOC0yLjA1MmMtNi4zNDItMS4wMjEtMTEuMzgxLS4yNDgtMTQuOTc4IDIuMy00LjI5MSAzLjA0LTYuMjcyIDguNDc1LTUuODg4IDE2LjE1Mi4xMjkgMi41ODMgMS42MDEgMTAuNTI5IDMuOTIzIDE4LjEzOSAzLjA1NyAxMC4wMTYgNi4zOCAxNS42ODYgOS44NzcgMTYuODUyYTQuNCA0LjQgMCAwIDAgMS40MDIuMjMyYzEuMjc2IDAgMi44MzktLjU3NSA0LjQ2Ni0yLjUzMWExNjEgMTYxIDAgMCAxIDYuMTU2LTYuOTY2IDkuOSA5LjkgMCAwIDAgNC40MjkgMS4xOTFsLjAxLjEyMWMtLjMxLjM2OC0uNTY0LjY5LS43ODEuOTY1LTEuMDcgMS4zNTgtMS4yOTMgMS42NDEtNC43MzggMi4zNTEtLjk4LjIwMi0zLjU4Mi43MzgtMy42MiAyLjU2My0uMDQxIDEuOTkzIDMuMDc2IDIuODMgMy40MzEgMi45MTkgMS4yMzguMzEgMi40My40NjMgMy41NjguNDYzIDIuNzY2IDAgNS4yLS45MDkgNy4xNDUtMi42NjgtLjA2IDcuMTA2LjIzNiAxNC4xMDcgMS4wODkgMTYuMjQxLjY5OSAxLjc0NiAyLjQwNiA2LjAxNCA3Ljc5OCA2LjAxNC43OTEgMCAxLjY2Mi0uMDkyIDIuNjItLjI5NyA1LjYyNy0xLjIwNyA4LjA3MS0zLjY5NCA5LjAxNi05LjE3Ny41MDYtMi45MyAxLjM3NC05LjkyOCAxLjc4Mi0xMy42ODIuODYyLjI2OSAxLjk3MS4zOTIgMy4xNy4zOTIgMi41MDEgMCA1LjM4Ny0uNTMxIDcuMTk3LTEuMzcyIDIuMDMzLS45NDQgNS43MDItMy4yNjEgNS4wMzctNS4yNzR6TTYxLjggMjMuMTQ3Yy0uMDE5IDEuMTA4LS4xNzEgMi4xMTQtLjMzMyAzLjE2NC0uMTc0IDEuMTI5LS4zNTQgMi4yOTctLjM5OSAzLjcxNS0uMDQ1IDEuMzc5LjEyOCAyLjgxNC4yOTQgNC4yLjMzNyAyLjgwMS42ODIgNS42ODUtLjY1NSA4LjUzMWExMSAxMSAwIDAgMS0uNTkyLTEuMjE4Yy0uMTY2LS40MDMtLjUyNy0xLjA1LTEuMDI3LTEuOTQ2LTEuOTQ0LTMuNDg3LTYuNDk3LTExLjY1Mi00LjE2Ny0xNC45ODQuNjk0LS45OTIgMi40NTYtMi4wMTEgNi44NzktMS40NjN6TTU2LjQzOSA0LjM3NGM2LjQ4Mi4xNDMgMTEuNjA5IDIuNTY4IDE1LjI0IDcuMjA3IDIuNzg0IDMuNTU4LS4yODIgMTkuNzQ5LTkuMTU4IDMzLjcxNmwtLjI2OS0uMzM5LS4xMTItLjE0YzIuMjk0LTMuNzg4IDEuODQ1LTcuNTM2IDEuNDQ2LTEwLjg1OS0uMTY0LTEuMzY0LS4zMTktMi42NTItLjI4LTMuODYxLjA0MS0xLjI4My4yMS0yLjM4Mi4zNzQtMy40NDYuMjAyLTEuMzExLjQwNy0yLjY2Ny4zNS00LjI2NWExLjggMS44IDAgMCAwIC4wMzctLjYwMWMtLjE0NC0xLjUzMy0xLjg5NC02LjEyLTUuNDYyLTEwLjI3My0xLjk1MS0yLjI3MS00Ljc5Ny00LjgxMy04LjY4Mi02LjUyN2EyOS4zIDI5LjMgMCAwIDEgNi41MTUtLjYxMnpNMjAuMTY3IDUzLjI5OGMtMS43OTMgMi4xNTUtMy4wMzEgMS43NDItMy40MzggMS42MDctMi42NTMtLjg4NS01LjczLTYuNDkxLTguNDQ0LTE1LjM4Mi0yLjM0OC03LjY5My0zLjcyLTE1LjQyOC0zLjgyOS0xNy41OTctLjM0My02Ljg2IDEuMzItMTEuNjQxIDQuOTQzLTE0LjIxIDUuODk2LTQuMTgxIDE1LjU4OS0xLjY3OSAxOS40ODQtLjQwOWwtLjE3LjE2M2MtNi4zOTEgNi40NTUtNi4yNCAxNy40ODMtNi4yMjQgMTguMTU3YTIyIDIyIDAgMCAwIC4wNTEgMS4xMzVjLjExIDEuODU1LjMxNSA1LjMwNy0uMjMyIDkuMjE3LS41MDggMy42MzMuNjEyIDcuMTg5IDMuMDcyIDkuNzU2cS4zODMuMzk4Ljc5NS43NWExNjQgMTY0IDAgMCAwLTYuMDA4IDYuODE0em02LjgzLTkuMTEzYy0xLjk4My0yLjA2OS0yLjg4NC00Ljk0Ny0yLjQ3MS03Ljg5Ni41NzctNC4xMy4zNjQtNy43MjcuMjUtOS42NTlsLS4wMzktLjY5NGMuOTM0LS44MjggNS4yNjEtMy4xNDYgOC4zNDYtMi40MzkgMS40MDguMzIzIDIuMjY2IDEuMjgxIDIuNjIzIDIuOTMxIDEuODQ2IDguNTM5LjI0NCAxMi4wOTgtMS4wNDMgMTQuOTU3LS4yNjUuNTg5LS41MTYgMS4xNDYtLjczIDEuNzIybC0uMTY2LjQ0NWMtLjQyIDEuMTI2LS44MTEgMi4xNzMtMS4wNTMgMy4xNjctMi4xMDgtLjAwNi00LjE1OS0uOTA3LTUuNzE4LTIuNTM0em0uMzI0IDExLjUxNmE1IDUgMCAwIDEtMS40OTQtLjY0MmMuMjcxLS4xMjguNzU0LS4zMDEgMS41OTEtLjQ3NCA0LjA1Mi0uODM0IDQuNjc4LTEuNDIzIDYuMDQ1LTMuMTU4LjMxMy0uMzk4LjY2OS0uODQ5IDEuMTYtMS4zOTguNzMzLS44MjEgMS4wNjgtLjY4MiAxLjY3Ni0uNDMuNDkzLjIwNC45NzIuODIxIDEuMTY3IDEuNTAxLjA5Mi4zMjEuMTk1LjkzLS4xNDMgMS40MDQtMi44NTUgMy45OTctNy4wMTUgMy45NDYtMTAuMDAzIDMuMTk4em0yMS4yMDcgMTkuNzM1Yy00Ljk1NyAxLjA2Mi02LjcxMy0xLjQ2Ny03Ljg2OS00LjM1OS0uNzQ3LTEuODY3LTEuMTEzLTEwLjI4NS0uODUzLTE5LjU4MmExLjEgMS4xIDAgMCAwLS4wNDgtLjM1NiA1IDUgMCAwIDAtLjEzOS0uNjU3Yy0uMzg3LTEuMzUzLTEuMzMxLTIuNDg0LTIuNDYyLTIuOTUzLS40NS0uMTg2LTEuMjc1LS41MjgtMi4yNjctLjI3NC4yMTItLjg3MS41NzgtMS44NTUuOTc2LTIuOTIxbC4xNjctLjQ0OGMuMTg4LS41MDUuNDIzLTEuMDI5LjY3My0xLjU4MyAxLjM0Ny0yLjk5MiAzLjE5Mi03LjA5MSAxLjE5LTE2LjM1LS43NS0zLjQ2OC0zLjI1NC01LjE2MS03LjA1LTQuNzY4LTIuMjc2LjIzNS00LjM1OCAxLjE1NC01LjM5NiAxLjY4cS0uMzM0LjE2OS0uNjE4LjMyOWMuMjktMy40OTQgMS4zODUtMTAuMDI0IDUuNDgxLTE0LjE1NiAyLjU3OS0yLjYwMSA2LjAxNC0zLjg4NiAxMC4xOTktMy44MTcgOC4yNDYuMTM1IDEzLjUzNCA0LjM2NyAxNi41MTggNy44OTMgMi41NzEgMy4wMzkgMy45NjQgNi4xIDQuNTIgNy43NTEtNC4xNzktLjQyNS03LjAyMi40LTguNDYzIDIuNDYtMy4xMzUgNC40ODEgMS43MTUgMTMuMTc4IDQuMDQ2IDE3LjM1OC40MjcuNzY2Ljc5NiAxLjQyOC45MTIgMS43MDkuNzU5IDEuODM5IDEuNzQyIDMuMDY3IDIuNDU5IDMuOTY0LjIyLjI3NS40MzMuNTQxLjU5Ni43NzQtMS4yNjYuMzY1LTMuNTM5IDEuMjA4LTMuMzMyIDUuNDIyLS4xNjcgMi4xMTUtMS4zNTYgMTIuMDE2LTEuOTU5IDE1LjUxNC0uNzk3IDQuNjIxLTIuNDk3IDYuMzQzLTcuMjc5IDcuMzY4em0yMC42OTMtMjMuNjhjLTEuMjk0LjYwMS0zLjQ2IDEuMDUyLTUuNTE4IDEuMTQ4LTIuMjczLjEwNy0zLjQzLS4yNTUtMy43MDItLjQ3Ny0uMTI4LTIuNjI2Ljg1LTIuOTAxIDEuODg0LTMuMTkxLjE2My0uMDQ2LjMyMS0uMDkuNDc0LS4xNDRhNCA0IDAgMCAwIC4zMTMuMjNjMS44MjcgMS4yMDYgNS4wODUgMS4zMzYgOS42ODUuMzg2bC4wNS0uMDFjLS42Mi41OC0xLjY4MiAxLjM1OS0zLjE4NyAyLjA1OHoiLz48L2c+PC9zeW1ib2w+PC9zdmc+"},"displayName":"Postgres Chat Memory","typeVersion":1,"nodeCategories":[{"id":25,"name":"AI"},{"id":26,"name":"Langchain"}]},{"id":1305,"icon":"file:cohere.svg","name":"@n8n/n8n-nodes-langchain.rerankerCohere","codex":{"data":{"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.rerankercohere/"}]},"categories":["AI","Langchain"],"subcategories":{"AI":["Rerankers"]}}},"group":"[\"transform\"]","defaults":{"name":"Reranker Cohere"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIHZpZXdCb3g9IjAgMCA0MCA0MCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMi45NiAyMy44NEMxNC4wMjY3IDIzLjg0IDE2LjE2IDIzLjc4NjcgMTkuMTQ2NyAyMi41NkMyMi42MTMzIDIxLjEyIDI5LjQ0IDE4LjU2IDM0LjQgMTUuODkzM0MzNy44NjY3IDE0LjAyNjcgMzkuMzYgMTEuNTczMyAzOS4zNiA4LjI2NjY3QzM5LjM2IDMuNzMzMzMgMzUuNjggMCAzMS4wOTMzIDBIMTEuODkzM0M1LjMzMzMzIDAgMCA1LjMzMzMzIDAgMTEuODkzM0MwIDE4LjQ1MzMgNS4wMTMzMyAyMy44NCAxMi45NiAyMy44NFoiIGZpbGw9IiMzOTU5NEQiLz4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xNi4yMTM0IDMxLjk5OTlDMTYuMjEzNCAyOC43OTk5IDE4LjEzMzQgMjUuODY2NiAyMS4xMiAyNC42Mzk5TDI3LjE0NjcgMjIuMTMzM0MzMy4yOCAxOS42MjY2IDQwIDI0LjEwNjYgNDAgMzAuNzE5OUM0MCAzNS44Mzk5IDM1Ljg0IDM5Ljk5OTkgMzAuNzIgMzkuOTk5OUgyNC4xNkMxOS43ODY3IDM5Ljk5OTkgMTYuMjEzNCAzNi40MjY2IDE2LjIxMzQgMzEuOTk5OVoiIGZpbGw9IiNEMThFRTIiLz4KPHBhdGggZD0iTTYuODggMjUuMzg2N0MzLjA5MzMzIDI1LjM4NjcgMCAyOC40ODAxIDAgMzIuMjY2N1YzMy4xNzM0QzAgMzYuOTA2NyAzLjA5MzMzIDQwLjAwMDEgNi44OCA0MC4wMDAxQzEwLjY2NjcgNDAuMDAwMSAxMy43NiAzNi45MDY3IDEzLjc2IDMzLjEyMDFWMzIuMjEzNEMxMy43MDY3IDI4LjQ4MDEgMTAuNjY2NyAyNS4zODY3IDYuODggMjUuMzg2N1oiIGZpbGw9IiNGRjc3NTkiLz4KPC9zdmc+Cg=="},"displayName":"Reranker Cohere","typeVersion":1,"nodeCategories":[{"id":25,"name":"AI"},{"id":26,"name":"Langchain"}]},{"id":1313,"icon":"fa:comments","name":"@n8n/n8n-nodes-langchain.chat","codex":{"data":{"alias":["human","wait","hitl","respond","approve","confirm","send","message"],"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-langchain.respondtochat/"}]},"categories":["Core Nodes","HITL","Langchain"],"subcategories":{"HITL":["Human in the Loop"]}}},"group":"[\"input\"]","defaults":{"name":"Chat"},"iconData":{"icon":"comments","type":"icon"},"displayName":"Chat","typeVersion":1,"nodeCategories":[{"id":9,"name":"Core Nodes"},{"id":26,"name":"Langchain"},{"id":28,"name":"HITL"}]}],"categories":[{"id":38,"name":"Lead Nurturing"},{"id":47,"name":"AI Chatbot"}],"image":[]}}