AutomationFlowsAI & RAG › ERP AI chatbot for Odoo sales module

ERP AI chatbot for Odoo sales module

ERP AI chatbot for Odoo sales module. Uses memoryBufferWindow, lmChatOpenAi, toolCalculator, scheduleTrigger. Scheduled trigger; 16 nodes.

Cron / scheduled trigger★★★★☆ complexityAI-powered16 nodesMemory Buffer WindowLm Chat Open AiTool CalculatorRead Write FileOdooAgentChain SummarizationLm Open Ai
AI & RAG Trigger: Cron / scheduled Nodes: 16 Complexity: ★★★★☆ AI nodes: yes

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 →

Download .json
{
  "id": "n8cwEZfJLGn15Lqx",
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "name": "ERP AI chatbot for Odoo sales module",
  "tags": [],
  "nodes": [
    {
      "id": "abe58519-f3fe-4438-b6d6-d67071c70f0b",
      "name": "Window Buffer Memory",
      "type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
      "position": [
        1360,
        700
      ],
      "parameters": {
        "sessionKey": "={{ $('Chat Trigger').item.json.sessionId }}",
        "sessionIdType": "customKey"
      },
      "typeVersion": 1.2
    },
    {
      "id": "35b63108-e40d-494f-a0dc-5c8ea296c75f",
      "name": "OpenAI Chat Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        1240,
        700
      ],
      "parameters": {
        "options": {}
      },
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "91ff893c-917d-46c2-b27d-48e9799452a6",
      "name": "Calculator",
      "type": "@n8n/n8n-nodes-langchain.toolCalculator",
      "position": [
        1480,
        700
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "b9c10744-c5b8-4949-a80f-d331746632fb",
      "name": "Schedule Trigger",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        220,
        180
      ],
      "parameters": {
        "rule": {
          "interval": [
            {}
          ]
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "4fa016bf-3f4c-4bfd-8c11-0270002de533",
      "name": "Convert to File",
      "type": "n8n-nodes-base.convertToFile",
      "position": [
        1480,
        180
      ],
      "parameters": {
        "options": {},
        "operation": "toText",
        "sourceProperty": "response.text"
      },
      "typeVersion": 1.1
    },
    {
      "id": "f9f0f1ed-7ccf-4c97-8d28-91399b2a4440",
      "name": "Save Summary to File",
      "type": "n8n-nodes-base.readWriteFile",
      "position": [
        1700,
        180
      ],
      "parameters": {
        "options": {
          "append": false
        },
        "fileName": "cache.txt",
        "operation": "write"
      },
      "typeVersion": 1
    },
    {
      "id": "e9715c9d-7ebb-4f8c-b44e-a2ee69bf9618",
      "name": "Get All Opportunities from Odoo",
      "type": "n8n-nodes-base.odoo",
      "position": [
        460,
        180
      ],
      "parameters": {
        "options": {
          "fieldsList": [
            "won_status",
            "description",
            "email_from",
            "contact_name",
            "expected_revenue"
          ]
        },
        "resource": "opportunity",
        "operation": "getAll",
        "returnAll": true
      },
      "credentials": {
        "odooApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "23b82fdb-656f-497f-84eb-4296581245ac",
      "name": "Read Summary From File",
      "type": "n8n-nodes-base.readWriteFile",
      "position": [
        540,
        540
      ],
      "parameters": {
        "options": {},
        "fileSelector": "cache.txt"
      },
      "typeVersion": 1,
      "alwaysOutputData": false
    },
    {
      "id": "8d702c53-9001-4f71-80c4-17786384caf0",
      "name": "If Summary Exists",
      "type": "n8n-nodes-base.if",
      "position": [
        760,
        540
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "c65a538f-f6c8-41ff-bad3-a631a5063cbb",
              "operator": {
                "type": "string",
                "operation": "exists",
                "singleValue": true
              },
              "leftValue": "={{ $json.fileName }}",
              "rightValue": ""
            }
          ]
        }
      },
      "typeVersion": 2
    },
    {
      "id": "4007d6e3-2d6f-4edd-afee-7df3c7dd5236",
      "name": "Merge Opportunities",
      "type": "n8n-nodes-base.aggregate",
      "position": [
        700,
        180
      ],
      "parameters": {
        "options": {},
        "aggregate": "aggregateAllItemData"
      },
      "typeVersion": 1
    },
    {
      "id": "604de791-8351-47ed-897d-2b7fe7f0aa99",
      "name": "Extract Text From File",
      "type": "n8n-nodes-base.extractFromFile",
      "position": [
        1020,
        520
      ],
      "parameters": {
        "options": {},
        "operation": "text"
      },
      "typeVersion": 1
    },
    {
      "id": "ab68228c-7d02-4d36-8c43-10a387dc3085",
      "name": "AI Conversational Agent",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        1240,
        520
      ],
      "parameters": {
        "text": "={{ $('Chat Trigger').item.json.chatInput }}",
        "agent": "conversationalAgent",
        "options": {
          "humanMessage": "=TOOLS\n------\nAssistant can ask the user to use tools to look up information that may be helpful in answering the users original question. The tools the human can use are:\n\n{tools}\n\n{format_instructions}\n\nAnswer questions using only the following context: {{ $json.data }}.\n\n\nUSER'S INPUT\n--------------------\nHere is the user's input (remember to respond with a markdown code snippet of a json blob with a single action, and NOTHING else):\n\n{{input}} "
        },
        "promptType": "define"
      },
      "typeVersion": 1.6
    },
    {
      "id": "117af37c-7dda-4bba-a008-d67c876efa9d",
      "name": "Summarize Opportunities",
      "type": "@n8n/n8n-nodes-langchain.chainSummarization",
      "position": [
        1020,
        60
      ],
      "parameters": {
        "options": {
          "summarizationMethodAndPrompts": {
            "values": {
              "prompt": "=Write a summary of the following:\n\n\n{{ JSON.stringify($json.data) }}\n\nInclude important information such as won status and expected revenue for each opportunity. Also include a short description of each oppotunity and keep opportunities separate.\n\nCONCISE SUMMARY: ",
              "combineMapPrompt": "=Write a summary of the following:\n\n{{ JSON.stringify($json.data) }}\n\nInclude important information such as won status and expected revenue for each opportunity. Also include a short description of each oppotunity and keep opportunities separate.\n\nCONCISE SUMMARY: "
            }
          }
        }
      },
      "typeVersion": 2
    },
    {
      "id": "e6ae17c7-15db-4c9d-9ce9-4748eaf84359",
      "name": "OpenAI Summarization Model",
      "type": "@n8n/n8n-nodes-langchain.lmOpenAi",
      "position": [
        1000,
        220
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4-turbo",
          "cachedResultName": "gpt-4-turbo"
        },
        "options": {}
      },
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "0e3a0b55-62d0-43d0-a744-a7b7ab05c087",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        200,
        -160
      ],
      "parameters": {
        "width": 446.44549763033154,
        "height": 261.8821936357484,
        "content": "# ERP chatbot for Odoo sales module\n\nSet up steps:\n* Configure the Odoo credentials\n* Configure OpenAI credentials\n* Toggle \"Make Chat Publicly Available\" from the Chat Trigger node."
      },
      "typeVersion": 1
    },
    {
      "id": "b9169b8d-7ff6-403f-b354-511c23d5da1c",
      "name": "Chat Trigger",
      "type": "@n8n/n8n-nodes-langchain.chatTrigger",
      "position": [
        220,
        540
      ],
      "parameters": {
        "public": true,
        "options": {}
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "315972c0-e19d-4978-88ea-9fe721de3631",
  "connections": {
    "Calculator": {
      "ai_tool": [
        [
          {
            "node": "AI Conversational Agent",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Chat Trigger": {
      "main": [
        [
          {
            "node": "Read Summary From File",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Convert to File": {
      "main": [
        [
          {
            "node": "Save Summary to File",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Schedule Trigger": {
      "main": [
        [
          {
            "node": "Get All Opportunities from Odoo",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "If Summary Exists": {
      "main": [
        [
          {
            "node": "Extract Text From File",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Get All Opportunities from Odoo",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "AI Conversational Agent",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Merge Opportunities": {
      "main": [
        [
          {
            "node": "Summarize Opportunities",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Save Summary to File": {
      "main": [
        [
          {
            "node": "Read Summary From File",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Window Buffer Memory": {
      "ai_memory": [
        [
          {
            "node": "AI Conversational Agent",
            "type": "ai_memory",
            "index": 0
          }
        ]
      ]
    },
    "Extract Text From File": {
      "main": [
        [
          {
            "node": "AI Conversational Agent",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Read Summary From File": {
      "main": [
        [
          {
            "node": "If Summary Exists",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Summarize Opportunities": {
      "main": [
        [
          {
            "node": "Convert to File",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Summarization Model": {
      "ai_languageModel": [
        [
          {
            "node": "Summarize Opportunities",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Get All Opportunities from Odoo": {
      "main": [
        [
          {
            "node": "Merge Opportunities",
            "type": "main",
            "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.

About this workflow

ERP AI chatbot for Odoo sales module. Uses memoryBufferWindow, lmChatOpenAi, toolCalculator, scheduleTrigger. Scheduled trigger; 16 nodes.

Source: https://github.com/Zie619/n8n-workflows — original creator credit. Request a take-down →

More AI & RAG workflows → · Browse all categories →