AutomationFlowsAI & RAG › AI Refund Processing Agent with Gmail

AI Refund Processing Agent with Gmail

Original n8n title: Process Refund Logic Agent

process-refund-logic-agent. Uses lmChatGoogleGemini, outputParserStructured, gmail, googleSheetsTool. Webhook trigger; 19 nodes.

Webhook trigger★★★★☆ complexityAI-powered19 nodesGoogle Gemini ChatOutput Parser StructuredGmailGoogle Sheets ToolTelegramAgent
AI & RAG Trigger: Webhook Nodes: 19 Complexity: ★★★★☆ AI nodes: yes Added:

This workflow follows the Agent → Gmail 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
{
  "name": "process-refund-logic-agent",
  "nodes": [
    {
      "parameters": {
        "httpMethod": "POST",
        "path": "5562738d-2e64-4881-bdea-559adc5e7d10",
        "options": {}
      },
      "type": "n8n-nodes-base.webhook",
      "typeVersion": 2.1,
      "position": [
        0,
        0
      ],
      "id": "ced62794-6424-4953-a67e-d4f6783431e3",
      "name": "Webhook"
    },
    {
      "parameters": {
        "options": {}
      },
      "type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
      "typeVersion": 1,
      "position": [
        96,
        208
      ],
      "id": "c132cf1e-4e09-4ea2-b668-8db536035703",
      "name": "Google Gemini Chat Model",
      "credentials": {
        "googlePalmApi": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "jsonSchemaExample": "{\n  \"nome\": \"Alon\",\n  \"email\": \"alon@exemplo.com\",\n  \"produto_reembolso\": \"Software de Contabilidade\",\n  \"comentario\": \"O software \u00e9 bom mas tive problemas pessoais\",\n  \"sentimento\": \"neutro\",\n  \"cliente_encontrado\": true,\n  \"nome_completo\": \"Alon Pinheiro\",\n  \"total_gasto_cliente\": 1000,\n  \"dias_desde_compra\": 15\n}\n\n"
      },
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "typeVersion": 1.3,
      "position": [
        448,
        208
      ],
      "id": "fbc58a3d-1e9f-44db-8d36-bb8bbae974e1",
      "name": "Structured Output Parser (json)"
    },
    {
      "parameters": {
        "content": "Standard Customer",
        "height": 224,
        "width": 448
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        784,
        -192
      ],
      "id": "d28bef79-fd1b-4a35-a33c-c1949a580f27",
      "name": "Sticky Note"
    },
    {
      "parameters": {
        "content": "VIP Customer\n\n",
        "height": 208,
        "width": 832,
        "color": 4
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        784,
        48
      ],
      "id": "bc3f8ac0-e5e1-4cbd-85d1-6a9702d4c686",
      "name": "Sticky Note1"
    },
    {
      "parameters": {
        "content": "Complaining Customer",
        "height": 208,
        "width": 832,
        "color": 3
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        784,
        272
      ],
      "id": "bd778250-62b0-452d-a3ec-9318e269fe69",
      "name": "Sticky Note2"
    },
    {
      "parameters": {
        "content": "Customer within the deadline",
        "height": 224,
        "width": 832,
        "color": 4
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        784,
        496
      ],
      "id": "2def5003-e705-44d1-acab-082458d9d6b1",
      "name": "Sticky Note3"
    },
    {
      "parameters": {
        "sendTo": "={{ $('Agent: Process Refund Logic').item.json.output.email }}",
        "subject": "Retorno sobre sua solicita\u00e7\u00e3o de reembolso",
        "message": "=Ol\u00e1 {{ $('Agent: Process Refund Logic').item.json.output.nome }}. \n\nRecebemos seu pedido de reembolso.\n\nVerificamos aqui que voc\u00ea ainda est\u00e1 dentro do prazo de garantia incondicional de 7 dias. \ud83d\udc4d\n\nNossa equipe financeira j\u00e1 foi notificada e o processo ser\u00e1 seguido conforme nossos termos.",
        "options": {
          "appendAttribution": false
        }
      },
      "type": "n8n-nodes-base.gmail",
      "typeVersion": 2.2,
      "position": [
        832,
        544
      ],
      "id": "1ee03df2-bd84-4688-8cbe-5b7f7c93c58b",
      "name": "Gmail: Send Retention Email",
      "credentials": {
        "gmailOAuth2": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "sendTo": "={{ $('Agent: Process Refund Logic').item.json.output.email }}",
        "subject": "Retorno sobre sua solicita\u00e7\u00e3o de reembolso",
        "message": "=Ol\u00e1, {{ $('Agent: Process Refund Logic').item.json.output.nome }}. Analisei sua solicita\u00e7\u00e3o de reembolso. Verifiquei aqui que a compra foi efetuada h\u00e1 mais de 7 dias. Como o prazo de garantia incondicional \u00e9 de 7 dias corridos, infelizmente n\u00e3o conseguiremos prosseguir com o reembolso. Caso tenha d\u00favidas sobre o acesso ou uso do produto, nossa equipe de suporte continua \u00e0 disposi\u00e7\u00e3o para te ajudar a tirar o melhor proveito dele. Atenciosamente, Alon",
        "options": {
          "appendAttribution": false
        }
      },
      "type": "n8n-nodes-base.gmail",
      "typeVersion": 2.2,
      "position": [
        1040,
        -144
      ],
      "id": "83ea6981-a7f7-41b1-9fbc-dd6fbea1ae4d",
      "name": "Gmail: Send Deadline Expired Email",
      "credentials": {
        "gmailOAuth2": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "documentId": {
          "__rl": true,
          "value": "={{ $env.SHEETS_REFUND_ID }}",
          "mode": "id"
        },
        "sheetName": {
          "__rl": true,
          "value": "={{ $env.SHEETS_REFUND_TAB_NAME }}",
          "mode": "name"
        },
        "options": {}
      },
      "type": "n8n-nodes-base.googleSheetsTool",
      "typeVersion": 4.7,
      "position": [
        304,
        224
      ],
      "id": "7f43d711-678d-4675-aecc-993dcbc143db",
      "name": "Sheets: Read Customer Database",
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "chatId": "={{ $env.TELEGRAM_REFUND_CHAT_ID}}",
        "text": "=\u26a0\ufe0f Aten\u00e7\u00e3o aqui, gente.\n\nTemos um cliente que pediu reembolso fora do prazo, mas mandou uma mensagem bem pesada..\n\nO coment\u00e1rio dele foi esse: \"{{ $('Agent: Process Refund Logic').item.json.output.comentario }}\"\n\nPra evitar que ele v\u00e1 pro Reclame Aqui ou procon, eu j\u00e1 respondi dizendo que escalei o caso pra ger\u00eancia. Conseguem dar uma aten\u00e7\u00e3o pra esse caso por favor?\n\nCliente: {{ $('Agent: Process Refund Logic').item.json.output.nome }}\nE-mail: {{ $('Agent: Process Refund Logic').item.json.output.email }}\nProduto: {{ $('Agent: Process Refund Logic').item.json.output.produto_reembolso }}",
        "additionalFields": {
          "appendAttribution": false
        }
      },
      "type": "n8n-nodes-base.telegram",
      "typeVersion": 1.2,
      "position": [
        1424,
        304
      ],
      "id": "d71b9117-2143-4a6a-86f4-20e2562e242f",
      "name": "Telegram: Complaining Customer Alert",
      "credentials": {
        "telegramApi": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "chatId": "={{ $env.TELEGRAM_REFUND_CHAT_ID}}",
        "text": "=[Pedido de Reembolso fora do Prazo] \n\nPessoal, chegou um pedido de reembolso de um cliente que estourou o prazo de 7 dias (t\u00e1 com {{ $('Agent: Process Refund Logic').item.json.output.dias_desde_compra }} dias).\n\nO sistema barrou, mas como ele \u00e9 VIP, pe\u00e7o que verifiquem com aten\u00e7\u00e3o e avaliem reembolsar o aluno.\n\nAvisei pra ele que a gente ia analisar com carinho e dar um retorno em 24h. Conseguem ver com o financeiro se liberamos essa exce\u00e7\u00e3o pra n\u00e3o perder o cliente?\n\nCliente: {{ $('Agent: Process Refund Logic').item.json.output.nome }}\nE-mail: {{ $('Agent: Process Refund Logic').item.json.output.email }}\nProduto: {{ $('Agent: Process Refund Logic').item.json.output.produto_reembolso }}",
        "additionalFields": {
          "appendAttribution": false
        }
      },
      "type": "n8n-nodes-base.telegram",
      "typeVersion": 1.2,
      "position": [
        1424,
        80
      ],
      "id": "2395ae37-9046-4bf3-9134-2074f73e2209",
      "name": "Telegram: VIP Customer Alert",
      "credentials": {
        "telegramApi": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "sendTo": "={{ $('Agent: Process Refund Logic').item.json.output.email }}",
        "subject": "Atualiza\u00e7\u00e3o sobre seu pedido de reembolso",
        "message": "=Ol\u00e1, {{ $('Agent: Process Refund Logic').item.json.output.nome }}.\nRecebi sua solicita\u00e7\u00e3o de reembolso. Notei que o prazo contratual de 7 dias j\u00e1 expirou, que \u00e9 o prazo de garantia do produto.\nPor\u00e9m, como voc\u00ea \u00e9 um dos nossos melhores clientes, n\u00e3o quero encerrar seu caso automaticamente. Encaminhei seu pedido pessoalmente para a nossa equipe financeira analisar uma exce\u00e7\u00e3o.\nEm at\u00e9 24h a nossa equipe entrar\u00e1 em contato com voc\u00ea para dar um retorno.\nAtenciosamente, \nAlon",
        "options": {
          "appendAttribution": false
        }
      },
      "type": "n8n-nodes-base.gmail",
      "typeVersion": 2.2,
      "position": [
        1216,
        80
      ],
      "id": "c52d1c3f-3fc6-429e-9f98-2933dc2bc355",
      "name": "Gmail: Send VIP Refund Notification",
      "credentials": {
        "gmailOAuth2": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "sendTo": "={{ $('Agent: Process Refund Logic').item.json.output.email }}",
        "subject": "Recebemos sua mensagem - Caso escalado para a Ger\u00eancia",
        "message": "=Ol\u00e1, {{ $('Agent: Process Refund Logic').item.json.output.nome }}.\nLi atentamente seu coment\u00e1rio e lamento sua insatisfa\u00e7\u00e3o.\nO sistema identificou que a compra est\u00e1 fora do prazo de garantia de 7 dias. No entanto, dada a seriedade do seu relato, optei por n\u00e3o finalizar o atendimento por aqui.\nEscalei seu caso com prioridade para o nosso gerente de suporte. Ele vai analisar a situa\u00e7\u00e3o e retornar\u00e1 o contato o mais breve poss\u00edvel para resolvermos isso.\nAtenciosamente, \nAlon",
        "options": {
          "appendAttribution": false
        }
      },
      "type": "n8n-nodes-base.gmail",
      "typeVersion": 2.2,
      "position": [
        1216,
        304
      ],
      "id": "507c4dbf-b4a9-473a-8caa-0e631c66d3cd",
      "name": "Gmail: Send Critical Support Reply",
      "credentials": {
        "gmailOAuth2": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "chatId": "={{ $env.TELEGRAM_REFUND_CHAT_ID}}",
        "text": "=[Pedido de Reembolso]\n\nPessoal, chegou um pedido de reembolso de um cliente dentro do prazo de 7 dias.\n\nO coment\u00e1rio dele foi esse: \"{{ $('Agent: Process Refund Logic').item.json.output.comentario }}\"\n\nCliente: {{ $('Agent: Process Refund Logic').item.json.output.nome }}\nE-mail: {{ $('Agent: Process Refund Logic').item.json.output.email }}\nProduto: {{ $('Agent: Process Refund Logic').item.json.output.produto_reembolso }}",
        "replyMarkup": "=none",
        "forceReply": {},
        "replyKeyboardOptions": {},
        "replyKeyboardRemove": {},
        "additionalFields": {
          "appendAttribution": false
        }
      },
      "type": "n8n-nodes-base.telegram",
      "typeVersion": 1.2,
      "position": [
        1040,
        544
      ],
      "id": "63b00939-1382-4cfb-bd82-2173db954836",
      "name": "Telegram: Alert New Refund Request",
      "credentials": {
        "telegramApi": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "promptType": "define",
        "text": "={{ $json.body.data.fields }}",
        "hasOutputParser": true,
        "options": {
          "systemMessage": "=Voc\u00ea \u00e9 um agente que processa respostas de um formul\u00e1rio de reembolso.\n\nVoc\u00ea deve trabalhar apenas com os dados recebidos na entrada e pela planilha contida na tool.\n\nAs informa\u00e7\u00f5es que voc\u00ea ir\u00e1 precisar retornar s\u00e3o as seguintes:\n\n- nome: Nome do cliente proveniente do formul\u00e1rio\n- email: E-mail do cliente proveniente do formul\u00e1rio\n- produto_reembolso: De qual produto o cliente est\u00e1 pedindo reembolso, proveniente do formul\u00e1rio\n- comentario: Coment\u00e1rio por escrito do cliente, proveniente do formul\u00e1rio\n- sentimento: Uma an\u00e1lise de sentimento a partir do coment\u00e1rio do cliente no formul\u00e1rio (instru\u00e7\u00f5es mais \u00e0 frente no prompt)\n- cliente_encontrado: uma informa\u00e7\u00e3o de verdadeiro ou falso informando se encontrou o cliente na planilha (tool)\n- nome_completo: Nome do cliente proveniente da planilha (tool)\n- total_gasto_cliente: Valor total gasto pelo cliente proveniente da planilha (tool)\n- dias_desde_compra: h\u00e1 quantos dias o cliente fez a \u00faltima compra, calculado a partir dos dados da planilha (instru\u00e7\u00f5es mais \u00e0 frente no prompt)\n\n\n\nSiga rigorosamente as etapas abaixo.\n\n---\n\n### 1) Extra\u00e7\u00e3o dos campos do formul\u00e1rio\nExtraia os seguintes campos da resposta do formul\u00e1rio:\n- Nome\n- Email\n- Qual produto que voc\u00ea deseja reembolso?\n- Comente aqui o que houve\n\nSe algum campo de texto n\u00e3o existir, retorne um texto vazio \"\".\n\n---\n\n### 2) Busca do cliente na base\n- Normalize o email (trim + lowercase).\n- Use o email como \u00daNICA chave para buscar o cliente na base (Google Sheets) via tool.\n- Nunca invente dados do cliente.\n\n- Se encontrar o cliente:\n  - cliente_encontrado = true\n  - Preencha com os dados exatos da planilha:\n    - nome_completo: valor da coluna \"nome_cliente\"\n    - total_gasto_cliente: valor da coluna \"total_gasto_cliente\"\n\n- Se n\u00e3o encontrar o cliente na planilha:\n  - cliente_encontrado = false\n  - nome_completo: \u201c\u201d\n  - total_gasto_cliente: \u201c\u201d\n\n\n\n\n---\n\n### 3) Datas e prazo\n- Calcule a informa\u00e7\u00e3o dias_desde_compra, subtraindo a data atual da data da \u00faltima compra do cliente\n- A data da \u00faltima compra vem da planilha na tool na coluna data_ultima_compra.\n- A data atual: {{ $now }}\n- Considere apenas a parte da data (dia/m\u00eas/ano) e ignore o hor\u00e1rio\n- Voc\u00ea N\u00c3O deve gerar data atual por conta pr\u00f3pria.\n\nCom essas duas datas:\n- Calcule a quantidade de dias corridos entre data_atual e data_ultima_compra.\n- O c\u00e1lculo deve considerar apenas dias corridos.\n- Se data_ultima_compra ou data_atual n\u00e3o existirem, dias_desde_compra deve ser 0 (zero).\n\n\u26a0\ufe0f Importante:\n- Voc\u00ea N\u00c3O deve decidir aprova\u00e7\u00e3o ou nega\u00e7\u00e3o de reembolso.\n- Apenas calcule e informe os dias desde a compra.\n\n---\n\n### 4) An\u00e1lise de sentimento\nAnalise exclusivamente o texto do campo \"Comente aqui o que houve\" e classifique em:\n- positivo\n- neutro\n- negativo\n- muito_negativo\n\nCrit\u00e9rios:\nPOSITIVO: Texto educado ou positivo.\nNEUTRO: Texto objetivo, calmo ou vazio.\nNEGATIVO: Frustra\u00e7\u00e3o clara ou tom r\u00edspido.\nMUITO_NEGATIVO: Agressivo, xingamentos, amea\u00e7as de procon, processos, reclame aqui ou outros tipos de amea\u00e7a ou CAPS LOCK.\n\nNa d\u00favida entre negativo e muito negativo, seja conservador, escolha negativo.\n\n---\n\n### 5) Formato de sa\u00edda (OBRIGAT\u00d3RIO)\nRetorne APENAS um JSON cru.\nN\u00c3O use markdown (sem ```json).\n\nExemplo de estrutura desejada:\n\n{\n  \"nome\": \"Texto ou vazio\",\n  \"email\": \"Texto ou vazio\",\n  \"produto_reembolso\": \"Texto ou vazio\",\n  \"comentario\": \"Texto ou vazio\",\n  \"sentimento\": \"Texto ou vazio\",\n  \"cliente_encontrado\": true ou false,\n  \"nome_completo\": \"Texto ou vazio\",\n  \"total_gasto_cliente\": numero,\n  \"dias_desde_compra\": numero,\n  }\n"
        }
      },
      "type": "@n8n/n8n-nodes-langchain.agent",
      "typeVersion": 3.1,
      "position": [
        208,
        0
      ],
      "id": "06fca38d-a028-4235-a7b1-36605822c535",
      "name": "Agent: Process Refund Logic"
    },
    {
      "parameters": {
        "conditions": {
          "options": {
            "caseSensitive": true,
            "leftValue": "",
            "typeValidation": "strict",
            "version": 3
          },
          "conditions": [
            {
              "id": "8cbd75b5-4585-4a19-93d5-9fd0dd870979",
              "leftValue": "={{ $json.output.dias_desde_compra }}",
              "rightValue": 7,
              "operator": {
                "type": "number",
                "operation": "gt"
              }
            }
          ],
          "combinator": "and"
        },
        "options": {}
      },
      "type": "n8n-nodes-base.if",
      "typeVersion": 2.3,
      "position": [
        560,
        0
      ],
      "id": "12ef0a2e-6997-4af8-908b-5e4fe0591a0b",
      "name": "IF: Refund Deadline Expired?"
    },
    {
      "parameters": {
        "conditions": {
          "options": {
            "caseSensitive": true,
            "leftValue": "",
            "typeValidation": "strict",
            "version": 3
          },
          "conditions": [
            {
              "id": "75f80ee2-7f13-441f-9555-5cf8c2952d42",
              "leftValue": "={{ $('Agent: Process Refund Logic').item.json.output.total_gasto_cliente }}",
              "rightValue": 3000,
              "operator": {
                "type": "number",
                "operation": "lt"
              }
            },
            {
              "id": "6f0c4af1-9546-4e1f-9e5d-65c2c96cf370",
              "leftValue": "={{ $('Agent: Process Refund Logic').item.json.output.sentimento }}",
              "rightValue": "muito_negativo",
              "operator": {
                "type": "string",
                "operation": "notEquals"
              }
            }
          ],
          "combinator": "and"
        },
        "options": {}
      },
      "type": "n8n-nodes-base.if",
      "typeVersion": 2.3,
      "position": [
        832,
        -144
      ],
      "id": "463f946a-f200-4d1a-8654-945fd32eb280",
      "name": "IF: Standard Customer?"
    },
    {
      "parameters": {
        "conditions": {
          "options": {
            "caseSensitive": true,
            "leftValue": "",
            "typeValidation": "strict",
            "version": 3
          },
          "conditions": [
            {
              "id": "9fa5c00e-b3b6-40bb-af42-eafcdf1454f5",
              "leftValue": "={{ $('Agent: Process Refund Logic').item.json.output.total_gasto_cliente }}",
              "rightValue": 3000,
              "operator": {
                "type": "number",
                "operation": "gte"
              }
            }
          ],
          "combinator": "and"
        },
        "options": {}
      },
      "type": "n8n-nodes-base.if",
      "typeVersion": 2.3,
      "position": [
        992,
        80
      ],
      "id": "6f4ff1ae-9f1c-493f-be92-ea465ad9d03a",
      "name": "IF: Is VIP?"
    }
  ],
  "connections": {
    "Webhook": {
      "main": [
        [
          {
            "node": "Agent: Process Refund Logic",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Google Gemini Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "Agent: Process Refund Logic",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Structured Output Parser (json)": {
      "ai_outputParser": [
        [
          {
            "node": "Agent: Process Refund Logic",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "Gmail: Send Retention Email": {
      "main": [
        [
          {
            "node": "Telegram: Alert New Refund Request",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Sheets: Read Customer Database": {
      "ai_tool": [
        [
          {
            "node": "Agent: Process Refund Logic",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Gmail: Send VIP Refund Notification": {
      "main": [
        [
          {
            "node": "Telegram: VIP Customer Alert",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Gmail: Send Critical Support Reply": {
      "main": [
        [
          {
            "node": "Telegram: Complaining Customer Alert",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Agent: Process Refund Logic": {
      "main": [
        [
          {
            "node": "IF: Refund Deadline Expired?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "IF: Refund Deadline Expired?": {
      "main": [
        [
          {
            "node": "IF: Standard Customer?",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Gmail: Send Retention Email",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "IF: Standard Customer?": {
      "main": [
        [
          {
            "node": "Gmail: Send Deadline Expired Email",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "IF: Is VIP?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "IF: Is VIP?": {
      "main": [
        [
          {
            "node": "Gmail: Send VIP Refund Notification",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Gmail: Send Critical Support Reply",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "active": false,
  "settings": {
    "executionOrder": "v1",
    "binaryMode": "separate",
    "availableInMCP": false
  },
  "versionId": "4e6ad1d9-5fa2-4ed2-beb9-b09de5be8a67",
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "id": "acSwxzE30DlhTUn2Yw2pP",
  "tags": []
}

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

process-refund-logic-agent. Uses lmChatGoogleGemini, outputParserStructured, gmail, googleSheetsTool. Webhook trigger; 19 nodes.

Source: https://github.com/SamuelDinizTenorio/imersao-agentes-ia-hashtag/blob/94f45a68319359a24da0760a250b00af8a7a6298/workflows/lesson-02/process-refund-logic-agent.json — 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

leads. Uses supabase, gmail, formTrigger, httpRequest. Webhook trigger; 62 nodes.

Supabase, Gmail, Form Trigger +13
AI & RAG

This workflow is an AI-powered Dental Appointment Assistant that automates appointment booking, rescheduling, and cancellations through Telegram or a Webhook. It uses intelligent agents to understand

Memory Buffer Window, Output Parser Structured, Mcp Client Tool +12
AI & RAG

Are you drowning in daily operational chaos, desperately trying to juggle sales, projects, content, and client communication? Imagine an AI brain that handles it all, freeing you to lead your business

Telegram Trigger, Telegram, OpenAI +13
AI & RAG

Enhance your support, onboarding, and internal knowledge workflows with an intelligent RAG-powered chatbot that responds using live data stored in Google Sheets. 🤖📚 Built for teams that rely on struct

Chat Trigger, Output Parser Structured, Memory Buffer Window +6
AI & RAG

This automation is designed to help you generate AI-powered music tracks, cover art, and fully rendered music videos — all triggered from a simple Telegram chat and managed via Google Sheets.

OpenAI Chat, Memory Buffer Window, Output Parser Structured +11