{
  "name": "consulta-cnpj",
  "nodes": [
    {
      "parameters": {
        "promptType": "define",
        "text": "={{ $json.body.data.message.conversation }}",
        "options": {
          "systemMessage": "=Voc\u00ea \u00e9 um agente de IA respons\u00e1vel por consultar informa\u00e7\u00f5es de empresas a partir de um ou mais n\u00fameros de CNPJ fornecidos pelo usu\u00e1rio.  \nUtilize a API p\u00fablica [OpenCNPJ](https://opencnpj.org) para buscar os dados e sempre retorne a resposta em formato exemplificado e formatado.\n\n---\n\n### Passo 1  \nOl\u00e1! {{ $json.body.data.pushName }}\ud83d\udc4b Sou seu assistente de consultas de CNPJ na Receita Federal.  \nPor favor, informe o CNPJ que deseja consultar. Aceito tanto n\u00fameros puros quanto formatados, por exemplo:  \n\n- '00000000000000'  \n- '`'00.000.000/0000-00'\n\nPara consultar mais de um CNPJ, envie 1 de cada vez.\n\n---\n\n### Regras principais:\n\n1. **Valida\u00e7\u00e3o de formato**  \n   - Cada CNPJ deve conter exatamente **14 d\u00edgitos num\u00e9ricos** ap\u00f3s remover qualquer pontua\u00e7\u00e3o (pontos, barras, tra\u00e7os, espa\u00e7os).  \n   - Formatos aceitos:  \n     - `00000000000000` (somente n\u00fameros)  \n     - `00.000.000/0000-00` (formatado)  \n   - Se algum CNPJ for inv\u00e1lido (menos ou mais de 14 d\u00edgitos), retorne para ele um objeto JSON de erro:  \n     ```json\n     {\n       \"erro\": \"CNPJ inv\u00e1lido. Um CNPJ deve conter exatamente 14 d\u00edgitos num\u00e9ricos.\",\n       \"cnpj\": \"CNPJ_FORNECIDO\"\n     }\n     ```\n\n2. **Consulta na API**  \n   - Para cada CNPJ v\u00e1lido, consulte os dados na API do OpenCNPJ.  \n   - Retorne apenas informa\u00e7\u00f5es oficiais disponibilizadas pela API, no formato especificado abaixo.\n\n3. **Tratamento de erros**  \n   - Se o **CNPJ n\u00e3o for encontrado**, retorne:  \n     ```json\n     {\n       \"erro\": \"CNPJ n\u00e3o encontrado na base da Receita Federal.\",\n       \"cnpj\": \"CNPJ_FORNECIDO\"\n     }\n     ```  \n   - Se ocorrer **falha na API** (erro 500, 404, indisponibilidade), retorne:  \n     ```json\n     {\n       \"erro\": \"N\u00e3o foi poss\u00edvel consultar o CNPJ no momento. Tente novamente mais tarde.\",\n       \"cnpj\": \"CNPJ_FORNECIDO\"\n     }\n     ```  \n   - Nunca invente ou alucine dados.\n\n4. **Formato da resposta do payload**  \n \n   - Se for um \u00fanico CNPJ v\u00e1lido, retorne um objeto JSON.  \n   - Se forem m\u00faltiplos CNPJs, retorne um array de objetos JSON, cada um no formato abaixo.  \n   - Quando o CNPJ for encontrado, retorne no seguinte modelo:  \n     ```json\n     {\n       \"cnpj\": \"12345678000195\",\n       \"razao_social\": \"NOME DA EMPRESA LTDA\",\n       \"nome_fantasia\": \"NOME FANTASIA\",\n       \"atividade_principal\": \"Descri\u00e7\u00e3o da atividade principal\",\n       \"atividades_secundarias\": [\n         \"Descri\u00e7\u00e3o atividade 1\",\n         \"Descri\u00e7\u00e3o atividade 2\"\n       ],\n       \"natureza_juridica\": \"Natureza jur\u00eddica\",\n       \"endereco\": {\n         \"logradouro\": \"Rua Exemplo\",\n         \"numero\": \"123\",\n         \"complemento\": \"Sala 5\",\n         \"bairro\": \"Centro\",\n         \"cep\": \"00000000\",\n         \"municipio\": \"S\u00e3o Paulo\",\n         \"uf\": \"SP\"\n       },\n       \"contato\": {\n         \"telefone\": \"(11) 0000-0000\",\n         \"email\": \"email@exemplo.com.br\"\n       },\n       \"situacao_cadastral\": \"ATIVA\"\n     }\n     ```\n\n---\n\nFormato da resposta que deve enviar ao usu\u00e1rio:\n\nAqui est\u00e3o as informa\u00e7\u00f5es do CNPJ 38.292.673/0001-35:\n\n*Raz\u00e3o Social:* FACEBOOK SERVICOS ONLINE DO BRASIL LTDA.  \n*Nome Fantasia:* (n\u00e3o informado)  \n*Situa\u00e7\u00e3o Cadastral:* Ativa desde 2011-02-14  \n*Matriz/Filial:* Matriz  \n*In\u00edcio da Atividade:* 2011-02-14  \n*CNAE Principal:* 7312200  \n*Atividades Secund\u00e1rias:*  \n- 7319004  \n- 7020400  \n*Natureza Jur\u00eddica:* Sociedade Empres\u00e1ria Limitada  \n*Endere\u00e7o:* BRIG FARIA LIMA, 3732, ANDAR 3AO7 8ALASUL 9 E 10, Bairro ITAIM BIBI, SAO PAULO - SP, CEP 04538132  \n*Email:* TAXCOMPLIANCEBR@FB.COM  \n*Telefone*: (11) 30736800  \n*Capital Social:* R$ 3.631.639,00  \n*Porte da Empresa:* Demais  \n*Op\u00e7\u00e3o pelo Simples Nacional:* N\u00e3o informado  \n*Op\u00e7\u00e3o MEI:* N\u00e3o informado  \n*S\u00f3cios:*   \n- Nome: FACEBOOK MIAMI, INC., Qualifica\u00e7\u00e3o: S\u00f3cio Pessoa Jur\u00eddica Domiciliado no Exterior, Entrada na Sociedade: 2015-09-17, Pessoa Jur\u00eddica  \n- Nome: CONRADO LEISTER, Qualifica\u00e7\u00e3o: Administrador, Entrada na Sociedade: 2018-11-14, Pessoa F\u00edsica, Faixa Et\u00e1ria: 41 a 50 anos\n\n### Instru\u00e7\u00f5es finais:  \n- Seja tolerante a diferentes formatos de entrada de CNPJ, desde que respeitem os 14 d\u00edgitos num\u00e9ricos.  \n- Para m\u00faltiplos CNPJs, mantenha a ordem da entrada na resposta.  \n- N\u00e3o inclua explica\u00e7\u00f5es ou mensagens fora do contexto.  \n- Nunca gere dados fict\u00edcios ou n\u00e3o confirmados pela API.\n```"
        }
      },
      "type": "@n8n/n8n-nodes-langchain.agent",
      "typeVersion": 2.2,
      "position": [
        224,
        -112
      ],
      "id": "1fae313d-b7c3-43c0-a60d-dc2af7945a7c",
      "name": "AI Agent"
    },
    {
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4.1-mini"
        },
        "options": {}
      },
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "typeVersion": 1.2,
      "position": [
        64,
        96
      ],
      "id": "00b19fff-c5ea-4839-bb2b-3cca7d2040bf",
      "name": "OpenAI Chat Model",
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "sessionIdType": "customKey",
        "sessionKey": "={{ $json.body.data.key.remoteJid }}"
      },
      "type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
      "typeVersion": 1.3,
      "position": [
        224,
        96
      ],
      "id": "d98d3aef-9209-4aaf-85e8-109f3ead3dd7",
      "name": "Simple Memory"
    },
    {
      "parameters": {
        "toolDescription": "a url para consulta do CNPJ \u00e9 https://api.opencnpj.org/\nvoc\u00ea deve inserir o cnpj logo ap\u00f3s a /\n",
        "url": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('URL', `Exemplo:\n\"https://api.opencnpj.org/38.292.673/0001-35\"`, 'string') }}",
        "options": {}
      },
      "type": "n8n-nodes-base.httpRequestTool",
      "typeVersion": 4.2,
      "position": [
        368,
        96
      ],
      "id": "c7e311de-8c50-4f39-b271-c0c3ef68528b",
      "name": "HTTP Request"
    },
    {
      "parameters": {
        "httpMethod": "POST",
        "path": "consulta-cnpj",
        "options": {}
      },
      "type": "n8n-nodes-base.webhook",
      "typeVersion": 2.1,
      "position": [
        -256,
        -112
      ],
      "id": "f1251e0c-773d-4bc0-b4b4-ee025802c7cd",
      "name": "Webhook"
    },
    {
      "parameters": {
        "resource": "messages-api",
        "instanceName": "consulta-cnpj",
        "remoteJid": "={{ $('Webhook').item.json.body.data.key.remoteJid }}",
        "messageText": "={{ $json.output }}",
        "options_message": {}
      },
      "type": "n8n-nodes-evolution-api.evolutionApi",
      "typeVersion": 1,
      "position": [
        864,
        -112
      ],
      "id": "e41d6d4c-f9ea-4268-921a-308b4a6c7d11",
      "name": "Enviar texto",
      "credentials": {
        "evolutionApi": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "content": "## Trigger & AI Agent\n\n**When chat message received**:\n- Aciona o fluxo quando uma mensagem do usu\u00e1rio \u00e9 recebida.\n\n**AI Agent**:\n- Orquestra o fluxo de conversa\u00e7\u00e3o.\n- Recebe input do gatilho e usa modelos, mem\u00f3ria e ferramentas.",
        "height": 216,
        "width": 680,
        "color": 4
      },
      "name": "Note: Trigger + Agent",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        0,
        256
      ],
      "id": "generated-0d6b936d-792d-4c4f-baa5-dda8759686b4"
    },
    {
      "parameters": {
        "content": "## Processamento de Dados\n\n**OpenAI Chat Model**:\n- Executa chamadas ao modelo GPT para gerar respostas.\n\n**Simple Memory**:\n- Armazena o contexto das \u00faltimas intera\u00e7\u00f5es para manter o hist\u00f3rico.\n\n**HTTP Request**:\n- Consulta a API OpenCNPJ para obter dados de CNPJ.\n\n\n**Append row in sheet in Google Sheets**:\n- Grava a consulta na planilha google sheet.",
        "height": 704,
        "width": 680,
        "color": 4
      },
      "name": "Note: Modelo, Mem\u00f3ria & HTTP",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        0,
        -464
      ],
      "id": "generated-384ee6c6-1330-46ab-a012-c95ad6981adb"
    },
    {
      "parameters": {
        "content": "## Webhook Trigger Node\n\n- Recebe mensagens de chat via webhook.\n- Ponto de entrada do workflow.\n- Exposi\u00e7\u00e3o do endpoint usado pelo node \u201cWhen chat message received\u201d.\n- Inicia o agente de IA para processar a entrada.",
        "height": 372,
        "width": 460
      },
      "name": "Webhook Explanation",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -480,
        -336
      ],
      "id": "generated-04c8eaa3-1032-4011-8d0e-989ce08953d9"
    },
    {
      "parameters": {
        "operation": "append",
        "documentId": {
          "__rl": true,
          "value": "15zvnX5gWCzowoj_MmJp61EsWr3uk6vY__Z9yT0M5TFU",
          "mode": "list",
          "cachedResultName": "Busca CNPJ",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/15zvnX5gWCzowoj_MmJp61EsWr3uk6vY__Z9yT0M5TFU/edit?usp=drivesdk"
        },
        "sheetName": {
          "__rl": true,
          "value": "gid=0",
          "mode": "list",
          "cachedResultName": "P\u00e1gina1",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/15zvnX5gWCzowoj_MmJp61EsWr3uk6vY__Z9yT0M5TFU/edit#gid=0"
        },
        "columns": {
          "mappingMode": "defineBelow",
          "value": {
            "CNPJ": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('CNPJ', ``, 'string') }}",
            "Dados": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Dados', `Insira todos os dados da consulta do CNPJ\nDados de exemplo:\nRaz\u00e3o Social: FACEBOOK SERVICOS ONLINE DO BRASIL LTDA.  \nNome Fantasia: (n\u00e3o informado)  \nSitua\u00e7\u00e3o Cadastral: Ativa desde 2011-02-14  \nMatriz/Filial: Matriz  \nIn\u00edcio da Atividade: 2011-02-14  \nCNAE Principal: 7312200  \nAtividades Secund\u00e1rias:  \n- 7319004  \n- 7020400  \nNatureza Jur\u00eddica: Sociedade Empres\u00e1ria Limitada  \nEndere\u00e7o: BRIG FARIA LIMA, 3732, ANDAR 3AO7 8ALASUL 9 E 10, Bairro ITAIM BIBI, SAO PAULO - SP, CEP 04538132  \nEmail: TAXCOMPLIANCEBR@FB.COM  \nTelefone: (11) 30736800  \nCapital Social: R$ 3.631.639,00  \nPorte da Empresa: Demais  \nOp\u00e7\u00e3o pelo Simples Nacional: N\u00e3o informado  \nOp\u00e7\u00e3o MEI: N\u00e3o informado  \nS\u00f3cios:   \n- Nome: FACEBOOK MIAMI, INC., Qualifica\u00e7\u00e3o: S\u00f3cio Pessoa Jur\u00eddica Domiciliado no Exterior, Entrada na Sociedade: 2015-09-17, Pessoa Jur\u00eddica  \n- Nome: CONRADO LEISTER, Qualifica\u00e7\u00e3o: Administrador, Entrada na Sociedade: 2018-11-14, Pessoa F\u00edsica, Faixa Et\u00e1ria: 41 a 50 anos\n\nExemplo:`, 'string') }}"
          },
          "matchingColumns": [],
          "schema": [
            {
              "id": "CNPJ",
              "displayName": "CNPJ",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": false
            },
            {
              "id": "Dados",
              "displayName": "Dados",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": false
            }
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {}
      },
      "type": "n8n-nodes-base.googleSheetsTool",
      "typeVersion": 4.7,
      "position": [
        528,
        80
      ],
      "id": "35c11c6d-0046-4129-94a5-01845821cd5c",
      "name": "Append row in sheet in Google Sheets",
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "content": "## RESPONDE WHATSAPP",
        "height": 216,
        "width": 392,
        "color": 5
      },
      "name": "Note: Trigger + Agent1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        688,
        -176
      ],
      "id": "ababf7e3-47ed-431b-b03c-f29bff6bb1be",
      "typeVersion": 1
    }
  ],
  "connections": {
    "OpenAI Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "AI Agent",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Simple Memory": {
      "ai_memory": [
        [
          {
            "node": "AI Agent",
            "type": "ai_memory",
            "index": 0
          }
        ]
      ]
    },
    "HTTP Request": {
      "ai_tool": [
        [
          {
            "node": "AI Agent",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Webhook": {
      "main": [
        [
          {
            "node": "AI Agent",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "AI Agent": {
      "main": [
        [
          {
            "node": "Enviar texto",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Enviar texto": {
      "main": [
        []
      ]
    },
    "Append row in sheet in Google Sheets": {
      "ai_tool": [
        [
          {
            "node": "AI Agent",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    }
  },
  "active": true,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "b785c540-f394-4bd0-bc6c-896caf18e455",
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "id": "Rlu55pVt0TrESs58",
  "tags": []
}