AutomationFlowsAI & RAG › AI Agente De Ia - Nutricionista

AI Agente De Ia - Nutricionista

Ai Agente de IA - Nutricionista. Uses n8n-nodes-evolution-api, lmChatOpenAi, openAi, googleSheets. Webhook trigger; 22 nodes.

Webhook trigger★★★★☆ complexityAI-powered22 nodesN8N Nodes Evolution ApiOpenAI ChatOpenAIGoogle SheetsOutput Parser StructuredAgentGoogle Sheets Tool
AI & RAG Trigger: Webhook Nodes: 22 Complexity: ★★★★☆ AI nodes: yes Added:

This workflow follows the Agent → Google Sheets 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": "Ai Agente de IA - Nutricionista",
  "nodes": [
    {
      "parameters": {
        "operation": "toBinary",
        "sourceProperty": "data.base64",
        "binaryPropertyName": "dataDownload",
        "options": {
          "fileName": "={{ $('Webhook1').item.json.body.data.pushName + '_' + $now.toFormat('dd.MM.yy.HH.mm.ss') + '.jpeg' }}\n",
          "mimeType": "={{ $json.data.mimetype }}"
        }
      },
      "type": "n8n-nodes-base.convertToFile",
      "typeVersion": 1.1,
      "position": [
        400,
        928
      ],
      "id": "a283e581-c5e3-4e34-917c-17b2beced197",
      "name": "Convert to File"
    },
    {
      "parameters": {
        "resource": "chat-api",
        "operation": "get-media-base64",
        "instanceName": "BotJornada",
        "messageId": "={{ $json.body.data.key.id }}"
      },
      "type": "n8n-nodes-evolution-api.evolutionApi",
      "typeVersion": 1,
      "position": [
        192,
        928
      ],
      "id": "7f52c744-6eda-4900-b273-a761030e4b03",
      "name": "DownloadImage",
      "retryOnFail": true,
      "waitBetweenTries": 5000,
      "credentials": {
        "evolutionApi": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "resource": "messages-api",
        "instanceName": "BotJornada",
        "remoteJid": "={{ $('Webhook1').item.json.body.data.key.remoteJid }}",
        "messageText": "={{ $json.output.resumo }}",
        "options_message": {
          "delay": 3000
        }
      },
      "type": "n8n-nodes-evolution-api.evolutionApi",
      "typeVersion": 1,
      "position": [
        1680,
        1056
      ],
      "id": "a8bd1b35-7430-49c6-891b-812edb6fa2f3",
      "name": "RespondToUser",
      "retryOnFail": true,
      "waitBetweenTries": 5000,
      "credentials": {
        "evolutionApi": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "content": "## PROCESSAMENTO DE IMAGEM",
        "height": 480,
        "width": 1000
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        -96,
        784
      ],
      "id": "7e13fc18-fb2b-41a4-b096-96c443873425",
      "name": "Sticky Note3"
    },
    {
      "parameters": {
        "rules": {
          "values": [
            {
              "conditions": {
                "options": {
                  "caseSensitive": true,
                  "leftValue": "",
                  "typeValidation": "loose",
                  "version": 2
                },
                "conditions": [
                  {
                    "leftValue": "={{ $json.body.data.message.conversation }}",
                    "rightValue": "[undefined]",
                    "operator": {
                      "type": "string",
                      "operation": "exists",
                      "singleValue": true
                    },
                    "id": "ea666ce3-c656-4b66-bde0-1869e8c8444c"
                  }
                ],
                "combinator": "and"
              },
              "renameOutput": true,
              "outputKey": "isText"
            },
            {
              "conditions": {
                "options": {
                  "caseSensitive": true,
                  "leftValue": "",
                  "typeValidation": "loose",
                  "version": 2
                },
                "conditions": [
                  {
                    "id": "4d0ea9be-fa53-410a-89da-3929f27fb844",
                    "leftValue": "={{ $json.body.data.message.imageMessage.mimetype }}",
                    "rightValue": "image/jpeg",
                    "operator": {
                      "type": "string",
                      "operation": "equals"
                    }
                  }
                ],
                "combinator": "and"
              },
              "renameOutput": true,
              "outputKey": "isImage"
            }
          ]
        },
        "looseTypeValidation": true,
        "options": {}
      },
      "type": "n8n-nodes-base.switch",
      "typeVersion": 3.2,
      "position": [
        432,
        432
      ],
      "id": "57f72e24-d606-4f06-a025-091f4b4808a5",
      "name": "TypeMessage"
    },
    {
      "parameters": {
        "model": {
          "__rl": true,
          "value": "gpt-4.1-mini",
          "mode": "list",
          "cachedResultName": "gpt-4.1-mini"
        },
        "options": {}
      },
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "typeVersion": 1.2,
      "position": [
        1104,
        1104
      ],
      "id": "9582b45a-ddb3-44ae-98d7-377da8776a23",
      "name": "OpenAI Chat Model1",
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "resource": "image",
        "operation": "analyze",
        "modelId": {
          "__rl": true,
          "value": "gpt-4o-mini",
          "mode": "list",
          "cachedResultName": "GPT-4O-MINI"
        },
        "text": "Sua tarefa \u00e9 analisar a imagem enviada e retornar uma resposta estruturada com base no conte\u00fado visual. Siga as regras abaixo **na ordem de prioridade**:\n\n1. Se a imagem for de um **prato de comida**, identifique:\n   - Os **alimentos vis\u00edveis** (por nome, como arroz, feij\u00e3o, carne, salada etc).\n   - Uma **estimativa da por\u00e7\u00e3o** de cada alimento (pequena, m\u00e9dia ou grande).\n   - A **estimativa de calorias totais** no prato.\n\nResponda exatamente no seguinte formato:\n\n\"Prato identificado\"\n\"Alimentos: [lista de alimentos com por\u00e7\u00e3o estimada]\"\n\"Calorias estimadas: [valor aproximado em kcal]\"\n\n**Exemplo:**\n\nPrato identificado\nAlimentos: arroz (m\u00e9dio), feij\u00e3o (pequeno), frango grelhado (m\u00e9dio), salada (grande)\nCalorias estimadas: 620 kcal\nProteina estimada: 40 gramas\n\n\n2. Se a imagem **n\u00e3o for de comida**, retorne:\n\n\ud83d\udc49 \"Imagem fora do contexto nutricional\"  \n\ud83d\udc49 \"Descri\u00e7\u00e3o: [descri\u00e7\u00e3o gen\u00e9rica da imagem]\"\n\n---\n\n\ud83d\udccc **Notas importantes:**\n\n- Sempre verifique se a imagem realmente mostra **comida no prato**.\n- Use nomes comuns de alimentos e **evite termos t\u00e9cnicos**.\n- Se a imagem estiver desfocada ou for inconclusiva, retorne como \"Imagem fora do contexto nutricional\" com uma descri\u00e7\u00e3o apropriada.\n\nTodas as respostas devem ser escritas **em portugu\u00eas** e seguir **exatamente o formato acima**.\n\nSe quiser, posso preparar tamb\u00e9m o prompt do segundo agente (que faz a recomenda\u00e7\u00e3o nutricional com base nos alimentos detectados). Deseja isso?\n",
        "inputType": "base64",
        "binaryPropertyName": "dataDownload",
        "options": {
          "detail": "low"
        }
      },
      "type": "@n8n/n8n-nodes-langchain.openAi",
      "typeVersion": 1.8,
      "position": [
        576,
        928
      ],
      "id": "903dfee2-53b4-4b80-b290-a6873557a95d",
      "name": "Vision",
      "retryOnFail": true,
      "waitBetweenTries": 3000,
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "content": "## GERENCIADOR DE MENSAGEM\n ",
        "height": 460,
        "width": 996
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        -96,
        304
      ],
      "id": "1f41ba99-93e9-441e-a6fe-d9ce754c34eb",
      "name": "Sticky Note6"
    },
    {
      "parameters": {
        "resource": "messages-api",
        "instanceName": "BotJornada",
        "remoteJid": "={{ $json.body.data.key.remoteJid }}",
        "messageText": "=Seja bem-vindo! \ud83d\ude04\nO que voc\u00ea comeu hoje? Me manda uma foto do seu prato e eu te conto quantas calorias tem a\u00ed!",
        "options_message": {
          "delay": 3000
        }
      },
      "type": "n8n-nodes-evolution-api.evolutionApi",
      "typeVersion": 1,
      "position": [
        688,
        336
      ],
      "id": "dc822ac9-0c8c-4cf5-9475-647c0d6cdb0b",
      "name": "WelcomeMessage",
      "credentials": {
        "evolutionApi": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "content": "## REGISTRA REFEI\u00c7\u00c3O\n",
        "height": 480,
        "width": 1000
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        928,
        784
      ],
      "id": "48e79446-20af-4142-9694-0cd84fc8a37f",
      "name": "Sticky Note7"
    },
    {
      "parameters": {
        "assignments": {
          "assignments": [
            {
              "id": "a897cbf4-f60a-493f-814d-75093074c478",
              "name": "conversation",
              "value": "=Imagem enviada pelo usu\u00e1rio: \n{{$node[\"Vision\"].json[\"content\"]}}",
              "type": "string"
            }
          ]
        },
        "options": {}
      },
      "type": "n8n-nodes-base.set",
      "typeVersion": 3.4,
      "position": [
        752,
        928
      ],
      "id": "78fc062f-4fcb-4963-8cd8-908abab3f90f",
      "name": "formatToLLM3"
    },
    {
      "parameters": {},
      "type": "n8n-nodes-base.wait",
      "typeVersion": 1.1,
      "position": [
        0,
        928
      ],
      "id": "c941dccb-a0c8-4177-8377-2bac8caee48e",
      "name": "Wait5s1"
    },
    {
      "parameters": {
        "httpMethod": "POST",
        "path": "c9d2ebfb-f621-4bbb-b9cd-394616f43aa5",
        "options": {
          "binaryPropertyName": "data"
        }
      },
      "type": "n8n-nodes-base.webhook",
      "typeVersion": 2,
      "position": [
        192,
        432
      ],
      "id": "c0e09466-a9c7-481e-a11f-e152305ce2f1",
      "name": "Webhook1"
    },
    {
      "parameters": {
        "operation": "append",
        "documentId": {
          "__rl": true,
          "value": "ID_DA_SUA_PLANILHA",
          "mode": "list",
          "cachedResultName": "registrarRefeicao",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/ID_DA_SUA_PLANILHA/edit?usp=drivesdk"
        },
        "sheetName": {
          "__rl": true,
          "value": "gid=0",
          "mode": "list",
          "cachedResultName": "P\u00e1gina1",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/ID_DA_SUA_PLANILHA/edit#gid=0"
        },
        "columns": {
          "mappingMode": "defineBelow",
          "value": {
            "data": "={{ $json.output.data }}",
            "hora": "={{ $json.output.hora }}",
            "refeicao": "={{ $json.output.refeicao }}",
            "calorias": "={{ $json.output.calorias }}",
            "proteina": "={{ $json.output.proteina }}"
          },
          "matchingColumns": [],
          "schema": [
            {
              "id": "data",
              "displayName": "data",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "hora",
              "displayName": "hora",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "refeicao",
              "displayName": "refeicao",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "calorias",
              "displayName": "calorias",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "proteina",
              "displayName": "proteina",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            }
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {}
      },
      "type": "n8n-nodes-base.googleSheets",
      "typeVersion": 4.6,
      "position": [
        1680,
        848
      ],
      "id": "a6a17b44-5cdc-482c-b301-828f83633276",
      "name": "Append row in sheet",
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "jsonSchemaExample": "{\n  \"data\": \"2025-07-24\",\n  \"hora\": \"12:45\",\n  \"refeicao\": \"Almo\u00e7o\",\n  \"calorias\": 680,\n  \"proteina\": 45,\n  \"resumo\": \"\u2705 Refei\u00e7\u00e3o registrada com sucesso! Foram aproximadamente 680 kcal e 45g de prote\u00edna no almo\u00e7o de hoje, \u00e0s 12:45. Continue firme!\"\n}\n"
      },
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "typeVersion": 1.3,
      "position": [
        1328,
        1088
      ],
      "id": "2e907174-656d-4b1c-ad54-eed6ed63ed09",
      "name": "Structured Output Parser"
    },
    {
      "parameters": {
        "assignments": {
          "assignments": [
            {
              "id": "a897cbf4-f60a-493f-814d-75093074c478",
              "name": "conversation",
              "value": "={{ $json.body.data.message.conversation }}",
              "type": "string"
            }
          ]
        },
        "options": {}
      },
      "type": "n8n-nodes-base.set",
      "typeVersion": 3.4,
      "position": [
        688,
        560
      ],
      "id": "3b69fcd7-1f1d-4779-b4a3-59d68a25b580",
      "name": "formatToLLM"
    },
    {
      "parameters": {
        "resource": "messages-api",
        "instanceName": "BotJornada",
        "remoteJid": "={{ $('Webhook1').item.json.body.data.key.remoteJid }}",
        "messageText": "={{ $json.output }}",
        "options_message": {
          "delay": 3000
        }
      },
      "type": "n8n-nodes-evolution-api.evolutionApi",
      "typeVersion": 1,
      "position": [
        1648,
        432
      ],
      "id": "a886d71e-d74b-4759-8dfa-6b6192ad4963",
      "name": "RespondToUser1",
      "retryOnFail": true,
      "waitBetweenTries": 5000,
      "credentials": {
        "evolutionApi": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "promptType": "define",
        "text": "={{ $json.conversation }}",
        "options": {
          "systemMessage": "=Voc\u00ea \u00e9 um agente nutricionista que recebe perguntas em texto pelo WhatsApp. Sua fun\u00e7\u00e3o \u00e9 interpretar essas mensagens e consultar os dados registrados anteriormente em uma planilha de alimenta\u00e7\u00e3o.\n\nVoc\u00ea conta com uma ferramenta chamada `ConsultaNutricional`, que retorna os seguintes campos por data:\n\n- data (formato YYYY-MM-DD)\n- refeicao (ex: \"almo\u00e7o\", \"jantar\", etc.)\n- calorias (valor num\u00e9rico)\n- proteina (valor num\u00e9rico)\n- hora (ex: \"12:45\")\n\n### Comportamento esperado:\n\n1. Quando o usu\u00e1rio enviar perguntas como:\n   - \"Quantas calorias eu comi hoje?\"\n   - \"Quanto de prote\u00edna j\u00e1 consumi?\"\n   - \"Qual foi minha \u00faltima refei\u00e7\u00e3o?\"\n\n2. Use a ferramenta `ConsultaNutricional` para buscar os registros da data de hoje (`{{ $now }}`).\n\n3. Some todas as calorias e prote\u00ednas do dia e responda com algo como:\n\ud83d\udc49 \"Consultei aqui pra voc\u00ea! Hoje voc\u00ea j\u00e1 consumiu **[X] kcal** e **[Y]g de prote\u00edna**.\"\n\n4. Se houver m\u00faltiplas refei\u00e7\u00f5es, voc\u00ea pode mencionar a \u00faltima refei\u00e7\u00e3o registrada tamb\u00e9m:\n\ud83d\udc49 \"Sua \u00faltima refei\u00e7\u00e3o foi \u00e0s 13:40, com 520 kcal e 38g de prote\u00edna.\"\n\n5. Se **n\u00e3o houver nenhum dado hoje**, diga:\n\ud83d\udc49 \"Ainda n\u00e3o encontrei nenhuma refei\u00e7\u00e3o registrada hoje. Que tal me mandar uma foto do seu prato agora?\"\n\n\u26a0\ufe0f Importante:\n- **N\u00e3o use nenhuma ferramenta de grava\u00e7\u00e3o.**\n- Apenas use a `ConsultaNutricional` para buscar dados.\n\nTodas as respostas devem ser em **portugu\u00eas**, com linguagem amig\u00e1vel, simples e motivadora.\n\nData de hoje: {{ $now }}\n\nSomente responder assuntos relacionados a consulta nutricional, sempre que for perguntado sobre outro assunto, voltar para o contexto de nutri\u00e7\u00e3o",
          "maxIterations": 15
        }
      },
      "type": "@n8n/n8n-nodes-langchain.agent",
      "typeVersion": 1.9,
      "position": [
        1248,
        416
      ],
      "id": "37d8deaa-7f71-4b8b-98b9-12c777a30821",
      "name": "consultaNutricional"
    },
    {
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4.1-mini"
        },
        "options": {}
      },
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "typeVersion": 1.2,
      "position": [
        1120,
        624
      ],
      "id": "fb0fbf37-639e-453c-8c30-eea813ecec68",
      "name": "OpenAI Chat Model",
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "documentId": {
          "__rl": true,
          "value": "ID_DA_SUA_PLANILHA",
          "mode": "list",
          "cachedResultName": "registrarRefeicao",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/ID_DA_SUA_PLANILHA/edit?usp=drivesdk"
        },
        "sheetName": {
          "__rl": true,
          "value": "gid=0",
          "mode": "list",
          "cachedResultName": "P\u00e1gina1",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/ID_DA_SUA_PLANILHA/edit#gid=0"
        },
        "options": {}
      },
      "type": "n8n-nodes-base.googleSheetsTool",
      "typeVersion": 4.6,
      "position": [
        1456,
        624
      ],
      "id": "24735dd1-6716-46ef-a764-569257f35b1f",
      "name": "consultaNutricional1",
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "promptType": "define",
        "text": "={{ $json.conversation }}",
        "hasOutputParser": true,
        "options": {
          "systemMessage": "=Voc\u00ea \u00e9 um agente nutricionista que recebe uma mensagem de texto contendo o resultado da an\u00e1lise de uma imagem de um prato de comida. Sua tarefa \u00e9 interpretar esse conte\u00fado e gerar uma resposta no formato JSON estruturado.\n\nA resposta **deve seguir exatamente** o seguinte formato:\n\n{\n  \"data\": \"YYYY-MM-DD\",\n  \"hora\": \"HH:mm\",\n  \"refeicao\": \"[descri\u00e7\u00e3o completa da refei\u00e7\u00e3o com alimentos e por\u00e7\u00f5es]\",\n  \"calorias\": [n\u00famero inteiro],\n  \"proteina\": [n\u00famero inteiro],\n  \"source\": \"whatsapp\",\n  \"resumo\": \"\u2705 Refei\u00e7\u00e3o registrada com sucesso! Foram aproximadamente [calorias] kcal e [proteina]g de prote\u00edna. Continue assim!\"\n}\n\n### Regras:\n\n* Use a **data e hora atual** no formato correto (ex: `\"2025-07-24\"` e `\"12:45\"`).\n* O campo `refeicao` deve conter a descri\u00e7\u00e3o dos alimentos com por\u00e7\u00f5es, exatamente como foi extra\u00eddo da an\u00e1lise (ex: \"arroz (m\u00e9dio), feij\u00e3o (m\u00e9dio), carne mo\u00edda (m\u00e9dia), salada (pequena)\").\n* O campo `source` **deve sempre ser** `\"whatsapp\"`.\n* O campo `resumo` deve ser uma mensagem amig\u00e1vel que ser\u00e1 enviada ao usu\u00e1rio confirmando o registro da refei\u00e7\u00e3o, com os valores de calorias e prote\u00ednas inseridos dinamicamente.\n\n### Se n\u00e3o for poss\u00edvel identificar calorias, prote\u00ednas ou alimentos com clareza:\n\n* Retorne **apenas**:\n\n{\n  \"resumo\": \"N\u00e3o consegui interpretar corretamente essa imagem. Pode enviar uma foto mais n\u00edtida, por favor?\"\n}\n```\n\nTodas as respostas devem estar em **portugu\u00eas**. Seja objetivo, acolhedor e motivador.\n\nData de hoje: {{ $now }}",
          "maxIterations": 15
        }
      },
      "type": "@n8n/n8n-nodes-langchain.agent",
      "typeVersion": 1.9,
      "position": [
        1216,
        848
      ],
      "id": "93107acd-1159-4b73-a7eb-d64913848b86",
      "name": "registrarRefeicao1"
    },
    {
      "parameters": {
        "content": "## CONSULTA CALORIAS \n ",
        "height": 460,
        "width": 996
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        928,
        304
      ],
      "id": "01a5b051-3410-47cd-addb-790f0a924466",
      "name": "Sticky Note"
    }
  ],
  "connections": {
    "Convert to File": {
      "main": [
        [
          {
            "node": "Vision",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "DownloadImage": {
      "main": [
        [
          {
            "node": "Convert to File",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "TypeMessage": {
      "main": [
        [
          {
            "node": "formatToLLM",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Wait5s1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Chat Model1": {
      "ai_languageModel": [
        [
          {
            "node": "registrarRefeicao1",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Vision": {
      "main": [
        [
          {
            "node": "formatToLLM3",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "WelcomeMessage": {
      "main": [
        []
      ]
    },
    "formatToLLM3": {
      "main": [
        [
          {
            "node": "registrarRefeicao1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Wait5s1": {
      "main": [
        [
          {
            "node": "DownloadImage",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Webhook1": {
      "main": [
        [
          {
            "node": "TypeMessage",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Structured Output Parser": {
      "ai_outputParser": [
        [
          {
            "node": "registrarRefeicao1",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "formatToLLM": {
      "main": [
        [
          {
            "node": "consultaNutricional",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "consultaNutricional": {
      "main": [
        [
          {
            "node": "RespondToUser1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "consultaNutricional",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "consultaNutricional1": {
      "ai_tool": [
        [
          {
            "node": "consultaNutricional",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "registrarRefeicao1": {
      "main": [
        [
          {
            "node": "RespondToUser",
            "type": "main",
            "index": 0
          },
          {
            "node": "Append row in sheet",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "61bf21ac-833d-402b-8edc-7601346acd2e",
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "id": "cinrzuSV6JnpB9ds",
  "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

Ai Agente de IA - Nutricionista. Uses n8n-nodes-evolution-api, lmChatOpenAi, openAi, googleSheets. Webhook trigger; 22 nodes.

Source: https://github.com/josefarias3108/agente_nutricionista/blob/fb1b92ef9ff545170a69dc41ec7ecd238a4af326/N8N/AiAgentedeIA-Nutricionista.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

agente wpp audio msg separada. Uses agent, lmChatOpenAi, n8n-nodes-evolution-api, toolThink. Webhook trigger; 39 nodes.

Agent, OpenAI Chat, N8N Nodes Evolution Api +6
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

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

Supabase, Gmail, Form Trigger +13
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
AI & RAG

🧠 Gwen – The AI Voice Marketing Agent Gwen is your intelligent voice-powered marketing assistant built in n8n. She combines the power of OpenAI, ElevenLabs, and automation workflows to handle content

Tool Workflow, Memory Buffer Window, Agent +10