AutomationFlowsGeneral › Webhook to CSV Report & Email

Webhook to CSV Report & Email

Original n8n title: N8n Workflow (local File Trigger)

N8N Workflow. Uses localFileTrigger, executeCommand, readWriteFile. Event-driven trigger; 16 nodes.

Event trigger★★★★☆ complexity16 nodesLocal File TriggerExecute CommandRead Write File
General Trigger: Event Nodes: 16 Complexity: ★★★★☆ Added:

This workflow follows the Executecommand → Readwritefile 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
{
  "nodes": [
    {
      "parameters": {
        "httpMethod": "POST",
        "path": "2dfeafbc-a71c-4ede-aa47-c74677c99b3f",
        "options": {}
      },
      "type": "n8n-nodes-base.webhook",
      "typeVersion": 2,
      "position": [
        0,
        0
      ],
      "id": "92b70250-4bf1-40c2-99db-d365a220268b",
      "name": "Webhook"
    },
    {
      "parameters": {
        "assignments": {
          "assignments": [
            {
              "id": "2c8f826b-6a7b-47c5-b9a6-47b6abef545a",
              "name": "nome_usuario",
              "value": "={{ $json.body.sender.name }}",
              "type": "string"
            },
            {
              "id": "f8a59b72-6a3d-48fd-82ad-6e853648b4e4",
              "name": "telefone_usuario",
              "value": "={{ $json.body.sender.phone_number }}",
              "type": "string"
            },
            {
              "id": "93dd8175-d019-4daa-82de-a76bb916d5e4",
              "name": "mensagem_texto",
              "value": "={{ $json.body.content }}",
              "type": "string"
            },
            {
              "id": "d617fe58-084b-4786-96aa-c8a115d2973a",
              "name": "tipo_anexo",
              "value": "={{ $json.body.attachments[0].file_type }}",
              "type": "string"
            },
            {
              "id": "85ae7af9-dc74-4f71-9db0-d13e89b6347f",
              "name": "url_anexo",
              "value": "={{ $json.body.attachments[0].data_url }}",
              "type": "string"
            },
            {
              "id": "b15aa0df-9245-43ef-903c-278b0ede6e12",
              "name": "id_conta",
              "value": "={{ $json.body.account.id }}",
              "type": "string"
            },
            {
              "id": "79b8d19f-5439-4dd6-bfa6-bbd08e3b7f6e",
              "name": "id_conversa",
              "value": "={{ $json.body.conversation.id }}",
              "type": "string"
            },
            {
              "id": "69c104c3-c797-437e-a950-c6ba3fd49c42",
              "name": "url_chatwoot",
              "value": "<url do seu Chatwoot>",
              "type": "string"
            }
          ]
        },
        "options": {}
      },
      "type": "n8n-nodes-base.set",
      "typeVersion": 3.4,
      "position": [
        260,
        0
      ],
      "id": "d984b16b-462b-4fa3-b492-afe0f719a52f",
      "name": "Vari\u00e1veis"
    },
    {
      "parameters": {
        "rules": {
          "values": [
            {
              "conditions": {
                "options": {
                  "caseSensitive": true,
                  "leftValue": "",
                  "typeValidation": "strict",
                  "version": 2
                },
                "conditions": [
                  {
                    "leftValue": "={{ $json.mensagem_texto }}",
                    "rightValue": "",
                    "operator": {
                      "type": "string",
                      "operation": "notEmpty",
                      "singleValue": true
                    },
                    "id": "da50279f-f1ad-4ed6-9540-13eb0b240f33"
                  }
                ],
                "combinator": "and"
              },
              "renameOutput": true,
              "outputKey": "Texto"
            },
            {
              "conditions": {
                "options": {
                  "caseSensitive": true,
                  "leftValue": "",
                  "typeValidation": "strict",
                  "version": 2
                },
                "conditions": [
                  {
                    "id": "aa8e2f09-4af1-4734-a015-8fe4bd08d39e",
                    "leftValue": "={{ $json.tipo_anexo }}",
                    "rightValue": "image",
                    "operator": {
                      "type": "string",
                      "operation": "equals"
                    }
                  }
                ],
                "combinator": "and"
              },
              "renameOutput": true,
              "outputKey": "Imagem"
            }
          ]
        },
        "options": {
          "fallbackOutput": "extra",
          "renameFallbackOutput": "Outro"
        }
      },
      "type": "n8n-nodes-base.switch",
      "typeVersion": 3.2,
      "position": [
        500,
        0
      ],
      "id": "ae345d6d-ef7d-4fcb-aa3e-9324e0b685f9",
      "name": "Tipo de mensagem"
    },
    {
      "parameters": {
        "method": "POST",
        "url": "={{ $('Vari\u00e1veis').item.json.url_chatwoot }}/api/v1/accounts/{{ $('Vari\u00e1veis').item.json.id_conta }}/conversations/{{ $('Vari\u00e1veis').item.json.id_conversa }}/messages",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth",
        "sendBody": true,
        "bodyParameters": {
          "parameters": [
            {
              "name": "content",
              "value": "=Desculpa {{ $('Vari\u00e1veis').item.json.nome_usuario }}, eu n\u00e3o suporto esse tipo de mensagem!\n\nTente de novo com texto ou imagem."
            }
          ]
        },
        "options": {}
      },
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [
        780,
        440
      ],
      "id": "f1ffdd4b-3020-4d9f-b56b-6f73621d30fc",
      "name": "Enviar mensagem n\u00e3o suportada",
      "credentials": {}
    },
    {
      "parameters": {
        "modelName": "models/gemini-2.5-pro-preview-05-06",
        "options": {}
      },
      "type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
      "typeVersion": 1,
      "position": [
        1740,
        200
      ],
      "id": "7f4f4f59-0f07-4b71-8a79-54e76c7c677d",
      "name": "Google Gemini Chat Model",
      "credentials": {}
    },
    {
      "parameters": {
        "sessionIdType": "customKey",
        "sessionKey": "={{ $('Vari\u00e1veis').item.json.telefone_usuario }}",
        "contextWindowLength": 10
      },
      "type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
      "typeVersion": 1.3,
      "position": [
        1880,
        200
      ],
      "id": "d16d6a95-1b7c-4b21-847c-aa4d7abe7333",
      "name": "Simple Memory"
    },
    {
      "parameters": {
        "toolDescription": "Use esse ferramenta para buscar informa\u00e7\u00f5es sobre restaurantes e outros estabelecimentos perto da localiza\u00e7\u00e3o do usu\u00e1rio.\n\nA formata\u00e7\u00e3o da localiza\u00e7\u00e3o deve seguir um formato muito espec\u00edfico, **UTILIZE ELE**. Exemplo:\n\nO usu\u00e1rio perguntou sobre a cidade de S\u00e3o Paulo -> \"Sao Paulo, State of Sao Paulo, Brazil\"\n\n**N\u00c3O USE ACENTOS NOS NOMES DAS CIDADES ESTADOS OU PA\u00cdSES**",
        "url": "https://serpapi.com/search",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpQueryAuth",
        "sendQuery": true,
        "queryParameters": {
          "parameters": [
            {
              "name": "q",
              "value": "={{ $fromAI('termo_pesquisa', `O termo a ser pesquisado.`, 'string') }}"
            },
            {
              "name": "location",
              "value": "={{ $fromAI('localizacao', `A localiza\u00e7\u00e3o da pesquisa. ATEN\u00c7\u00c3O!! N\u00c3O USE ACENTOS NOS NOMES`, 'string') }}"
            },
            {
              "name": "hl",
              "value": "pt-br"
            },
            {
              "name": "gl",
              "value": "br"
            }
          ]
        },
        "options": {}
      },
      "type": "n8n-nodes-base.httpRequestTool",
      "typeVersion": 4.2,
      "position": [
        2160,
        200
      ],
      "id": "63a1917d-6720-4c34-b8ed-288337a8606b",
      "name": "Buscar locais de interesse",
      "credentials": {}
    },
    {
      "parameters": {
        "method": "POST",
        "url": "={{ $('Vari\u00e1veis').item.json.url_chatwoot }}/api/v1/accounts/{{ $('Vari\u00e1veis').item.json.id_conta }}/conversations/{{ $('Vari\u00e1veis').item.json.id_conversa }}/messages",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth",
        "sendBody": true,
        "bodyParameters": {
          "parameters": [
            {
              "name": "content",
              "value": "={{ $('Assistente de viagens').item.json.output }}"
            }
          ]
        },
        "options": {}
      },
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [
        2260,
        -20
      ],
      "id": "811e725d-1a53-4823-ba94-fb67119b5f3a",
      "name": "Responder usu\u00e1rio.",
      "credentials": {}
    },
    {
      "parameters": {
        "promptType": "define",
        "text": "={{  $('Tipo de mensagem').item.json.mensagem_texto || $('Extrair dados comprovante').item.json.candidates[0].content.parts[0].text }}\n\n{{ $('Upload arquivo').isExecuted ? 'Link do comprovante: ' + $('Upload arquivo').item.json.webViewLink : '' }}",
        "options": {
          "systemMessage": "=Agora s\u00e3o {{ $now.format('FFFF') }}.\n\nO nome do usu\u00e1rio falando com voc\u00ea \u00e9 {{ $('Vari\u00e1veis').item.json.nome_usuario }}.\n\n## Papel\n\nVoc\u00ea \u00e9 uma assistente de viagens, respons\u00e1vel por ajudar o usu\u00e1rio com o que ele precisar durante a viagem.\n\n## Tarefas\n\n### Buscar locais de interesse\n\nO usu\u00e1rio poder\u00e1 te pedir sugest\u00f5es de locais para ele poder ir, como restaurantes ou churrascarias. Veja abaixo as prefer\u00eancias do usu\u00e1rio, busque locais com a ferramenta \"Buscar locais de interesse\", e filtre a sa\u00edda conforme as prefer\u00eancias.\n\nInclua na resposta pelo menos o nome e o endere\u00e7o do local.\n\n#### Gostos do usu\u00e1rio\n\n- Macarr\u00e3o: carbonara\n- Pizza: calabresa\n- Carnes: costela, churrasco, cupim\n\n#### Como pesquisar\n\nDependendo do que o usu\u00e1rio quiser comer, a pesquisa dever\u00e1 ser para o tipo de estabelecimento que serve esse prato, na cidade que ele est\u00e1. Por exemplo:\n\n- \"Quero comer X\"\n- Termo de pesquisa: \"X em <cidade da pesquisa>\"\n\n### Salvar despesa\n\nA entrada do usu\u00e1rio pode conter informa\u00e7\u00f5es extra\u00eddas de um comprovante de alguma despesa durante a viagem. Extraia as informa\u00e7\u00f5es relevantes para salvar essa despesa em uma planilha, utilizando a ferramenta \"Salvar despesa\". Note que o usu\u00e1rio pode incluir ou n\u00e3o um link para o arquivo do comprovante.\n\n- Use v\u00edrgulas para a casa decimal dos valores: \"200,00\". *N\u00c3O USE PONTO PARA CASA DECIMAL*\n- Use o formato \"DD/MM/YYYY HH:MM:SS\" para a data das despesas.\n- Caso n\u00e3o seja informado a data da despesa, use a data e hora atual, informando o usu\u00e1rio que voc\u00ea fez isso.\n- Ao salvar a despesa, **SEMPRE INFORME AO USU\u00c1RIO OS DADOS QUE FORAM SALVOS**\n- Ao informar para o usu\u00e1rio, formate o valor como \"R$ 100,00\"\n\n### Listar despesas\n\nUse a ferramenta \"Listar despesas\" para buscar informa\u00e7\u00f5es de despesas solicitadas pelo usu\u00e1rio.\n\n## Notas\n\nA sua sa\u00edda ser\u00e1 usada numa mensagem de WhatsApp, portanto se atente a formata\u00e7\u00e3o.\n\n- Para texto em negrito, use apenas um asterisco (*), n\u00e3o dois (**).\n- N\u00e3o inclua links dos comprovantes na sa\u00edda."
        }
      },
      "type": "@n8n/n8n-nodes-langchain.agent",
      "typeVersion": 1.9,
      "position": [
        1860,
        -20
      ],
      "id": "5a3a70a2-5f61-4402-8ffd-e8b6dd2ba633",
      "name": "Assistente de viagens"
    },
    {
      "parameters": {
        "descriptionType": "manual",
        "toolDescription": "Use essa ferramenta para salvar uma despesa na planilha.\n\nO link de anexo para o comprovante \u00e9 opcional.",
        "operation": "append",
        "documentId": {
          "__rl": true,
          "value": "",
          "mode": "list"
        },
        "sheetName": {
          "__rl": true,
          "value": "",
          "mode": "list"
        },
        "columns": {
          "mappingMode": "defineBelow",
          "value": {
            "Despesa": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Despesa', ``, 'string') }}",
            "Data e hora": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Data_e_hora', ``, 'string') }}",
            "Categoria": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Categoria', ``, 'string') }}",
            "Valor": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Valor', ``, 'string') }}",
            "Anexo comprovante": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Anexo_comprovante', ``, 'string') }}"
          },
          "matchingColumns": [],
          "schema": [
            {
              "id": "Despesa",
              "displayName": "Despesa",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "Data e hora",
              "displayName": "Data e hora",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "Categoria",
              "displayName": "Categoria",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "Valor",
              "displayName": "Valor",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "Anexo comprovante",
              "displayName": "Anexo comprovante",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            }
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {
          "useAppend": true
        }
      },
      "type": "n8n-nodes-base.googleSheetsTool",
      "typeVersion": 4.6,
      "position": [
        2300,
        200
      ],
      "id": "96968dc5-7e18-4bca-bf99-416d8dd10512",
      "name": "Salvar despesa",
      "credentials": {}
    },
    {
      "parameters": {
        "documentId": {
          "__rl": true,
          "value": "",
          "mode": "list"
        },
        "sheetName": {
          "__rl": true,
          "value": "",
          "mode": "list"
        },
        "options": {}
      },
      "type": "n8n-nodes-base.googleSheetsTool",
      "typeVersion": 4.6,
      "position": [
        2440,
        200
      ],
      "id": "e5661e98-31da-440a-8204-626ea35f109c",
      "name": "Listar despesas",
      "credentials": {}
    },
    {
      "parameters": {
        "description": "Use a ferramenta para refletir sobre algo. Ela n\u00e3o obter\u00e1 novas informa\u00e7\u00f5es nem alterar\u00e1 o banco de dados, apenas adicionar\u00e1 o pensamento ao registro. Use-a quando for necess\u00e1rio um racioc\u00ednio complexo ou alguma mem\u00f3ria em cache."
      },
      "type": "@n8n/n8n-nodes-langchain.toolThink",
      "typeVersion": 1,
      "position": [
        2020,
        200
      ],
      "id": "9bf4ae6e-d2b5-4593-a75f-f0307f8ed533",
      "name": "Refletir"
    },
    {
      "parameters": {
        "url": "={{ $json.url_anexo }}",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth",
        "options": {}
      },
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [
        780,
        180
      ],
      "id": "98909137-16e4-4ada-8491-e5a0d0cd0259",
      "name": "Download imagem",
      "credentials": {}
    },
    {
      "parameters": {
        "method": "POST",
        "url": "=https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash-preview-05-20:generateContent",
        "authentication": "predefinedCredentialType",
        "nodeCredentialType": "googlePalmApi",
        "sendBody": true,
        "specifyBody": "json",
        "jsonBody": "={\n  \"contents\": [{\n    \"parts\":[\n      {\"text\": \"Extraia as informa\u00e7\u00f5es dessa imagem. N\u00e3o inclua nenhum coment\u00e1rio adicional, al\u00e9m do conte\u00fado extra\u00eddo da imagem.\"},\n      {\n        \"inline_data\": {\n          \"mime_type\": \"image/jpeg\",\n          \"data\": \"{{ $json.data }}\"\n        }\n      }\n    ]\n  }]\n}\n",
        "options": {}
      },
      "id": "8fce4cef-c6a3-45f3-ac91-15de28c176f7",
      "name": "Extrair dados comprovante",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        1500,
        200
      ],
      "typeVersion": 4.2,
      "credentials": {}
    },
    {
      "parameters": {
        "operation": "binaryToPropery",
        "options": {}
      },
      "type": "n8n-nodes-base.extractFromFile",
      "typeVersion": 1,
      "position": [
        1040,
        280
      ],
      "id": "d42bec26-616c-452c-88dc-472bfe66b19c",
      "name": "Converter base64"
    },
    {
      "parameters": {
        "name": "={{ $binary.data.fileName }}",
        "driveId": {
          "__rl": true,
          "value": "",
          "mode": "list"
        },
        "folderId": {
          "__rl": true,
          "value": "",
          "mode": "list"
        },
        "options": {}
      },
      "type": "n8n-nodes-base.googleDrive",
      "typeVersion": 3,
      "position": [
        1040,
        100
      ],
      "id": "ecbed277-a561-4075-bdbd-694fac6bb7bd",
      "name": "Upload arquivo",
      "credentials": {}
    },
    {
      "parameters": {
        "mode": "combine",
        "combineBy": "combineAll",
        "options": {}
      },
      "type": "n8n-nodes-base.merge",
      "typeVersion": 3.1,
      "position": [
        1280,
        200
      ],
      "id": "d9403ee6-7ac1-4e45-9546-1f6a9eb52154",
      "name": "Merge",
      "executeOnce": false
    },
    {
      "parameters": {
        "content": "[![fazer.ai](https://framerusercontent.com/images/HqY9djLTzyutSKnuLLqBr92KbM.png?scale-down-to=256)](https://fazer.ai?utm_source=n8n&utm_campaign=sec-ep2&utm_medium=cw-1)\n\n## Esse \u00e9 um template fa\u00e7a voc\u00ea mesmo do canal\n## Lucas Moreira\n\n### Inscreva-se no nosso canal no YouTube\n[![YouTube Lucas Moreira](https://img.shields.io/youtube/channel/subscribers/UCtmp6SxzLscu0GRTbgM8FTw?style=flat-square&logo=youtube&label=Inscreva-se&color=f00)](https://youtube.com/@eulucassmoreira?si=0lH7hwX9pukjhmPQ)\n\n### Siga nosso GitHub\n[![GitHub fazer.ai](https://img.shields.io/badge/github-%23121011.svg?style=for-the-badge&logo=github&logoColor=white&label)](https://github.com/fazer-ai)\n",
        "height": 440,
        "width": 550,
        "color": 7
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        -20,
        -600
      ],
      "id": "5094091a-7f7f-4397-8ded-038b54d1b8b6",
      "name": "Sticky Note10"
    },
    {
      "parameters": {
        "content": "## Aprenda como fazer a melhor secret\u00e1ria IA\n\n[![IMAGE ALT TEXT HERE](https://i1.ytimg.com/vi_webp/cvTWGNJGAu4/maxresdefault.webp)](https://www.youtube.com/watch?v=cvTWGNJGAu4)",
        "height": 380,
        "width": 520,
        "color": 7
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        1440,
        -540
      ],
      "id": "4336c7a1-6c80-44fd-aad7-e98043d552a2",
      "name": "Sticky Note13"
    },
    {
      "parameters": {
        "content": "## Se gostou, me paga um caf\u00e9!\n\n![QR code pix](https://public-files.gumroad.com/ikddll0ps0mif1quf3tlrvr54h9h)",
        "height": 440,
        "width": 360,
        "color": 5
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        1060,
        -600
      ],
      "id": "b38f51c1-e476-450f-9ea5-55a2ac875725",
      "name": "Sticky Note1"
    },
    {
      "parameters": {
        "content": "[![SerpApi](https://serpapi.com/assets/SerpApi-gentle-white-dc708ed0b09596cd08db74108b88af298123eeb384e872716b61d2a0ba1a1e03.png)](https://serpapi.com)\n\n## [Clique aqui para criar sua conta gratuita no SerpApi](https://serpapi.com)",
        "height": 260,
        "width": 400,
        "color": 5
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        2000,
        360
      ],
      "id": "b6c17109-ece0-4cd8-97f9-216925986ba6",
      "name": "Sticky Note2"
    },
    {
      "parameters": {
        "content": "## Quer entender como funciona?\n\n\n### Assista o v\u00eddeo, deixe um like, e se inscreva no canal para ter acesso a mais workflows como esse!\n\n[![IMAGE ALT TEXT HERE](https://i1.ytimg.com/vi_webp/GrR4y2_MlKk/maxresdefault.webp)](https://www.youtube.com/watch?v=GrR4y2_MlKk)",
        "height": 440,
        "width": 500,
        "color": 7
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        540,
        -600
      ],
      "id": "6a16ee8a-6a35-4dba-91bd-ab6a915e935c",
      "name": "Sticky Note"
    }
  ],
  "connections": {
    "Webhook": {
      "main": [
        [
          {
            "node": "Vari\u00e1veis",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Vari\u00e1veis": {
      "main": [
        [
          {
            "node": "Tipo de mensagem",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Tipo de mensagem": {
      "main": [
        [
          {
            "node": "Assistente de viagens",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Download imagem",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Enviar mensagem n\u00e3o suportada",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Enviar mensagem n\u00e3o suportada": {
      "main": [
        []
      ]
    },
    "Google Gemini Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "Assistente de viagens",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Simple Memory": {
      "ai_memory": [
        [
          {
            "node": "Assistente de viagens",
            "type": "ai_memory",
            "index": 0
          }
        ]
      ]
    },
    "Buscar locais de interesse": {
      "ai_tool": [
        [
          {
            "node": "Assistente de viagens",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Assistente de viagens": {
      "main": [
        [
          {
            "node": "Responder usu\u00e1rio.",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Salvar despesa": {
      "ai_tool": [
        [
          {
            "node": "Assistente de viagens",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Listar despesas": {
      "ai_tool": [
        [
          {
            "node": "Assistente de viagens",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Refletir": {
      "ai_tool": [
        [
          {
            "node": "Assistente de viagens",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Download imagem": {
      "main": [
        [
          {
            "node": "Upload arquivo",
            "type": "main",
            "index": 0
          },
          {
            "node": "Converter base64",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Extrair dados comprovante": {
      "main": [
        [
          {
            "node": "Assistente de viagens",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Converter base64": {
      "main": [
        [
          {
            "node": "Merge",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "Upload arquivo": {
      "main": [
        [
          {
            "node": "Merge",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Merge": {
      "main": [
        [
          {
            "node": "Extrair dados comprovante",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
Pro

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

About this workflow

N8N Workflow. Uses localFileTrigger, executeCommand, readWriteFile. Event-driven trigger; 16 nodes.

Source: https://github.com/ark5234/clara_assignment/blob/e35b53bec50cd8973bce2a925940ece6c52e1efd/workflows/n8n_workflow.json — original creator credit. Request a take-down →

More General workflows → · Browse all categories →

Related workflows

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

General

Perfect for disaster recovery or migrating between environments, this workflow automatically identifies your most recent FTP backup and provides a manual restore capability that intelligently excludes

Email Send, Ftp, Read Write File +2
General

This n8n workflow template uses community nodes and is only compatible with the self-hosted version of n8n.

Execute Command, Read Write File
General

🎯 Purpose: Generate audio files from text scripts stored in Google Drive.

Execute Workflow Trigger, Google Drive, Read Write File +1
General

Executecommand Localfile. Uses localFileTrigger, executeCommand, lmChatMistralCloud, outputParserStructured. Event-driven trigger; 16 nodes.

Local File Trigger, Execute Command, Lm Chat Mistral Cloud +2
General

N8N Workflow. Uses executeCommand, localFileTrigger. Event-driven trigger; 7 nodes.

Execute Command, Local File Trigger