This workflow corresponds to n8n.io template #2637 — we link there as the canonical source.
This workflow follows the Chat Trigger → Memorypostgreschat 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": "2637",
"meta": {
"templateCredsSetupCompleted": true
},
"name": "Chat Assistant (OpenAI assistant) with Postgres Memory And API Calling Capabalities",
"tags": [],
"nodes": [
{
"id": "c6e454af-70a1-4c65-8450-8159f7fc738b",
"name": "If",
"type": "n8n-nodes-base.if",
"position": [
160,
560
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 1,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "7ea831a4-0e20-4725-a6f5-3dc2f41f1cf4",
"operator": {
"type": "object",
"operation": "exists",
"singleValue": true
},
"leftValue": "={{ $json.leadData }}",
"rightValue": ""
},
{
"id": "ccb46339-4e43-42e6-aa45-d5a0cbd62214",
"operator": {
"name": "filter.operator.equals",
"type": "string",
"operation": "equals"
},
"leftValue": "",
"rightValue": ""
}
]
}
},
"typeVersion": 2
},
{
"id": "2221736f-ef99-4ac8-8a81-51af6d4e7dcd",
"name": "Edit Fields1",
"type": "n8n-nodes-base.set",
"position": [
440,
960
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "19a16867-b574-4b99-82f1-a86752b7fe9f",
"name": "chatInput",
"type": "string",
"value": "=\"Hello, just so you can get to know me, with no intention of a response, please save this information in your memory. My name is {{ $json.leadData.name }}. I am {{ $json.leadData.age }} years old and currently live in {{ $json.leadData.city }}, {{ $json.leadData.state }}. My profession is {{ $json.leadData.profession }}, and my education level is {{ $json.leadData.educationLevel }}.\nIf I\u2019m part of an adhesion group and have an entity, it would be {{ $json.leadData.entity }}.\n\nI am using a {{ $json.leadData.deviceType }} device to access this through the {{ $json.leadData.channel }} channel. At the moment, I am looking for a health insurance plan of type {{ $json.leadData.quotationType }}.\""
},
{
"id": "0df8d578-8332-4cde-9044-489de16ab390",
"name": "session_id",
"type": "string",
"value": "={{ $json.session_id }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "6aa1b3a4-0e6a-4312-9d9f-f67c4bf8f443",
"name": "Edit Fields2",
"type": "n8n-nodes-base.set",
"position": [
920,
960
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "19a16867-b574-4b99-82f1-a86752b7fe9f",
"name": "chatInput",
"type": "string",
"value": "={{ $('Chat Trigger').item.json.chatInput}}"
},
{
"id": "0df8d578-8332-4cde-9044-489de16ab390",
"name": "session_id",
"type": "string",
"value": "={{ $('Chat Trigger').item.json.session_id }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "6afe6158-7a8b-4a83-a778-6fd28e2a11af",
"name": "OpenAI",
"type": "@n8n/n8n-nodes-langchain.openAi",
"position": [
600,
960
],
"parameters": {
"options": {},
"resource": "assistant",
"assistantId": {
"__rl": true,
"mode": "list",
"value": "asst_numdCoMZPQ6GwfiJg5drg9hr",
"cachedResultName": "Chat IA - Testes - Dezembro - APIS"
}
},
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.4
},
{
"id": "4b961f1d-7da2-4a0b-98e3-7ec35ee14335",
"name": "Chat Trigger",
"type": "@n8n/n8n-nodes-langchain.chatTrigger",
"position": [
-20,
560
],
"parameters": {
"public": true,
"options": {},
"initialMessages": "Ol\u00e1 \ud83d\udc4b\nSou Jovelino, o servi\u00e7o de IA do Joov, me mande sua pergunta e responderei em seguida! :)"
},
"typeVersion": 1
},
{
"id": "dccdb07f-97db-4a5a-9b09-02a5de65246e",
"name": "Postgres Chat Memory",
"type": "@n8n/n8n-nodes-langchain.memoryPostgresChat",
"position": [
640,
720
],
"parameters": {
"tableName": "aimessages",
"sessionKey": "={{ $('Chat Trigger').item.json.session_id }}{{ $json.sessionId }}",
"sessionIdType": "customKey",
"contextWindowLength": 30
},
"credentials": {
"postgres": {
"name": "<your credential>"
}
},
"typeVersion": 1.3
},
{
"id": "553dd27b-ab06-4605-99e0-8f15735cfff3",
"name": "Postgres Chat Memory1",
"type": "@n8n/n8n-nodes-langchain.memoryPostgresChat",
"position": [
760,
1160
],
"parameters": {
"tableName": "aimessages",
"sessionKey": "={{ $('Chat Trigger').item.json.session_id }}{{ $json.sessionId }}",
"sessionIdType": "customKey",
"contextWindowLength": 1
},
"credentials": {
"postgres": {
"name": "<your credential>"
}
},
"typeVersion": 1.3
},
{
"id": "0103fb97-c691-4bd3-b26d-85aaa9774594",
"name": "Products in Daatabase",
"type": "n8n-nodes-base.mySqlTool",
"position": [
1460,
600
],
"parameters": {
"query": "SELECT * \nFROM Products p \nWHERE \n cityQuery = '{{ $fromAI(\"cityQuery\") }}' AND \n state = '{{ $fromAI(\"state\") }}' AND \n modality = 'PME' AND \n removed = 0 AND \n ({{ $fromAI(\"holderCount\") || 1 }} + {{ $fromAI(\"dependentsCount\") || 0 }}) BETWEEN p.minLifeAmount AND p.maxLifeAmount AND\n (CASE\n WHEN {{ $fromAI(\"holderAge\") }} BETWEEN 0 AND 18 THEN priceAtAge0To18\n WHEN {{ $fromAI(\"holderAge\") }} BETWEEN 19 AND 23 THEN priceAtAge19To23\n WHEN {{ $fromAI(\"holderAge\") }} BETWEEN 24 AND 28 THEN priceAtAge24To28\n WHEN {{ $fromAI(\"holderAge\") }} BETWEEN 29 AND 33 THEN priceAtAge29To33\n WHEN {{ $fromAI(\"holderAge\") }} BETWEEN 34 AND 38 THEN priceAtAge34To38\n WHEN {{ $fromAI(\"holderAge\") }} BETWEEN 39 AND 43 THEN priceAtAge39To43\n WHEN {{ $fromAI(\"holderAge\") }} BETWEEN 44 AND 48 THEN priceAtAge44To48\n WHEN {{ $fromAI(\"holderAge\") }} BETWEEN 49 AND 53 THEN priceAtAge49To53\n WHEN {{ $fromAI(\"holderAge\") }} BETWEEN 54 AND 58 THEN priceAtAge54To58\n ELSE priceAtAge59To199\n END) IS NOT NULL\nORDER BY \n (CASE\n WHEN {{ $fromAI(\"holderAge\") }} BETWEEN 0 AND 18 THEN priceAtAge0To18\n WHEN {{ $fromAI(\"holderAge\") }} BETWEEN 19 AND 23 THEN priceAtAge19To23\n WHEN {{ $fromAI(\"holderAge\") }} BETWEEN 24 AND 28 THEN priceAtAge24To28\n WHEN {{ $fromAI(\"holderAge\") }} BETWEEN 29 AND 33 THEN priceAtAge29To33\n WHEN {{ $fromAI(\"holderAge\") }} BETWEEN 34 AND 38 THEN priceAtAge34To38\n WHEN {{ $fromAI(\"holderAge\") }} BETWEEN 39 AND 43 THEN priceAtAge39To43\n WHEN {{ $fromAI(\"holderAge\") }} BETWEEN 44 AND 48 THEN priceAtAge44To48\n WHEN {{ $fromAI(\"holderAge\") }} BETWEEN 49 AND 53 THEN priceAtAge49To53\n WHEN {{ $fromAI(\"holderAge\") }} BETWEEN 54 AND 58 THEN priceAtAge54To58\n ELSE priceAtAge59To199\n END) ASC, \n createdAt DESC\nLIMIT 3;\n",
"options": {
"detailedOutput": true
},
"operation": "executeQuery",
"descriptionType": "manual",
"toolDescription": "// Search for the X product bla bla bla"
},
"credentials": {
"mySql": {
"name": "<your credential>"
}
},
"typeVersion": 2.4
},
{
"id": "0cdfd89f-eb9e-4b6c-90d1-1cf8d6ed96bb",
"name": "Knowledge Base",
"type": "@n8n/n8n-nodes-langchain.toolHttpRequest",
"position": [
1340,
600
],
"parameters": {
"url": "https://quotation.joov.com.br/widget/info?modalidade={modalidade}&estado=SP&cidade={city}&operadora={operadora}",
"toolDescription": "Here you will find the knowlegde base of my shop and bla bla bla Use this when they ask for price, whatever i want."
},
"typeVersion": 1.1
},
{
"id": "393f792a-4eff-4b33-aac0-025fc622a4b3",
"name": "External API",
"type": "@n8n/n8n-nodes-langchain.toolHttpRequest",
"position": [
1200,
600
],
"parameters": {
"url": "https://integracao-sed-alb-323570099.us-east-1.elb.amazonaws.com/findByNameAndBirthDate",
"method": "POST",
"jsonBody": "={\n \"name\": \"{{json.name}}\",\n \"birthdate\": \"{{json.birthdate }}\"\n}",
"sendBody": true,
"specifyBody": "json",
"toolDescription": "Pegue o nome completo em camel case, exemplo: Fernanda Melo, e a data de nacimento nesse formato: 1990-03-28"
},
"typeVersion": 1.1
},
{
"id": "7ce7a5e7-6238-4479-a26f-bdcde1784188",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
1160,
414
],
"parameters": {
"color": 5,
"width": 436.73182569600795,
"height": 367.7413881276459,
"content": "TOOLS"
},
"typeVersion": 1
},
{
"id": "df6737ca-c588-48fc-9761-2a5307841298",
"name": "OpenAI2",
"type": "@n8n/n8n-nodes-langchain.openAi",
"position": [
460,
460
],
"parameters": {
"text": "={{ $json.chatInput }}",
"prompt": "define",
"options": {},
"resource": "assistant",
"assistantId": {
"__rl": true,
"mode": "list",
"value": "asst_x2qfc7EuoPv7XGOL84ClEZ3L",
"cachedResultName": "PINE"
}
},
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.4
}
],
"active": false,
"settings": {
"executionOrder": "v1"
},
"versionId": "d1dc3988-6677-47c9-b91a-6875c7b6151d",
"connections": {
"If": {
"main": [
[
{
"node": "Edit Fields1",
"type": "main",
"index": 0
}
],
[
{
"node": "OpenAI2",
"type": "main",
"index": 0
}
]
]
},
"OpenAI": {
"main": [
[
{
"node": "Edit Fields2",
"type": "main",
"index": 0
}
]
]
},
"Chat Trigger": {
"main": [
[
{
"node": "If",
"type": "main",
"index": 0
}
]
]
},
"Edit Fields1": {
"main": [
[
{
"node": "OpenAI",
"type": "main",
"index": 0
}
]
]
},
"Edit Fields2": {
"main": [
[
{
"node": "OpenAI2",
"type": "main",
"index": 0
}
]
]
},
"External API": {
"ai_tool": [
[
{
"node": "OpenAI2",
"type": "ai_tool",
"index": 0
}
]
]
},
"Knowledge Base": {
"ai_tool": [
[
{
"node": "OpenAI2",
"type": "ai_tool",
"index": 0
}
]
]
},
"Postgres Chat Memory": {
"ai_memory": [
[
{
"node": "OpenAI2",
"type": "ai_memory",
"index": 0
}
]
]
},
"Postgres Chat Memory1": {
"ai_memory": [
[
{
"node": "OpenAI",
"type": "ai_memory",
"index": 0
}
]
]
},
"Products in Daatabase": {
"ai_tool": [
[
{
"node": "OpenAI2",
"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.
mySqlopenAiApipostgres
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
Your workflow is an intelligent chatbot, using ++OpenAI assistant++, integrated with a backend that supports WhatsApp Business, designed to handle various use cases such as sales and customer support. Below is a breakdown of its functionality and key components: The flow starts…
Source: https://n8n.io/workflows/2637/ — 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.
modelo do chatbot. Uses openAi, chatTrigger, memoryPostgresChat, mySqlTool. Chat trigger; 12 nodes.
modelo do chatbot. Uses openAi, chatTrigger, memoryPostgresChat, mySqlTool. Chat trigger; 12 nodes.
modelo do chatbot. Uses openAi, chatTrigger, memoryPostgresChat, mySqlTool. Chat trigger; 12 nodes.
modelo do chatbot. Uses openAi, chatTrigger, memoryPostgresChat, mySqlTool. Chat trigger; 12 nodes.
Chat Assistant (OpenAI assistant) with Postgres Memory And API Calling Capabalities. Uses openAi, chatTrigger, memoryPostgresChat, mySqlTool. Chat trigger; 12 nodes.