AutomationFlows β€Ί AI & RAG β€Ί Hardware Store Product Assistant with Postgresql & Google Gemini AI

Hardware Store Product Assistant with Postgresql & Google Gemini AI

Bysebastian pineda @jspsoluciones on n8n.io

πŸ€– AI-Powered Hardware Store Assistant with PostgreSQL & MCP Supercharge your customer service with this conversational AI agent! This n8n workflow provides a complete solution for a hardware store chatbot that connects to a PostgreSQL database in real-time. It uses Google Gemini…

Event triggerβ˜…β˜…β˜…β˜…β˜† complexityAI-powered15 nodesMcp TriggerPostgres ToolChat TriggerAgentGoogle Gemini ChatMemory Buffer WindowMcp Client Tool
AI & RAG Trigger: Event Nodes: 15 Complexity: β˜…β˜…β˜…β˜…β˜† AI nodes: yes Added:

This workflow corresponds to n8n.io template #9802 β€” we link there as the canonical source.

This workflow follows the Agent β†’ Chat Trigger 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 β†’

Download .json
{
  "id": "KN9jNN3EZPjpNGbC",
  "name": "AI Agent with PostgreSQL & MCP for Hardware Store Chatbot",
  "tags": [],
  "nodes": [
    {
      "id": "fbc411f2-3338-4a02-b72d-ab543374fbfc",
      "name": "Database Tools Trigger",
      "type": "@n8n/n8n-nodes-langchain.mcpTrigger",
      "position": [
        -464,
        368
      ],
      "parameters": {
        "path": "servidorbasesdedatos"
      },
      "typeVersion": 2
    },
    {
      "id": "01e12dad-723e-4363-94e4-6e44b0850ba1",
      "name": "Query Product by ID",
      "type": "n8n-nodes-base.postgresTool",
      "position": [
        -640,
        512
      ],
      "parameters": {
        "table": {
          "__rl": true,
          "mode": "list",
          "value": "productos",
          "cachedResultName": "productos"
        },
        "where": {
          "values": [
            {
              "value": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('values0_Value', ``, 'string') }}",
              "column": "id"
            }
          ]
        },
        "schema": {
          "__rl": true,
          "mode": "list",
          "value": "public"
        },
        "options": {},
        "operation": "select",
        "combineConditions": "OR"
      },
      "credentials": {
        "postgres": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.6
    },
    {
      "id": "4ccc8c2d-3300-43cf-8ce2-cd919489fedb",
      "name": "Query Product by Name",
      "type": "n8n-nodes-base.postgresTool",
      "position": [
        -448,
        560
      ],
      "parameters": {
        "table": {
          "__rl": true,
          "mode": "list",
          "value": "productos",
          "cachedResultName": "productos"
        },
        "where": {
          "values": [
            {
              "value": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('values0_Value', ``, 'string') }}",
              "column": "nombre"
            }
          ]
        },
        "schema": {
          "__rl": true,
          "mode": "list",
          "value": "public"
        },
        "options": {},
        "operation": "select",
        "combineConditions": "OR"
      },
      "credentials": {
        "postgres": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.6
    },
    {
      "id": "8e9ffd6e-8b31-4c2a-b3ee-8ba4e7539469",
      "name": "Query Product by Description",
      "type": "n8n-nodes-base.postgresTool",
      "position": [
        -320,
        624
      ],
      "parameters": {
        "table": {
          "__rl": true,
          "mode": "list",
          "value": "productos",
          "cachedResultName": "productos"
        },
        "where": {
          "values": [
            {
              "value": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('values0_Value', ``, 'string') }}",
              "column": "descripcion"
            }
          ]
        },
        "schema": {
          "__rl": true,
          "mode": "list",
          "value": "public"
        },
        "options": {},
        "operation": "select",
        "combineConditions": "OR"
      },
      "credentials": {
        "postgres": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.6
    },
    {
      "id": "1a18188f-33a6-47bf-881f-d5fd4a263af5",
      "name": "Query Product by Category",
      "type": "n8n-nodes-base.postgresTool",
      "position": [
        -208,
        528
      ],
      "parameters": {
        "table": {
          "__rl": true,
          "mode": "list",
          "value": "productos",
          "cachedResultName": "productos"
        },
        "where": {
          "values": [
            {
              "value": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('values0_Value', ``, 'string') }}",
              "column": "categoria"
            }
          ]
        },
        "schema": {
          "__rl": true,
          "mode": "list",
          "value": "public"
        },
        "options": {},
        "operation": "select",
        "combineConditions": "OR"
      },
      "credentials": {
        "postgres": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.6
    },
    {
      "id": "4a7b5cdf-8ada-432d-b12c-b991528c66e1",
      "name": "Query Product by Subcategory",
      "type": "n8n-nodes-base.postgresTool",
      "position": [
        -64,
        496
      ],
      "parameters": {
        "table": {
          "__rl": true,
          "mode": "list",
          "value": "productos",
          "cachedResultName": "productos"
        },
        "where": {
          "values": [
            {
              "value": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('values0_Value', ``, 'string') }}",
              "column": "subcategoria"
            }
          ]
        },
        "schema": {
          "__rl": true,
          "mode": "list",
          "value": "public"
        },
        "options": {},
        "operation": "select",
        "combineConditions": "OR"
      },
      "credentials": {
        "postgres": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.6
    },
    {
      "id": "88060128-1221-44aa-816c-ae256e9683fe",
      "name": "Query Product by Note",
      "type": "n8n-nodes-base.postgresTool",
      "position": [
        -112,
        352
      ],
      "parameters": {
        "table": {
          "__rl": true,
          "mode": "list",
          "value": "productos",
          "cachedResultName": "productos"
        },
        "where": {
          "values": [
            {
              "value": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('values0_Value', ``, 'string') }}",
              "column": "nota"
            }
          ]
        },
        "schema": {
          "__rl": true,
          "mode": "list",
          "value": "public"
        },
        "options": {},
        "operation": "select",
        "combineConditions": "OR"
      },
      "credentials": {
        "postgres": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.6
    },
    {
      "id": "e9398c88-b894-4a3e-9c98-ce2347bfe967",
      "name": "Chat Trigger",
      "type": "@n8n/n8n-nodes-langchain.chatTrigger",
      "position": [
        -112,
        112
      ],
      "parameters": {
        "public": true,
        "options": {
          "allowFileUploads": true,
          "showWelcomeScreen": true
        }
      },
      "typeVersion": 1.3
    },
    {
      "id": "fdaba65d-ebd9-40cf-8041-cb3b59de0a0f",
      "name": "AI Agent",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        256,
        112
      ],
      "parameters": {
        "options": {
          "systemMessage": "Eres un asistente de ventas especializado en materiales de construcci\u00f3n para sistemas de drywall, plafones y acabados. Tu objetivo es ayudar a los clientes a encontrar productos, generar cotizaciones y asesorar en proyectos de construcci\u00f3n.\nTu Rol y Responsabilidades\n\nAsesor experto: Conoces profundamente los productos de tablaroca, perfiles met\u00e1licos, torniller\u00eda, acabados y sistemas de cielos falsos\nConsultor de proyectos: Ayudas a calcular materiales necesarios para proyectos espec\u00edficos\nGenerador de cotizaciones: Proporcionas precios claros y totales detallados\nEducador: Explicas el uso correcto de cada producto y sus aplicaciones\n\nAcceso a Informaci\u00f3n de Productos\nTienes acceso a una base de datos PostgreSQL con la tabla productos que contiene:\n\nid: Identificador \u00fanico del producto\nnombre: Nombre comercial del producto\ndescripcion: Descripci\u00f3n detallada y usos\nmedida_unidad: Unidad de venta (pza, rollo, cubeta, kg)\ndimensiones: Medidas f\u00edsicas del producto\nexistencia: Cantidad disponible en inventario\nprecio_unidad: Precio por unidad en pesos mexicanos\ncategoria: Clasificaci\u00f3n principal (Paneles, Perfiles Met\u00e1licos, Torniller\u00eda, Acabados, Aislamientos, Ferreter\u00eda)\nsubcategoria: Clasificaci\u00f3n espec\u00edfica\nrelacionados: IDs de productos complementarios\nnota: Informaci\u00f3n adicional importante\n\nC\u00f3mo Usar la Herramienta MCP Client\nPuedes consultar productos usando diferentes criterios:\n\nPor ID: Cuando conozcas el n\u00famero exacto del producto\nPor nombre: Para b\u00fasquedas por nombre comercial (ej: \"Tablaroca\", \"Canal\", \"Pija\")\nPor descripci\u00f3n: Para b\u00fasquedas m\u00e1s generales sobre caracter\u00edsticas\nPor categor\u00eda: Para listar productos por tipo (Paneles, Perfiles Met\u00e1licos, Torniller\u00eda, etc.)\nPor subcategor\u00eda: Para b\u00fasquedas m\u00e1s espec\u00edficas (Tablaroca, Canales, Postes, etc.)\nPor nota: Para informaci\u00f3n t\u00e9cnica espec\u00edfica\n\nGu\u00edas de Conversaci\u00f3n\nConsultas de Productos\nCuando un cliente pregunte por un producto:\n\nBusca en la base de datos usando el criterio m\u00e1s apropiado\nProporciona nombre, descripci\u00f3n, precio y disponibilidad\nMenciona productos relacionados que puedan complementar la compra\nIncluye notas t\u00e9cnicas relevantes (medidas, calibres, aplicaciones)\n\nCotizaciones\nAl generar cotizaciones:\n\nLista cada producto con su nombre completo\nIndica cantidad solicitada y unidad de medida\nMuestra precio unitario y subtotal por producto\nCalcula el total general al final\nMenciona disponibilidad en existencias\nFormato claro y profesional\n\nEjemplo de cotizaci\u00f3n:\nCOTIZACI\u00d3N\n\n1. Tablaroca Ultralight USG (1.22 x 2.44 m x 1/2\")\n   - Cantidad: 20 piezas\n   - Precio unitario: $240.00\n   - Subtotal: $4,800.00\n   \n2. Canal 6.35 Cal 26 (3.05 m)\n   - Cantidad: 10 piezas\n   - Precio unitario: $62.00\n   - Subtotal: $620.00\n\nTOTAL: $5,420.00\n\nNota: Verificar disponibilidad en inventario\nAsesor\u00eda para Proyectos\nCuando un cliente describa un proyecto (ej: \"quiero hacer un muro divisorio de 4x3 metros\"):\n\nIdentifica el tipo de proyecto: muro divisorio, cielo falso, \u00e1rea h\u00fameda\nCalcula materiales necesarios:\n\nPaneles seg\u00fan \u00e1rea a cubrir (cada Tablaroca cubre ~2.97 m\u00b2)\nPerfiles met\u00e1licos seg\u00fan dimensiones y separaci\u00f3n est\u00e1ndar\nTorniller\u00eda seg\u00fan cantidad de paneles y uniones\nAcabados proporcionales al \u00e1rea\n\n\nRecomienda productos complementarios:\n\nAislamiento para mejor confort\nProductos relacionados seg\u00fan el tipo de proyecto\n\n\nProporciona cantidades aproximadas basadas en:\n\nPostes cada 40.6 o 61 cm\nPijas: aproximadamente 32 por panel de Tablaroca\nCompuesto: 1 cubeta de 21.8 kg cubre ~30-40 m\u00b2 de junta\nCinta: 1 rollo de 76 m cubre ~20-25 paneles\n\n\nGenera cotizaci\u00f3n completa con todos los materiales\n\n\u00c1reas H\u00famedas\nPara ba\u00f1os o cocinas, recomienda:\n\nDurock en lugar de Tablaroca tradicional\nPijas especiales para Durock (resistentes a corrosi\u00f3n)\nBasecoat USG para mejor acabado en paneles cementicios\n\nCielos Falsos/Plafones\nPara proyectos de cielos falsos, incluye:\n\nPerfiles principales (Canaleta de carga, Tee principal)\nPerfiles secundarios (Canal list\u00f3n, Tee 1.22, Tee 61)\nAcabados perimetrales (\u00c1ngulo de amarre, \u00c1ngulo perimetral)\nPaneles de plaf\u00f3n (61x61 cm)\nSistema de suspensi\u00f3n (Alambre galvanizado)\n\nTono y Estilo\n\nProfesional pero cercano: Habla como un experto accesible\nClaro y directo: Evita tecnicismos innecesarios, explica cuando sea necesario\nProactivo: Sugiere productos complementarios y alternativas\nEducativo: Explica para qu\u00e9 sirve cada producto y c\u00f3mo se usa\nPreciso con n\u00fameros: Verifica c\u00e1lculos y proporciona cotizaciones exactas\n\nInformaci\u00f3n Importante\n\nTodos los precios est\u00e1n en pesos mexicanos (MXN)\nSiempre verifica la existencia antes de confirmar disponibilidad\nSi un producto tiene existencia = 0, indica que est\u00e1 agotado y ofrece alternativas\nUsa las notas de cada producto para dar informaci\u00f3n t\u00e9cnica valiosa\nConsidera los productos relacionados para ventas complementarias\n\nLimitaciones\n\nNo inventes informaci\u00f3n que no est\u00e9 en la base de datos\nSi no encuentras un producto, ofr\u00e9cete a buscar por otros t\u00e9rminos\nNo garantices tiempos de entrega ni pol\u00edticas de devoluci\u00f3n (eso lo maneja el \u00e1rea administrativa)\nPara consultas sobre instalaci\u00f3n compleja, sugiere contactar a un profesional\n\n\nObjetivo Final: Proporcionar una experiencia de compra informada, ayudar a los clientes a encontrar exactamente lo que necesitan y asegurar que tengan todos los materiales para completar exitosamente sus proyectos."
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "3876074c-a9fd-4802-8b4c-8c1c7f3178d2",
      "name": "Language Model (Google Gemini)",
      "type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
      "position": [
        128,
        304
      ],
      "parameters": {
        "options": {}
      },
      "credentials": {
        "googlePalmApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "b93eaac2-2de5-425a-800c-07dfcca60afb",
      "name": "Chat Memory",
      "type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
      "position": [
        288,
        336
      ],
      "parameters": {
        "contextWindowLength": 50
      },
      "typeVersion": 1.3
    },
    {
      "id": "c247fa37-e815-4fbb-a954-98bf247527d5",
      "name": "DB Tools Client",
      "type": "@n8n/n8n-nodes-langchain.mcpClientTool",
      "position": [
        448,
        336
      ],
      "parameters": {
        "options": {},
        "endpointUrl": "http://localhost:5678/mcp/servidorbasesdedatos"
      },
      "typeVersion": 1.1
    },
    {
      "id": "8f1238d5-d0a0-4981-a236-fd5a58a83d68",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1088,
        0
      ],
      "parameters": {
        "color": 4,
        "width": 352,
        "height": 736,
        "content": "## \ud83d\udcdd Descripci\u00f3n del Flujo / Workflow Description\n\nEste agente de IA conversacional responde preguntas sobre productos de ferreter\u00eda. Utiliza un modelo de lenguaje de Google (Gemini) y se conecta a una base de datos PostgreSQL en tiempo real usando el **MCP Client Tool** para obtener la informaci\u00f3n.\n\n**Funcionalidades Principales:**\n- **Consultas de productos:** por ID, nombre, categor\u00eda, etc.\n- **Asesoramiento:** sobre materiales para proyectos.\n- **Generaci\u00f3n de cotizaciones** detalladas.\n\n---\n\nThis conversational AI agent answers questions about hardware store products. It uses a Google language model (Gemini) and connects to a PostgreSQL database in real-time using the **MCP Client Tool** to get the information.\n\n**Main Features:**\n- **Product queries:** by ID, name, category, etc.\n- **Advice:** on materials for projects.\n- **Generation** of detailed quotes."
      },
      "typeVersion": 1
    },
    {
      "id": "93ca2a57-7d7b-43ff-ac50-cfa3514217bc",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        608,
        32
      ],
      "parameters": {
        "color": 5,
        "width": 352,
        "height": 768,
        "content": "## \u2699\ufe0f Configuraci\u00f3n Requerida / Required Configuration\n\nPara que este flujo funcione, aseg\u00farate de configurar lo siguiente:\n\n1.  **Credenciales de PostgreSQL:**\n    - Deben estar configuradas y seleccionadas en cada nodo `PostgresTool`.\n\n2.  **Credenciales de Google Gemini:**\n    - Deben estar configuradas en el nodo `Language Model (Google Gemini)`.\n\n---\n\nFor this workflow to run, make sure to set up the following:\n\n1.  **PostgreSQL Credentials:**\n    - Must be configured and selected in each `PostgresTool` node.\n\n2.  **Google Gemini Credentials:**\n    - Must be configured in the `Language Model (Google Gemini)` node."
      },
      "typeVersion": 1
    },
    {
      "id": "06499bb5-76aa-40c6-b6ee-44b0e1aa3d1c",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -672,
        -112
      ],
      "parameters": {
        "width": 1248,
        "height": 176,
        "content": "## AI Agent with PostgreSQL & MCP for Hardware Store Chatbot\n\nA conversational AI agent workflow in n8n powered by Google Gemini. It connects to a PostgreSQL database via the MCP Client tool to handle real-time product queries for a hardware store.\n\n---\n\n## Agente IA con PostgreSQL y MCP para Chatbot de Ferreter\u00eda\n\nFlujo de trabajo en n8n de un agente de IA conversacional impulsado por Google Gemini. Se conecta a una base de datos PostgreSQL a trav\u00e9s de la herramienta MCP Client para gestionar consultas de productos en tiempo real para una ferreter\u00eda."
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "482bcc14-4176-4f7e-845f-526daf162329",
  "connections": {
    "Chat Memory": {
      "ai_memory": [
        [
          {
            "node": "AI Agent",
            "type": "ai_memory",
            "index": 0
          }
        ]
      ]
    },
    "Chat Trigger": {
      "main": [
        [
          {
            "node": "AI Agent",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "DB Tools Client": {
      "ai_tool": [
        [
          {
            "node": "AI Agent",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Query Product by ID": {
      "ai_tool": [
        [
          {
            "node": "Database Tools Trigger",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Query Product by Name": {
      "ai_tool": [
        [
          {
            "node": "Database Tools Trigger",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Query Product by Note": {
      "ai_tool": [
        [
          {
            "node": "Database Tools Trigger",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Query Product by Category": {
      "ai_tool": [
        [
          {
            "node": "Database Tools Trigger",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Query Product by Description": {
      "ai_tool": [
        [
          {
            "node": "Database Tools Trigger",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Query Product by Subcategory": {
      "ai_tool": [
        [
          {
            "node": "Database Tools Trigger",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Language Model (Google Gemini)": {
      "ai_languageModel": [
        [
          {
            "node": "AI Agent",
            "type": "ai_languageModel",
            "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.

Pro

For the full experience including quality scoring and batch install features for each workflow upgrade to Pro

About this workflow

πŸ€– AI-Powered Hardware Store Assistant with PostgreSQL & MCP Supercharge your customer service with this conversational AI agent! This n8n workflow provides a complete solution for a hardware store chatbot that connects to a PostgreSQL database in real-time. It uses Google Gemini…

Source: https://n8n.io/workflows/9802/ β€” original creator credit. Request a take-down β†’

More AI & RAG workflows β†’ Β· Browse all categories β†’

Related workflows

Workflows that share integrations, category, or trigger type with this one. All free to copy and import.

AI & RAG

Ask your PostgreSQL database complex questions and receive clear summaries, charts, and even update or insert data β€” all through one smart agent powered by n8n’s Model Context Protocol (MCP).

Postgres Tool, Execute Workflow Trigger, Tool Workflow +8
AI & RAG

Enable AI-driven conversations with your PostgreSQL database using a secure and visual-free agent powered by n8n’s Model Context Protocol (MCP). This template allows users to ask multiple KPIs in a si

Postgres Tool, Execute Workflow Trigger, Tool Workflow +8
AI & RAG

Transform your Jira project management with the power of AI and automation! This n8n workflow template demonstrates how to create a seamless integration between chat interfaces, AI processing, and Jir

Mcp Trigger, Jira Tool, Chat Trigger +4
AI & RAG

Splitout Redis. Uses executeWorkflowTrigger, n8n, redis, splitOut. Event-driven trigger; 46 nodes.

Execute Workflow Trigger, n8n, Redis +7
AI & RAG

3770. Uses executeWorkflowTrigger, n8n, redis, agent. Event-driven trigger; 46 nodes.

Execute Workflow Trigger, n8n, Redis +7