{
  "name": "Agente de IA - Asimov",
  "nodes": [
    {
      "parameters": {
        "httpMethod": "POST",
        "path": "api-oficial-whatsapp",
        "options": {}
      },
      "type": "n8n-nodes-base.webhook",
      "typeVersion": 2,
      "position": [
        0,
        -128
      ],
      "id": "a38a94d3-7285-401d-a778-020b824dec16",
      "name": "Webhook",
      "webhookId": "cfd0b1d4-d685-44dc-969a-51ec6d523793"
    },
    {
      "parameters": {
        "conditions": {
          "options": {
            "caseSensitive": true,
            "leftValue": "",
            "typeValidation": "strict",
            "version": 2
          },
          "conditions": [
            {
              "id": "39c1e0bc-46b6-422f-9a71-f1bb33801b0b",
              "leftValue": "={{ $json.body.entry[0].changes[0].value.statuses }}",
              "rightValue": "",
              "operator": {
                "type": "array",
                "operation": "exists",
                "singleValue": true
              }
            }
          ],
          "combinator": "and"
        },
        "options": {}
      },
      "type": "n8n-nodes-base.if",
      "typeVersion": 2.2,
      "position": [
        224,
        -128
      ],
      "id": "c7adc7c3-8f16-4f2a-9850-1d9c12333063",
      "name": "If2"
    },
    {
      "parameters": {},
      "type": "n8n-nodes-base.noOp",
      "typeVersion": 1,
      "position": [
        448,
        -224
      ],
      "id": "b2b720d0-3b7e-4c14-8566-0b7d7f6628e7",
      "name": "No Operation, do nothing3"
    },
    {
      "parameters": {
        "assignments": {
          "assignments": [
            {
              "id": "79af488f-435d-45ad-8b61-6bd44f593cac",
              "name": "nome",
              "value": "={{ $json.body.entry[0].changes[0].value.contacts[0].profile.name }}",
              "type": "string"
            },
            {
              "id": "6222798c-e790-409c-ae8f-7e312b8b69b8",
              "name": "telefone",
              "value": "={{ $json.body.entry[0].changes[0].value.contacts[0].wa_id }}",
              "type": "string"
            },
            {
              "id": "e9ab24ba-3285-4f3c-b610-99435c2da8c9",
              "name": "mensagem_tipo",
              "value": "={{ $json.body.entry[0].changes[0].value.messages[0].type }}",
              "type": "string"
            },
            {
              "id": "ce626fbd-9eec-41d4-abe4-f7d27c794a73",
              "name": "mensagem_texto",
              "value": "={{ $json.body.entry[0].changes[0].value.messages[0].text.body }}",
              "type": "string"
            },
            {
              "id": "7e5aede7-d732-404e-ba4d-8a3e15f4d41e",
              "name": "mensagem_audio",
              "value": "={{ $json.body.entry[0].changes[0].value.messages[0].audio.id }}",
              "type": "string"
            },
            {
              "id": "ace4c24d-66ad-4786-8530-49fc1e55be86",
              "name": "mensagem_imagem",
              "value": "={{ $json.body.entry[0].changes[0].value.messages[0].image.id }}",
              "type": "string"
            }
          ]
        },
        "options": {}
      },
      "type": "n8n-nodes-base.set",
      "typeVersion": 3.4,
      "position": [
        448,
        -32
      ],
      "id": "c0bf387f-be93-4b54-8df8-838499ce4de5",
      "name": "Edit Fields2"
    },
    {
      "parameters": {
        "operation": "getAll",
        "tableId": "Clientes WhatsApp",
        "returnAll": true,
        "filters": {
          "conditions": [
            {
              "keyName": "telefone",
              "condition": "eq",
              "keyValue": "={{ $json.telefone }}"
            }
          ]
        }
      },
      "type": "n8n-nodes-base.supabase",
      "typeVersion": 1,
      "position": [
        672,
        -32
      ],
      "id": "c07c6d93-023d-4f16-80c1-6a8a6e3ad74f",
      "name": "Get many rows",
      "alwaysOutputData": true,
      "credentials": {
        "supabaseApi": {
          "id": "D24rsShjMLd56die",
          "name": "Supabase Asimov"
        }
      }
    },
    {
      "parameters": {
        "conditions": {
          "options": {
            "caseSensitive": true,
            "leftValue": "",
            "typeValidation": "strict",
            "version": 2
          },
          "conditions": [
            {
              "id": "d82bc9ac-b5f1-4235-a862-cf5f79783492",
              "leftValue": "={{ $json.telefone }}",
              "rightValue": "",
              "operator": {
                "type": "number",
                "operation": "exists",
                "singleValue": true
              }
            }
          ],
          "combinator": "and"
        },
        "options": {}
      },
      "type": "n8n-nodes-base.if",
      "typeVersion": 2.2,
      "position": [
        896,
        -32
      ],
      "id": "a5667e3a-9dc4-493a-8574-ee029d060e32",
      "name": "If3"
    },
    {
      "parameters": {
        "tableId": "Clientes WhatsApp",
        "fieldsUi": {
          "fieldValues": [
            {
              "fieldId": "telefone",
              "fieldValue": "={{ $('Edit Fields2').item.json.telefone }}"
            },
            {
              "fieldId": "nome",
              "fieldValue": "={{ $('Edit Fields2').item.json.nome }}"
            }
          ]
        }
      },
      "type": "n8n-nodes-base.supabase",
      "typeVersion": 1,
      "position": [
        1120,
        224
      ],
      "id": "189ec22e-969c-4fc0-94e8-05de57257ab9",
      "name": "Create a row",
      "credentials": {
        "supabaseApi": {
          "id": "D24rsShjMLd56die",
          "name": "Supabase Asimov"
        }
      }
    },
    {
      "parameters": {
        "rules": {
          "values": [
            {
              "conditions": {
                "options": {
                  "caseSensitive": true,
                  "leftValue": "",
                  "typeValidation": "strict",
                  "version": 2
                },
                "conditions": [
                  {
                    "leftValue": "={{ $('Edit Fields2').item.json.mensagem_tipo }}",
                    "rightValue": "text",
                    "operator": {
                      "type": "string",
                      "operation": "equals"
                    },
                    "id": "fa5c38a4-31bf-4a86-86d9-2ab2d6cc335e"
                  }
                ],
                "combinator": "and"
              },
              "renameOutput": true,
              "outputKey": "Texto"
            },
            {
              "conditions": {
                "options": {
                  "caseSensitive": true,
                  "leftValue": "",
                  "typeValidation": "strict",
                  "version": 2
                },
                "conditions": [
                  {
                    "id": "43c67ed8-6a0a-4252-809d-2d30120a1c55",
                    "leftValue": "={{ $('Edit Fields2').item.json.mensagem_tipo }}",
                    "rightValue": "audio",
                    "operator": {
                      "type": "string",
                      "operation": "equals",
                      "name": "filter.operator.equals"
                    }
                  }
                ],
                "combinator": "and"
              },
              "renameOutput": true,
              "outputKey": "Áudio"
            },
            {
              "conditions": {
                "options": {
                  "caseSensitive": true,
                  "leftValue": "",
                  "typeValidation": "strict",
                  "version": 2
                },
                "conditions": [
                  {
                    "id": "684863e1-ad26-47d5-b2d9-000b3be13892",
                    "leftValue": "={{ $('Edit Fields2').item.json.mensagem_tipo }}",
                    "rightValue": "image",
                    "operator": {
                      "type": "string",
                      "operation": "equals",
                      "name": "filter.operator.equals"
                    }
                  }
                ],
                "combinator": "and"
              },
              "renameOutput": true,
              "outputKey": "Imagem"
            }
          ]
        },
        "options": {}
      },
      "type": "n8n-nodes-base.switch",
      "typeVersion": 3.2,
      "position": [
        1344,
        112
      ],
      "id": "55539ba8-ffb7-4b1e-813b-2cdd602cfde3",
      "name": "Switch1"
    },
    {
      "parameters": {},
      "type": "n8n-nodes-base.noOp",
      "typeVersion": 1,
      "position": [
        2016,
        -128
      ],
      "id": "754ec5ae-9234-4839-a852-d278246663f5",
      "name": "No Operation, do nothing4"
    },
    {
      "parameters": {
        "url": "=https://graph.facebook.com/v22.0/{{ $('Edit Fields2').item.json.mensagem_audio }}",
        "sendHeaders": true,
        "headerParameters": {
          "parameters": [
            {
              "name": "Authorization",
              "value": "Bearer EAAJA1bZAsJQABPe2mfgyh3miRRZBkC6hsc6XKZC1vKo5ZCopcbCEFawbFojglvE5D3ytps2UgygZA4wAvEOp8JXXojrpUljMa9YT3y4ujlX5NK0K4yNsWu3ZAtfwiEgHXhx9jkNw67V62faKJLEwOWCTgjjHNvdSRgZBTAXI90RIKUXAL4uBZA2ck9TlZAJM7KAZDZD"
            }
          ]
        },
        "options": {}
      },
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [
        1568,
        80
      ],
      "id": "a95906b7-1685-4241-b96d-6625aaa945d3",
      "name": "HTTP Request4"
    },
    {
      "parameters": {
        "url": "=https://graph.facebook.com/v22.0/{{ $('Edit Fields2').item.json.mensagem_imagem }}",
        "sendHeaders": true,
        "headerParameters": {
          "parameters": [
            {
              "name": "Authorization",
              "value": "Bearer EAAJA1bZAsJQABPe2mfgyh3miRRZBkC6hsc6XKZC1vKo5ZCopcbCEFawbFojglvE5D3ytps2UgygZA4wAvEOp8JXXojrpUljMa9YT3y4ujlX5NK0K4yNsWu3ZAtfwiEgHXhx9jkNw67V62faKJLEwOWCTgjjHNvdSRgZBTAXI90RIKUXAL4uBZA2ck9TlZAJM7KAZDZD"
            }
          ]
        },
        "options": {}
      },
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [
        1568,
        272
      ],
      "id": "63defa38-70b6-4ed9-b734-bf8144cabe30",
      "name": "HTTP Request5"
    },
    {
      "parameters": {
        "url": "={{ $json.url }}",
        "sendHeaders": true,
        "headerParameters": {
          "parameters": [
            {
              "name": "Authorization",
              "value": "Bearer EAAJA1bZAsJQABPe2mfgyh3miRRZBkC6hsc6XKZC1vKo5ZCopcbCEFawbFojglvE5D3ytps2UgygZA4wAvEOp8JXXojrpUljMa9YT3y4ujlX5NK0K4yNsWu3ZAtfwiEgHXhx9jkNw67V62faKJLEwOWCTgjjHNvdSRgZBTAXI90RIKUXAL4uBZA2ck9TlZAJM7KAZDZD"
            }
          ]
        },
        "options": {}
      },
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [
        1792,
        272
      ],
      "id": "b9cd631b-224e-407f-8730-93af0104bf9a",
      "name": "HTTP Request6"
    },
    {
      "parameters": {
        "resource": "image",
        "operation": "analyze",
        "modelId": {
          "__rl": true,
          "value": "chatgpt-4o-latest",
          "mode": "list",
          "cachedResultName": "CHATGPT-4O-LATEST"
        },
        "text": "Descreva essa imagem de forma detalhada.",
        "inputType": "base64",
        "options": {}
      },
      "type": "@n8n/n8n-nodes-langchain.openAi",
      "typeVersion": 1.8,
      "position": [
        2016,
        272
      ],
      "id": "60d8b851-6809-4084-b321-b923fa640072",
      "name": "Analyze image1",
      "credentials": {
        "openAiApi": {
          "id": "fTUF7D2wBKLhwIvg",
          "name": "OpenAi aula 11/09"
        }
      }
    },
    {
      "parameters": {
        "url": "={{ $json.url }}",
        "sendHeaders": true,
        "headerParameters": {
          "parameters": [
            {
              "name": "Authorization",
              "value": "Bearer EAAJA1bZAsJQABPe2mfgyh3miRRZBkC6hsc6XKZC1vKo5ZCopcbCEFawbFojglvE5D3ytps2UgygZA4wAvEOp8JXXojrpUljMa9YT3y4ujlX5NK0K4yNsWu3ZAtfwiEgHXhx9jkNw67V62faKJLEwOWCTgjjHNvdSRgZBTAXI90RIKUXAL4uBZA2ck9TlZAJM7KAZDZD"
            }
          ]
        },
        "options": {}
      },
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [
        1792,
        80
      ],
      "id": "5a55ef3a-f385-4b8a-8832-d1f432d7cc09",
      "name": "HTTP Request7"
    },
    {
      "parameters": {
        "resource": "audio",
        "operation": "transcribe",
        "options": {}
      },
      "type": "@n8n/n8n-nodes-langchain.openAi",
      "typeVersion": 1.8,
      "position": [
        2016,
        80
      ],
      "id": "9efc38ae-b5cc-4470-a55a-4b9bef5175a1",
      "name": "Transcribe a recording1",
      "credentials": {
        "openAiApi": {
          "id": "fTUF7D2wBKLhwIvg",
          "name": "OpenAi aula 11/09"
        }
      }
    },
    {
      "parameters": {
        "assignments": {
          "assignments": [
            {
              "id": "dd9781a0-5d85-471d-bafb-2d823e473f63",
              "name": "mensagem",
              "value": "={{ $json.content || $json.text || $('Edit Fields2').item.json.mensagem_texto }}",
              "type": "string"
            }
          ]
        },
        "options": {}
      },
      "type": "n8n-nodes-base.set",
      "typeVersion": 3.4,
      "position": [
        2240,
        112
      ],
      "id": "3525e2e0-6658-477e-9f61-dacaeac29974",
      "name": "Edit Fields3"
    },
    {
      "parameters": {
        "operation": "push",
        "list": "={{ $('Edit Fields2').item.json.telefone }}",
        "messageData": "={{ $json.mensagem }}",
        "tail": true
      },
      "type": "n8n-nodes-base.redis",
      "typeVersion": 1,
      "position": [
        2464,
        112
      ],
      "id": "5ac597e7-ad52-4e37-b09e-e37dd19d8862",
      "name": "Redis3",
      "credentials": {
        "redis": {
          "id": "rJLfsYf30ZhIE8mi",
          "name": "Redis account"
        }
      }
    },
    {
      "parameters": {
        "amount": 10
      },
      "type": "n8n-nodes-base.wait",
      "typeVersion": 1.1,
      "position": [
        2688,
        112
      ],
      "id": "726f7145-48bd-45b4-aabd-0d90f3a6812b",
      "name": "Wait1",
      "webhookId": "90310924-3ba8-4701-ab05-4a7df5922424"
    },
    {
      "parameters": {
        "operation": "get",
        "key": "={{ $('Edit Fields2').item.json.telefone }}",
        "options": {}
      },
      "type": "n8n-nodes-base.redis",
      "typeVersion": 1,
      "position": [
        2912,
        112
      ],
      "id": "86be4191-fa03-48c6-860f-8ba3c09bbf32",
      "name": "Redis4",
      "credentials": {
        "redis": {
          "id": "rJLfsYf30ZhIE8mi",
          "name": "Redis account"
        }
      }
    },
    {
      "parameters": {
        "conditions": {
          "options": {
            "caseSensitive": true,
            "leftValue": "",
            "typeValidation": "strict",
            "version": 2
          },
          "conditions": [
            {
              "id": "a83e6e42-daec-4b64-a145-f13c23ee45f0",
              "leftValue": "={{ $json.propertyName.last() }}",
              "rightValue": "={{ $('Edit Fields3').item.json.mensagem }}",
              "operator": {
                "type": "string",
                "operation": "equals",
                "name": "filter.operator.equals"
              }
            }
          ],
          "combinator": "and"
        },
        "options": {}
      },
      "type": "n8n-nodes-base.if",
      "typeVersion": 2.2,
      "position": [
        3136,
        112
      ],
      "id": "335ede07-b3b3-4330-bb6f-d65498947889",
      "name": "If4"
    },
    {
      "parameters": {},
      "type": "n8n-nodes-base.noOp",
      "typeVersion": 1,
      "position": [
        3360,
        160
      ],
      "id": "07a31dd0-0b2c-4e68-a527-0cede4217a75",
      "name": "No Operation, do nothing5"
    },
    {
      "parameters": {
        "assignments": {
          "assignments": [
            {
              "id": "43510859-234a-4a53-9a78-18526a9bbc42",
              "name": "mensagens",
              "value": "={{ $json.propertyName.join(', ') }}",
              "type": "string"
            }
          ]
        },
        "options": {}
      },
      "type": "n8n-nodes-base.set",
      "typeVersion": 3.4,
      "position": [
        3360,
        -32
      ],
      "id": "dc2fcd06-341f-42a8-96dd-19abbc701555",
      "name": "Edit Fields4"
    },
    {
      "parameters": {
        "operation": "delete",
        "key": "={{ $('Edit Fields2').item.json.telefone }}"
      },
      "type": "n8n-nodes-base.redis",
      "typeVersion": 1,
      "position": [
        3584,
        -32
      ],
      "id": "1abf1593-4dbe-4e72-94f0-f357ed469c20",
      "name": "Redis5",
      "credentials": {
        "redis": {
          "id": "rJLfsYf30ZhIE8mi",
          "name": "Redis account"
        }
      }
    },
    {
      "parameters": {
        "promptType": "define",
        "text": "={{ $json.mensagens }}",
        "options": {
          "systemMessage": "=## Papel\nVocê é um agente de IA da Asimov Academy, uma escola focada em ensinar Python e IA. Sua missão é atender interessados de forma simpática e consultiva, respondendo dúvidas com clareza e guiando cada pessoa na escolha do curso ou trilha mais adequada. Você transmite entusiasmo e confiança, fazendo o usuário sentir que está dando um passo importante para transformar sua carreira.\n\n## Instruções\nSiga o seguinte passo a passo de atendimento para estruturar suas interações:\n\n1. Cumprimente e peça o nome do aluno  \n- Exemplo: \"Olá, tudo bem? Antes de começarmos, qual é o seu nome?\"  \n\n2. Peça como pode ajudar\n- Exemplo: \"Muito prazer, [nome]! Como posso lhe ajudar?\"\n\n3. Diagnostique rapidamente nível atual e interesse principal  \n- Exemplo:  \nUsuário: \"Quero aprender IA, mas nunca programei.\"  \nAgente: \"Entendi. Você já teve algum contato com Python ou está começando do zero? E me conta: existe algum tema em particular que gostaria de aprender primeiro?\"  \n\n4. Utilize a tool \"buscarCurso\" para recomendear um curso ou trilha adequada e dê 1 alternativa  \n- Exemplo:  \nAgente: \"Pelo que você me contou, a melhor opção é começar com o curso de Python do zero e depois avançar para a Trilha de IA. Assim você cria uma base sólida e já aplica em projetos práticos. Como alternativa, você pode optar pelo acesso completo da Asimov Academy, que libera todas as trilhas e projetos de uma vez.\"  \n\n5. Esclareça dúvidas comuns (preço, pré-requisitos, certificado, suporte)  \n- Exemplo:  \nUsuário: \"Preciso saber matemática avançada?\"  \nAgente: \"Não precisa. A trilha cobre os fundamentos necessários no contexto dos projetos, de forma acessível e prática.\"  \n\n6. Finalize com próximo passo claro  \n- Exemplo: \"Quer que eu te envie o link para matrícula?\"\n\nCaso o aluno aceite, envie o link correspondente à trilha que ele possui interesse.\n\n## URLs das Trilhas\n• Trilha Aplicações IA com Python – https://asimov.academy/trilha-aplicacoes-ia-com-python/\n• Trilha Automações com n8n – https://asimov.academy/automatizando-tudo-com-n8n/\n• Trilha Análise e Visualização de Dados – https://asimov.academy/trilha-analise-e-visualizacao-de-dados/\n• Trilha Dashboards Interativos com Python – https://asimov.academy/dashboards-interativos-com-python/\n• Trilha Visão Computacional – https://asimov.academy/trilha-visao-computacional/\n• Trilha Engenharia de Dados – https://asimov.academy/trilha-engenharia-de-dados/\n• Trilha Python para Web – https://asimov.academy/trilha-python-para-web/\n• Trilha Data Science e Machine Learning – https://asimov.academy/trilha-data-science-e-machine-learning/\n\n## Tools\n1. dadosAsimov: Use esta ferramenta sempre que precisar consultar informações oficiais sobre cursos, trilhas, planos, preços, certificados ou suporte da Asimov Academy. Utilize-a para responder dúvidas do aluno de forma precisa e atualizada.\n\n2. buscarCurso: Use esta ferramenta na etapa de recomendação (após diagnosticar objetivo, nível atual e interesse principal do aluno). Ela deve indicar qual curso ou trilha é mais adequada para o perfil identificado, oferecendo também uma alternativa, quando fizer sentido.\n\n3. transferirAtendimento: Use esta ferramenta para transferir o atendimento a um humano sempre que o aluno solicitar diretamente falar com alguém ou quando você não tiver informações suficientes para responder com clareza.\n\n## Contexto Operacional\nVocê está inserido no setor de atendimento da Asimov Academy via WhatsApp, atuando para acelerar o suporte ao aluno. Seu trabalho aumenta diretamente a satisfação do cliente e transforma cada interação em uma experiência positiva e inspiradora, contribuindo diretamente para o sucesso da nossa empresa.\n\n## Regras\n- Mantenha as respostas curtas, claras e diretas ao ponto.\n- Não utilize emojis em nenhuma situação.\n- Sempre adote um tom simpático, consultivo e profissional.\n- Caso não saiba a resposta ou o aluno solicite, transfira imediatamente o atendimento para um humano.\n- Evite linguagem técnica excessiva; adapte o nível de explicação ao perfil do aluno.\n- Nunca forneça informações fora do escopo da Asimov Academy."
        }
      },
      "type": "@n8n/n8n-nodes-langchain.agent",
      "typeVersion": 2.1,
      "position": [
        4064,
        -32
      ],
      "id": "99e9030a-03dc-4460-9c47-7619cb7396da",
      "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": [
        3808,
        192
      ],
      "id": "8edaac2f-c0c2-48e6-ab96-8c6cfa3d5b1a",
      "name": "OpenAI Chat Model",
      "credentials": {
        "openAiApi": {
          "id": "fTUF7D2wBKLhwIvg",
          "name": "OpenAi aula 11/09"
        }
      }
    },
    {
      "parameters": {
        "promptType": "define",
        "text": "=Mensagem a ser dividida: {{ $json.output }}",
        "options": {
          "systemMessage": "=Você é um agente formatador de mensagens para WhatsApp. Sua única função é dividir a mensagem recebida em múltiplas mensagens curtas, naturais e bem estruturadas. Siga as regras abaixo com rigor:\n\n1. Sempre que possível, divida a mensagem original em 2 ou mais mensagens menores.\n2. A cada nova mensagem gerada, aplique exatamente **duas quebras de linha reais** (\\n\\n) no final do bloco. Nunca ultrapasse esse número de quebras de linha.\n3. Mantenha frases inteiras e compreensíveis em cada mensagem. **Nunca divida frases no meio** ou quebre a fluidez.\n4. Se houver listas, bullets ou tópicos numerados, **não quebre ou interrompa a estrutura da lista**. Trate cada lista como uma única mensagem.\n\n### NUNCA JAMAIS ALTERE O CONTEUDO DA MENSAGEM!\n\n5. **NUNCA gere ou altere o conteúdo** da mensagem original. Seu trabalho é apenas dividir e formatar a mensagem recebida para nós as enviarmos de forma natural no WhatsApp, NUNCA altere o conteúdo original da mensagem recebida.\n6. Sempre divida as mensagens utilizando \\n\\n ao final de cada uma delas.\n\n### Exemplo\nQ: Oi! Tudo bem, e com você? Como posso ajudar?\nA:\nOi!\n\nTudo bem, e com você?\n\nComo posso ajudar?\n\nQ: Boa noite! Tudo certo? Como você está?\nA:\nBoa noite!\n\nTudo certo?\n\nComo você está?"
        }
      },
      "type": "@n8n/n8n-nodes-langchain.agent",
      "typeVersion": 2.1,
      "position": [
        4912,
        -32
      ],
      "id": "b24aea8a-4553-4a67-9f08-7190ef9ce875",
      "name": "AI Agent1"
    },
    {
      "parameters": {
        "model": {
          "__rl": true,
          "value": "gpt-4.1-mini-2025-04-14",
          "mode": "list",
          "cachedResultName": "gpt-4.1-mini-2025-04-14"
        },
        "options": {}
      },
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "typeVersion": 1.2,
      "position": [
        5008,
        192
      ],
      "id": "bb0191cb-88f3-4da5-9454-ffda0f623f3b",
      "name": "OpenAI Chat Model1",
      "credentials": {
        "openAiApi": {
          "id": "fTUF7D2wBKLhwIvg",
          "name": "OpenAi aula 11/09"
        }
      }
    },
    {
      "parameters": {
        "assignments": {
          "assignments": [
            {
              "id": "47ed6bbd-9c5e-492a-ab87-643aaf64e491",
              "name": "output",
              "value": "={{ $json.output.split('\\n\\n') }}",
              "type": "array"
            }
          ]
        },
        "options": {}
      },
      "type": "n8n-nodes-base.set",
      "typeVersion": 3.4,
      "position": [
        5312,
        -32
      ],
      "id": "4d521518-c3fa-410c-b562-2dbf745a1a27",
      "name": "Edit Fields5"
    },
    {
      "parameters": {
        "fieldToSplitOut": "output",
        "options": {}
      },
      "type": "n8n-nodes-base.splitOut",
      "typeVersion": 1,
      "position": [
        5536,
        -32
      ],
      "id": "645ca51b-9fe2-45c1-82f3-54a9c2863798",
      "name": "Split Out"
    },
    {
      "parameters": {
        "options": {}
      },
      "type": "n8n-nodes-base.splitInBatches",
      "typeVersion": 3,
      "position": [
        5760,
        -32
      ],
      "id": "77c607d8-0fad-4725-82ba-74af0ad0b351",
      "name": "Loop Over Items"
    },
    {
      "parameters": {},
      "type": "n8n-nodes-base.noOp",
      "name": "Replace Me",
      "typeVersion": 1,
      "position": [
        5984,
        -224
      ],
      "id": "5e6ac0d9-7a10-42ba-aab6-5ee29a6dade3"
    },
    {
      "parameters": {
        "amount": 4
      },
      "type": "n8n-nodes-base.wait",
      "typeVersion": 1.1,
      "position": [
        5984,
        -32
      ],
      "id": "341a423c-6b06-4d43-8d73-72fa0c8ef3ee",
      "name": "Wait2",
      "webhookId": "81ef069c-33bd-4a4b-b3ba-8a60be55dc31"
    },
    {
      "parameters": {
        "operation": "send",
        "phoneNumberId": "713649455175523",
        "recipientPhoneNumber": "={{ $('Edit Fields2').item.json.telefone }}",
        "textBody": "={{ $json.output }}",
        "additionalFields": {}
      },
      "type": "n8n-nodes-base.whatsApp",
      "typeVersion": 1,
      "position": [
        6208,
        48
      ],
      "id": "c1e00911-886d-42ed-890f-129a4c3bd3ae",
      "name": "Send message1",
      "webhookId": "55f207ba-5f83-49fa-a781-5f335536d645",
      "credentials": {
        "whatsAppApi": {
          "id": "937KgBPVkNb6fTTK",
          "name": "WhatsApp account"
        }
      }
    },
    {
      "parameters": {
        "sessionIdType": "customKey",
        "sessionKey": "={{ $('Edit Fields2').item.json.telefone }}",
        "contextWindowLength": 15
      },
      "type": "@n8n/n8n-nodes-langchain.memoryPostgresChat",
      "typeVersion": 1.3,
      "position": [
        3936,
        192
      ],
      "id": "cd0102fa-343c-49bb-ad59-ea5b50e27459",
      "name": "Postgres Chat Memory",
      "credentials": {
        "postgres": {
          "id": "Kv6jHK3EX4iPXZvR",
          "name": "Postgres account"
        }
      }
    },
    {
      "parameters": {
        "toolDescription": "=Nome da tool: buscarCursos\n\nDescrição da tool: Utilize esse agente para buscar o curso ou trilha que mais se adequa às necessidades e interesse do aluno.\n\nParâmetro necessário: Envie o nível atual e interesse do aluno.",
        "text": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Prompt__User_Message_', ``, 'string') }}",
        "options": {
          "systemMessage": "=## Papel  \nSeu papel é identificar qual das trilhas da Asimov Academy abaixo é a mais adequada às necessidades, nível atual e objetivos do aluno.\n\n## Trilhas\n\n### Aplicações IA com Python  \nObjetivo: Ensinar a criar aplicações de IA em Python, desde fundamentos até projetos avançados com LLMs, APIs e agentes.  \n\nConteúdos principais:  \n- Fundamentos de Python  \n- Inteligência Artificial e LLMs  \n- Engenharia de Prompts  \n- Uso da API da OpenAI (texto, áudio, imagem)  \n- Modelos do Hugging Face  \n- Construção de agentes com LangChain e RAG  \n\n### Automações com n8n  \nObjetivo: Ensinar a usar o n8n para automatizar processos visuais, conectar APIs, criar agentes de IA e colocar automações reais no ar, tudo sem programação.  \n\nConteúdos principais:  \n- Fluxos visuais com n8n do zero ao avançado  \n- Integração com APIs externas, bancos de dados, planilhas, CRMs, etc.  \n- Automatização de tarefas cotidianas (e-mails, alertas, atualização de planilhas, geração de leads)  \n- Hospedagem / deploy do n8n em servidor próprio ou nuvem  \n- Criação de automações reutilizáveis e escaláveis  \n- Exemplos práticos aplicáveis para empreendedores, analistas, marketing, vendas e negócios\n\n### Análise e Visualização de Dados  \nObjetivo: Ensinar a analisar dados profissionalmente usando Python, desde o zero, criando visualizações úteis e dashboards interativos para comunicar insights.  \n\nConteúdos principais:  \n- Programação em Python do básico ao avançado  \n- Manipulação eficiente de dados com Pandas  \n- Criação de gráficos com Matplotlib e Seaborn  \n- Gráficos interativos com Plotly  \n- Desenvolvimento de dashboards/web apps com Streamlit  \n- Análise exploratória de dados: identificar padrões, limpar dados, preparar relatórios  \n- Comunicação clara de insights\n\n### Dashboards Interativos com Python  \nObjetivo: Ensinar a construir dashboards e aplicativos web interativos com Python, desde o básico até produção, substituindo planilhas por visualizações dinâmicas.  \n\nConteúdos principais:  \n- Programação em Python do zero com cursos básicos de lógica  \n- Manipulação de dados com Pandas  \n- Visualizações interativas com Plotly  \n- Criação de aplicativos web com Dash e Streamlit  \n- Deploy / colocar dashboards no ar para serem acessados via web  \n- Construção de dashboards completos com callbacks, layouts e states  \n\n### Visão Computacional com Python  \nObjetivo: Ensinar a programar em Python do zero e construir soluções que analisam imagens e vídeos usando IA, bibliotecas como OpenCV, Pillow e MediaPipe.  \n\nConteúdos principais:  \n- Fundamentos de Python e lógica de programação  \n- Manipulação de imagens com Pillow  \n- Operações matriciais com Numpy  \n- Processamento de vídeos e streams com OpenCV  \n- Uso de frameworks como MediaPipe para projetos avançados de visão computacional  \n- Projetos práticos passo a passo com imagens e vídeos do mundo real\n\n### Engenharia de Dados  \nObjetivo: Ensinar a construir pipelines de dados automatizados e escaláveis com Python, do zero até deploy em nuvem, para organizar, transformar e escalar dados profissionalmente.  \n\nConteúdos principais:  \n- Programação em Python do zero  \n- Manipulação e análise de dados com Pandas  \n- Consultas e tratamento de dados com SQL  \n- Automatização com APIs e scripts personalizados  \n- Uso do terminal Linux para ambientes profissionais  \n- Controle de versões com Git e GitHub  \n- Criação de pipelines ETL com Python  \n- Containerização com Docker  \n- Orquestração de processos com Apache Airflow  \n- Deploy de pipelines na nuvem  \n\n### Python para Web  \nObjetivo: Capacitar você a construir aplicações web modernas com Python e Django ou Flask, do zero, incluindo estrutura de projeto, versionamento, banco de dados, deploy e funcionalidades reais.  \n\nConteúdos principais:  \n- Programação em Python partindo do zero  \n- Criação de aplicações web completas com Django  \n- Definição de rotas, views, templates reutilizáveis  \n- Integração com banco de dados (SQLite, PostgreSQL)  \n- Versionamento de código com Git e colaboração via GitHub  \n- Deploy de aplicações web na nuvem usando plataformas práticas como PythonAnywhere, Heroku ou AWS\n\n### Data Science e Machine Learning  \nObjetivo: Ensinar a explorar dados, desenvolver modelos de Machine Learning em Python e extrair insights valiosos para apoiar decisões estratégicas.  \n\nConteúdos principais:  \n- Manipulação de dados com Pandas e SQL  \n- Limpeza e preparação de dados  \n- Visualização de dados com Seaborn e outras bibliotecas  \n- Análise exploratória para identificar padrões e tendências  \n- Construção e otimização de modelos preditivos  \n- Comunicação clara de resultados através de relatórios e visualizações  \n\n## Regras\n- Retorne apenas a trilha mais adequada, sem contexto ou informações adicionais.\n- Retorne um máximo de duas trilhas por resposta, caso haja mais de uma trilha que se adequa à o que o aluno está buscando."
        }
      },
      "type": "@n8n/n8n-nodes-langchain.agentTool",
      "typeVersion": 2.2,
      "position": [
        4064,
        192
      ],
      "id": "7baeaf8e-2377-4d22-9c9a-f3f515558742",
      "name": "AI Agent Tool"
    },
    {
      "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": [
        4160,
        400
      ],
      "id": "91af5690-1504-486e-abaa-5b8ef427bfd8",
      "name": "OpenAI Chat Model2",
      "credentials": {
        "openAiApi": {
          "id": "fTUF7D2wBKLhwIvg",
          "name": "OpenAi aula 11/09"
        }
      }
    },
    {
      "parameters": {
        "mode": "retrieve-as-tool",
        "toolDescription": "Nome da tool: dadosAsimov\n\nDescrição da tool: utilize essa tool para buscar informações sobre as trilhas da Asimov para responder o lead.",
        "tableName": {
          "__rl": true,
          "value": "documents",
          "mode": "list",
          "cachedResultName": "documents"
        },
        "options": {
          "queryName": "match_documents"
        }
      },
      "type": "@n8n/n8n-nodes-langchain.vectorStoreSupabase",
      "typeVersion": 1.3,
      "position": [
        4384,
        192
      ],
      "id": "8785fbc3-26bb-4874-b661-98b588c45e3c",
      "name": "Supabase Vector Store",
      "credentials": {
        "supabaseApi": {
          "id": "D24rsShjMLd56die",
          "name": "Supabase Asimov"
        }
      }
    },
    {
      "parameters": {
        "options": {}
      },
      "type": "@n8n/n8n-nodes-langchain.embeddingsOpenAi",
      "typeVersion": 1.2,
      "position": [
        4480,
        400
      ],
      "id": "e01451e8-7916-4eed-bd6f-5feeb6bd172c",
      "name": "Embeddings OpenAI",
      "credentials": {
        "openAiApi": {
          "id": "fTUF7D2wBKLhwIvg",
          "name": "OpenAi aula 11/09"
        }
      }
    },
    {
      "parameters": {
        "description": "Nome da tool: transferirAtendimento\n\nDescrição da tool: Utilize essa tool para transferir o atendimento para um humano quando solicitado pelo aluno ou quando você não souber responder uma pergunta.",
        "workflowId": {
          "__rl": true,
          "value": "n3KcpQFlT2FrbGh6",
          "mode": "list",
          "cachedResultName": "Agente de IA - Asimov"
        },
        "workflowInputs": {
          "mappingMode": "defineBelow",
          "value": {
            "telefone": "={{ $('Edit Fields2').item.json.telefone }}"
          },
          "matchingColumns": [
            "telefone"
          ],
          "schema": [
            {
              "id": "telefone",
              "displayName": "telefone",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "canBeUsedToMatch": true,
              "type": "number",
              "removed": false
            }
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        }
      },
      "type": "@n8n/n8n-nodes-langchain.toolWorkflow",
      "typeVersion": 2.2,
      "position": [
        4704,
        192
      ],
      "id": "fa7b02eb-5b7b-4e2b-8345-367cf9de404f",
      "name": "Call n8n Workflow Tool"
    },
    {
      "parameters": {
        "workflowInputs": {
          "values": [
            {
              "name": "telefone",
              "type": "number"
            }
          ]
        }
      },
      "type": "n8n-nodes-base.executeWorkflowTrigger",
      "typeVersion": 1.1,
      "position": [
        0,
        592
      ],
      "id": "6cd80096-2608-433e-b0ec-8286d09da4b8",
      "name": "When Executed by Another Workflow"
    },
    {
      "parameters": {
        "assignments": {
          "assignments": [
            {
              "id": "76d3ac2d-306d-4e61-a2e5-18273c0e904b",
              "name": "telefone",
              "value": "={{ $json.telefone }}",
              "type": "string"
            }
          ]
        },
        "options": {}
      },
      "type": "n8n-nodes-base.set",
      "typeVersion": 3.4,
      "position": [
        224,
        592
      ],
      "id": "e6ed0cfd-6a9f-49ad-9950-d3cbc8288340",
      "name": "Edit Fields"
    },
    {
      "parameters": {
        "operation": "update",
        "tableId": "Clientes WhatsApp",
        "filters": {
          "conditions": [
            {
              "keyName": "telefone",
              "condition": "eq",
              "keyValue": "={{ $json.telefone }}"
            }
          ]
        },
        "fieldsUi": {
          "fieldValues": [
            {
              "fieldId": "status",
              "fieldValue": "Transferido"
            }
          ]
        }
      },
      "type": "n8n-nodes-base.supabase",
      "typeVersion": 1,
      "position": [
        448,
        592
      ],
      "id": "0c5d1a48-beff-4a87-bb1a-4eef01c02c04",
      "name": "Update a row",
      "credentials": {
        "supabaseApi": {
          "id": "D24rsShjMLd56die",
          "name": "Supabase Asimov"
        }
      }
    },
    {
      "parameters": {
        "operation": "getAll",
        "tableId": "n8n_chat_histories",
        "returnAll": true,
        "filters": {
          "conditions": [
            {
              "keyName": "session_id",
              "condition": "eq",
              "keyValue": "={{ $json.telefone }}"
            }
          ]
        }
      },
      "type": "n8n-nodes-base.supabase",
      "typeVersion": 1,
      "position": [
        672,
        592
      ],
      "id": "1fb01cdc-1ab1-41b9-8bcb-afe9bacd57d8",
      "name": "Get many rows1",
      "credentials": {
        "supabaseApi": {
          "id": "D24rsShjMLd56die",
          "name": "Supabase Asimov"
        }
      }
    },
    {
      "parameters": {
        "assignments": {
          "assignments": [
            {
              "id": "e88af8e4-2789-4ab8-a30b-a704390c8be8",
              "name": "mensagens",
              "value": "={{ $json.message.type }}: {{ $json.message.content }}",
              "type": "string"
            }
          ]
        },
        "options": {}
      },
      "type": "n8n-nodes-base.set",
      "typeVersion": 3.4,
      "position": [
        896,
        592
      ],
      "id": "5086b4df-06a0-43c1-be12-4556f87b63b6",
      "name": "Edit Fields1"
    },
    {
      "parameters": {
        "fieldsToAggregate": {
          "fieldToAggregate": [
            {
              "fieldToAggregate": "mensagens"
            }
          ]
        },
        "options": {}
      },
      "type": "n8n-nodes-base.aggregate",
      "typeVersion": 1,
      "position": [
        1120,
        592
      ],
      "id": "ab92aa1d-80cd-48ca-b94c-608cfd375125",
      "name": "Aggregate"
    },
    {
      "parameters": {
        "promptType": "define",
        "text": "={{ $json.mensagens }}",
        "options": {
          "systemMessage": "=## Papel\nVocê recebeu um histórico de conversa entre um humano e um agente de IA. Seu trabalho é analisar a interação e gerar um resumo da conversa que será enviado diretamente à um atendente humano. Englobe os principais pontos da conversa, como interesse do aluno, dúvidas, nível atual e etc.\n\n## Instruções\n- Não adicione contexto ou explicações, retorne apenas o histórico de conversa.\n- As mensagens enviadas pelo humano iniciam com o prefixo \"human\", enquanto as mensagens enviadas pelo agente de IA contém o prefixo \"ai\".\n- Englobe todas as informações importantes, porém mantenha o resumo direto ao ponto."
        }
      },
      "type": "@n8n/n8n-nodes-langchain.agent",
      "typeVersion": 2.1,
      "position": [
        1344,
        496
      ],
      "id": "d7d93609-7771-4472-b8da-1532c05b2b8a",
      "name": "AI Agent2"
    },
    {
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4.1-mini"
        },
        "options": {}
      },
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "typeVersion": 1.2,
      "position": [
        1440,
        720
      ],
      "id": "7623138f-aa3a-4ae5-ab13-3d028b37bf98",
      "name": "OpenAI Chat Model3",
      "credentials": {
        "openAiApi": {
          "id": "fTUF7D2wBKLhwIvg",
          "name": "OpenAi aula 11/09"
        }
      }
    },
    {
      "parameters": {
        "sendTo": "enzzo@addept.com.br",
        "subject": "Novo aluno aguardando atendimento",
        "emailType": "text",
        "message": "=Novo aluno aguardando atendimento via WhatsApp.\n\n- Nome: {{ $('Update a row').item.json.nome }}\n- Telefone: {{ $('Update a row').item.json.telefone }}\n- Resumo da Conversa: {{ $json.output }}",
        "options": {
          "appendAttribution": false
        }
      },
      "type": "n8n-nodes-base.gmail",
      "typeVersion": 2.1,
      "position": [
        1744,
        592
      ],
      "id": "c7741fcc-5514-4d08-8453-db304406c90f",
      "name": "Send a message",
      "webhookId": "9dd688de-87ca-4107-bcfe-d4195e86d433",
      "credentials": {
        "gmailOAuth2": {
          "id": "ljWAO527eVFQYRwN",
          "name": "Gmail account"
        }
      }
    },
    {
      "parameters": {},
      "type": "n8n-nodes-base.manualTrigger",
      "typeVersion": 1,
      "position": [
        -96,
        1888
      ],
      "id": "7a481e07-5b48-4c6b-a635-667119c3c6dc",
      "name": "When clicking ‘Execute workflow’"
    },
    {
      "parameters": {
        "assignments": {
          "assignments": [
            {
              "id": "a4c7c945-581a-4132-8df0-e2ed34567fee",
              "name": "texto",
              "value": "=# Trilha Aplicações IA com Python — Asimov Academy\n\n**URL:** https://asimov.academy/trilha-aplicacoes-ia-com-python/ ([asimov.academy](https://asimov.academy/trilha-aplicacoes-ia-com-python/))\n\n---\n\n## Descrição / Objetivo\n\n- Programa de cursos para capacitar participantes a desenvolverem sistemas inteligentes e personalizados usando **Python** e modelos avançados de inteligência artificial. ([asimov.academy](https://asimov.academy/trilha-aplicacoes-ia-com-python/))  \n- Inclui desde fundamentos de programação em Python até técnicas de IA avançadas, uso de APIs (OpenAI), Hugging Face, agentes (Agno), modelos locais e LLMs. ([asimov.academy](https://asimov.academy/trilha-aplicacoes-ia-com-python/))  \n\n---\n\n## Habilidades que você vai aprender\n\n- Programação em Python — do básico até níveis avançados. ([asimov.academy](https://asimov.academy/trilha-aplicacoes-ia-com-python/))  \n- Fundamentos de IA e de modelos de aprendizado de máquina. ([asimov.academy](https://asimov.academy/trilha-aplicacoes-ia-com-python/))  \n- Engenharia de prompts para interagir com modelos de linguagem (LLMs). ([asimov.academy](https://asimov.academy/trilha-aplicacoes-ia-com-python/))  \n- Uso da API da OpenAI (ex: GPT, Whisper, DALL·E) para geração de texto, transcrição, geração de imagem. ([asimov.academy](https://asimov.academy/trilha-aplicacoes-ia-com-python/))  \n- Modelos pré-treinados do Hugging Face para tarefas diversas: análise de documentos, chatbots, análise de sentimentos, reconhecimento de imagem. ([asimov.academy](https://asimov.academy/trilha-aplicacoes-ia-com-python/))  \n- Criação de agentes de IA com frameworks: Agno, integração de modelos, memória, ferramentas, APIs. ([asimov.academy](https://asimov.academy/trilha-aplicacoes-ia-com-python/))  \n- Entendimento interno de como funcionam as LLMs. ([asimov.academy](https://asimov.academy/trilha-aplicacoes-ia-com-python/))  \n\n---\n\n## Diferenciais / Conteúdo Extra\n\n- Projetos avançados construídos passo a passo para fixação e para portfólio. ([asimov.academy](https://asimov.academy/trilha-aplicacoes-ia-com-python/))  \n- Acesso às LLMs mais modernas do mercado (ChatGPT, Claude, etc.), modelos locais (Llama, Mistral), modelos abertos via Hugging Face. ([asimov.academy](https://asimov.academy/trilha-aplicacoes-ia-com-python/))  \n- Enfoque em automação de rotinas, agentes autônomos e aplicações reais. ([asimov.academy](https://asimov.academy/trilha-aplicacoes-ia-com-python/))  \n\n---\n\n## Público-alvo / Pré-requisitos\n\n- Não exige experiência prévia em IA ou em programação. ([asimov.academy](https://asimov.academy/trilha-aplicacoes-ia-com-python/))  \n- Adequada para iniciantes, mas também possui conteúdo desafiador para quem já tem alguma experiência. ([asimov.academy](https://asimov.academy/trilha-aplicacoes-ia-com-python/))  \n\n---\n\n## Planos / Preços\n\n- **Acesso Vitalício**  \n  - Parcelado: 12× R$ 335,90  \n  - À vista: R$ 3.365,70  \n  - Inclui: Todas as Trilhas, todos os projetos, suporte, comunidade, acesso vitalício.  \n  ([asimov.academy](https://asimov.academy/trilha-aplicacoes-ia-com-python/))  \n\n- **Trilha Aplicações IA**  \n  - Parcelado: 12× R$ 67,90  \n  - À vista: R$ 680,35  \n  - Inclui: A Trilha Aplicações IA, projetos desta trilha, 1 ano de acesso, suporte, comunidade.  \n  ([asimov.academy](https://asimov.academy/trilha-aplicacoes-ia-com-python/))  \n\n- **Assinatura Anual**  \n  - Parcelado: 12× R$ 179,00  \n  - À vista: R$ 1.793,55  \n  - Inclui: Todas as trilhas da Asimov, todos os projetos da plataforma, suporte, comunidade, 1 ano de acesso.  \n  ([asimov.academy](https://asimov.academy/trilha-aplicacoes-ia-com-python/))  \n\n---\n\n## Benefícios Incluídos\n\n- Comunidade de alunos (Discord) — networking e oportunidades de trabalho. ([asimov.academy](https://asimov.academy/trilha-aplicacoes-ia-com-python/))  \n- Certificados para cada curso, compartilháveis no LinkedIn. ([asimov.academy](https://asimov.academy/trilha-aplicacoes-ia-com-python/))  \n- Suporte com professores ao longo da jornada. ([asimov.academy](https://asimov.academy/trilha-aplicacoes-ia-com-python/))  \n\n# Trilha Automações com n8n — Asimov Academy\n\n**URL:** https://asimov.academy/automatizando-tudo-com-n8n/ (Asimov Academy)\n\n---\n\n## Descrição / Objetivo\n\n- Aprender **n8n** na prática e colocar sua primeira automação no ar ainda hoje. :contentReference[oaicite:0]{index=0}  \n- Dominar a ferramenta de automação mais usada do mundo sem precisar programar. :contentReference[oaicite:1]{index=1}  \n- Criar automações para você ou para seus clientes com apenas ~20% do esforço usual. :contentReference[oaicite:2]{index=2}  \n\n---\n\n## Habilidades que você vai aprender\n\n- Usar o n8n do zero para criar automações poderosas com inteligência artificial, conectando APIs, bancos de dados, planilhas, CRMs. :contentReference[oaicite:3]{index=3}  \n- Criar workflows visuais mesmo sem experiência em programação. :contentReference[oaicite:4]{index=4}  \n- Integrar com ferramentas como Gmail, Notion, WhatsApp, Slack, Google Sheets, etc. :contentReference[oaicite:5]{index=5}  \n- Automatizar processos reais como envio de e-mails, manipulação de planilhas, alertas, geração de leads. :contentReference[oaicite:6]{index=6}  \n- Hospedar e fazer deploy do n8n em servidores próprios ou em nuvem. :contentReference[oaicite:7]{index=7}  \n\n---\n\n## Exemplos práticos que você vai construir\n\n- Automação para análise qualitativa de currículo enviado via formulário. :contentReference[oaicite:8]{index=8}  \n- Salvamento e categorização de leads via WhatsApp. :contentReference[oaicite:9]{index=9}  \n- IA de suporte via WhatsApp que responde dúvidas de clientes. :contentReference[oaicite:10]{index=10}  \n- Atualizar planilhas automaticamente. :contentReference[oaicite:11]{index=11}  \n- Manipular as principais IAs do mercado. :contentReference[oaicite:12]{index=12}  \n\n---\n\n## Público-alvo / Para quem é este curso\n\n- Empreendedores que querem escalar seus negócios com automações. :contentReference[oaicite:13]{index=13}  \n- Analistas que precisam otimizar tarefas repetitivas. :contentReference[oaicite:14]{index=14}  \n- Freelancers que desejam entregar mais valor com menos esforço. :contentReference[oaicite:15]{index=15}  \n- Especialistas de Marketing & Vendas que querem criar funis automatizados. :contentReference[oaicite:16]{index=16}  \n- Líderes que desejam reduzir retrabalho e aumentar a eficiência das equipes. :contentReference[oaicite:17]{index=17}  \n\n---\n\n## Benefícios da plataforma\n\n- Acesso à comunidade de alunos via Discord — networking e suporte entre alunos. :contentReference[oaicite:18]{index=18}  \n- Certificados por curso, para compartilhamento no LinkedIn. :contentReference[oaicite:19]{index=19}  \n- Suporte com professores por toda a jornada. :contentReference[oaicite:20]{index=20}  \n- Atualizações constantes de conteúdo. :contentReference[oaicite:21]{index=21}  \n\n---\n\n## Planos / Preços\n\n- **Acesso Vitalício**  \n  - Parcelado: 12× R$ 335,90 :contentReference[oaicite:22]{index=22}  \n  - À vista: R$ 3.365,70 :contentReference[oaicite:23]{index=23}  \n  - Inclui: todas as trilhas e cursos, todos os projetos, acesso vitalício, suporte com professores, comunidade de alunos. :contentReference[oaicite:24]{index=24}  \n\n- **Trilha Automações com n8n**  \n  - Parcelado: 12× R$ 67,90 :contentReference[oaicite:25]{index=25}  \n  - À vista: R$ 680,35 :contentReference[oaicite:26]{index=26}  \n  - Inclui: acesso à trilha Automações com n8n, projetos de automações com n8n, 1 ano de acesso, suporte com professores, comunidade de alunos. :contentReference[oaicite:27]{index=27}  \n\n- **Assinatura Anual**  \n  - Parcelado: 12× R$ 179,00 :contentReference[oaicite:28]{index=28}  \n  - À vista: R$ 1.793,55 :contentReference[oaicite:29]{index=29}  \n  - Inclui: todas as trilhas da Asimov, todos os projetos da plataforma, 1 ano de acesso, suporte com professores, comunidade de alunos. :contentReference[oaicite:30]{index=30}\n\n# Trilha Análise e Visualização de Dados — Asimov Academy\n\n**URL:** https://asimov.academy/trilha-analise-e-visualizacao-de-dados/ (Asimov Academy)\n\n---\n\n## Descrição / Objetivo\n\n- Aprenda a analisar dados como profissionais disputados no mercado. :contentReference[oaicite:0]{index=0}  \n- Em poucas semanas, saia do zero e domine análise e visualização de dados na prática. :contentReference[oaicite:1]{index=1}  \n- Você vai manipular dados eficientemente, criar gráficos envolventes e interativos, programar em Python mesmo sem experiência prévia. :contentReference[oaicite:2]{index=2}  \n\n---\n\n## Habilidades que você vai aprender\n\n- Programação em Python do básico ao avançado. :contentReference[oaicite:3]{index=3}  \n- Manipulação de dados (planilhas, bancos de dados, arquivos complexos) com bibliotecas como **Pandas**. :contentReference[oaicite:4]{index=4}  \n- Criação de gráficos úteis com **Matplotlib**, **Seaborn**. :contentReference[oaicite:5]{index=5}  \n- Visualizações interativas com **Plotly**. :contentReference[oaicite:6]{index=6}  \n- Construção de dashboards/web apps com **Streamlit**. :contentReference[oaicite:7]{index=7}  \n- Análise exploratória de dados: identificar padrões, tendências, comunicar insights de forma clara. :contentReference[oaicite:8]{index=8}  \n\n---\n\n## Público-alvo / Pré-requisitos\n\n- Indicado para quem quer trabalhar com dados, visualizações ou relatórios de maneira profissional. :contentReference[oaicite:9]{index=9}  \n- Não é necessário conhecimento prévio em programação ou análise de dados. :contentReference[oaicite:10]{index=10}  \n- Curso projetado para todos os níveis, do iniciante ao mais avançado. :contentReference[oaicite:11]{index=11}  \n\n---\n\n## Benefícios da plataforma / Conteúdo geral\n\n- Projetos autorais exclusivos, passo a passo, do básico ao avançado, para construir portfólio real. :contentReference[oaicite:12]{index=12}  \n- Gráficos interativos, dashboards, web apps personalizados. :contentReference[oaicite:13]{index=13}  \n- Certificados por curso, utilizáveis no LinkedIn. :contentReference[oaicite:14]{index=14}  \n- Suporte com professores durante toda a jornada. :contentReference[oaicite:15]{index=15}  \n- Comunidade de alunos no Discord. :contentReference[oaicite:16]{index=16}  \n- Atualizações constantes do conteúdo. :contentReference[oaicite:17]{index=17}  \n\n---\n\n## Planos / Preços\n\n- **Acesso Vitalício**  \n  - Parcelado: 12× R$ 335,90 :contentReference[oaicite:18]{index=18}  \n  - À vista: R$ 3.365,70 :contentReference[oaicite:19]{index=19}  \n  - Inclui: Todas as Trilhas e Cursos, todos os projetos, acesso vitalício, suporte com professores, comunidade de alunos. :contentReference[oaicite:20]{index=20}  \n\n- **Trilha Análise e Visualização de Dados**  \n  - Parcelado: 12× R$ 67,90 :contentReference[oaicite:21]{index=21}  \n  - À vista: R$ 680,35 :contentReference[oaicite:22]{index=22}  \n  - Inclui: cursos e projetos específicos da trilha, 1 ano de acesso, suporte com professores, comunidade de alunos. :contentReference[oaicite:23]{index=23}  \n\n- **Assinatura Anual**  \n  - Parcelado: 12× R$ 179,00 :contentReference[oaicite:24]{index=24}  \n  - À vista: R$ 1.793,55 :contentReference[oaicite:25]{index=25}  \n  - Inclui: todas as trilhas da Asimov, todos os projetos da plataforma, 1 ano de acesso, suporte com professores, comunidade de alunos. :contentReference[oaicite:26]{index=26} \n\n# Trilha Dashboards Interativos com Python — Asimov Academy\n\n**URL:** https://asimov.academy/dashboards-interativos-com-python/ (Asimov Academy)\n\n---\n\n## Descrição / Objetivo\n\n- Construir Aplicativos Web e Dashboards interativos usando apenas Python. :contentReference[oaicite:0]{index=0}  \n- Dominar a criação de sistemas web modernos para análise de dados que rodam no navegador. :contentReference[oaicite:1]{index=1}  \n- Abandonar planilhas tradicionais para apresentar dados com dashboards mais dinâmicos, personalizados e compartilháveis. :contentReference[oaicite:2]{index=2}  \n\n---\n\n## O que você aprende na trilha\n\n- Programar em Python desde o zero (curso “Python Starter”) até aplicações práticas. :contentReference[oaicite:3]{index=3}  \n- Extrair, transformar e carregar dados com a biblioteca Pandas. :contentReference[oaicite:4]{index=4}  \n- Construir visualizações interativas com Plotly. :contentReference[oaicite:5]{index=5}  \n- Desenvolver aplicativos web interativos e dashboards com Dash e Streamlit. :contentReference[oaicite:6]{index=6}  \n- Preparar dashboards para produção, tornando-os acessíveis via web. :contentReference[oaicite:7]{index=7}  \n\n---\n\n## Quem pode participar / Pré-requisitos\n\n- Todos os níveis de habilidade são bem-vindos: desde quem não tem experiência até quem já conhece programação ou análise de dados. :contentReference[oaicite:8]{index=8}  \n- Não é necessário conhecimento prévio em programação ou visualização. :contentReference[oaicite:9]{index=9}  \n\n---\n\n## Benefícios da plataforma\n\n- Projetos autorais exclusivos, passo a passo, para reforçar o aprendizado. :contentReference[oaicite:10]{index=10}  \n- Acesso à comunidade de alunos via Discord. :contentReference[oaicite:11]{index=11}  \n- Certificados por curso, para compartilhar em redes como LinkedIn. :contentReference[oaicite:12]{index=12}  \n- Suporte com professores durante toda a jornada. :contentReference[oaicite:13]{index=13}  \n- Atualizações constantes de conteúdo. :contentReference[oaicite:14]{index=14}  \n\n---\n\n## Planos / Preços\n\n- **Assinatura Anual**  \n  - Parcelado: 12× R$ 179,00 :contentReference[oaicite:15]{index=15}  \n  - À vista: R$ 1.793,55 :contentReference[oaicite:16]{index=16}  \n  - Inclui:  \n    * Todas as trilhas da Asimov  \n    * Todos os projetos da plataforma  \n    * 1 ano de acesso  \n    * Suporte com professores  \n    * Comunidade de alunos :contentReference[oaicite:17]{index=17}  \n\n- **Trilha Dashboards**  \n  - Parcelado: 12× R$ 67,90 :contentReference[oaicite:18]{index=18}  \n  - À vista: R$ 680,35 :contentReference[oaicite:19]{index=19}  \n  - Inclui:  \n    * A Trilha Dashboards  \n    * Projetos de Dashboards  \n    * 1 ano de acesso  \n    * Suporte com professores  \n    * Comunidade de alunos :contentReference[oaicite:20]{index=20}\n\n# Trilha Visão Computacional com Python — Asimov Academy\n\n**URL:** https://asimov.academy/trilha-visao-computacional/ (Asimov Academy)\n\n---\n\n## Descrição / Objetivo\n\n- Crie aplicativos que analisem **vídeos e imagens** usando inteligência artificial e Python. :contentReference[oaicite:0]{index=0}  \n- A trilha ensina desde programação em Python do zero até construção de projetos complexos envolvendo visão computacional. :contentReference[oaicite:1]{index=1}  \n\n---\n\n## O que você aprende na trilha\n\n- Programar em Python (curso “Python Starter”), começando do zero. :contentReference[oaicite:2]{index=2}  \n- Manipular imagens com a biblioteca **Pillow**. :contentReference[oaicite:3]{index=3}  \n- Operações matriciais com **NumPy**, essenciais para vídeos/imagens. :contentReference[oaicite:4]{index=4}  \n- Processar vídeos e streams usando **OpenCV**. :contentReference[oaicite:5]{index=5}  \n- Utilizar algoritmos de IA e frameworks como **MediaPipe** para soluções avançadas. :contentReference[oaicite:6]{index=6}  \n\n---\n\n## Projetos\n\n- Projetos autorais avançados, construídos passo a passo. :contentReference[oaicite:7]{index=7}  \n\n---\n\n## Benefícios da plataforma\n\n- Comunidade de alunos (Discord) para networking e suporte mútuo. :contentReference[oaicite:8]{index=8}  \n- Certificados para cada curso, para usar no LinkedIn. :contentReference[oaicite:9]{index=9}  \n- Suporte direto com professores durante toda a jornada. :contentReference[oaicite:10]{index=10}  \n- Acesso imediato ao conteúdo. :contentReference[oaicite:11]{index=11}  \n- Atualizações constantes nos cursos. :contentReference[oaicite:12]{index=12}  \n\n---\n\n## Perfil do público / Pré-requisitos\n\n- Indicado para todos os níveis: iniciantes ou com alguma experiência. :contentReference[oaicite:13]{index=13}  \n- Não é necessário ter conhecimento prévio em visão computacional ou em Python. :contentReference[oaicite:14]{index=14}  \n\n---\n\n## Planos / Preços\n\n- **Assinatura Anual**  \n  - Parcelado: 12× R$ 179,00 :contentReference[oaicite:15]{index=15}  \n  - À vista: R$ 1.793,55 :contentReference[oaicite:16]{index=16}  \n  - Inclui: Todas as trilhas da Asimov; todos os projetos da plataforma; 1 ano de acesso; suporte com professores; comunidade de alunos. :contentReference[oaicite:17]{index=17}  \n\n- **Trilha Visão Computacional**  \n  - Parcelado: 12× R$ 67,90 :contentReference[oaicite:18]{index=18}  \n  - À vista: R$ 680,35 :contentReference[oaicite:19]{index=19}  \n  - Inclui: A Trilha Visão Computacional; projetos dessa trilha; 1 ano de acesso; suporte com professores; comunidade de alunos. :contentReference[oaicite:20]{index=20}\n\n# Trilha Engenharia de Dados — Asimov Academy\n\n**URL:** https://asimov.academy/trilha-engenharia-de-dados/ (Asimov Academy)\n\n---\n\n## Descrição / Objetivo\n\n- Domine os fundamentos de Engenharia de Dados e construa seu primeiro pipeline com Python. ([asimov.academy](https://asimov.academy/trilha-engenharia-de-dados/))  \n- Em poucas semanas você sairá do zero e estará criando pipelines reais com ferramentas usadas no mercado, do zero até o deploy na nuvem. Aprenda na prática a organizar, automatizar e escalar dados para resolver problemas reais. ([asimov.academy](https://asimov.academy/trilha-engenharia-de-dados/))\n\n---\n\n## O que você vai aprender na trilha\n\n- Criar pipelines ETL do zero com Python — extração, transformação e armazenamento automático com scripts organizados e reutilizáveis. ([asimov.academy](https://asimov.academy/trilha-engenharia-de-dados/))  \n- Uso de **SQL** e **Pandas** para trabalhar de forma eficiente com dados: limpeza, agrupamento, junções, filtros. ([asimov.academy](https://asimov.academy/trilha-engenharia-de-dados/))  \n- Automatizar tarefas conectando com APIs e criar automações em tempo real no fluxo de dados. ([asimov.academy](https://asimov.academy/trilha-engenharia-de-dados/))  \n- Dominar o sistema operacional Linux: comandos para administrar arquivos, ambientes e automações. ([asimov.academy](https://asimov.academy/trilha-engenharia-de-dados/))  \n- Programar em Python do zero ao avançado, mesmo sem experiência prévia. ([asimov.academy](https://asimov.academy/trilha-engenharia-de-dados/))  \n- Fazer deploy na nuvem usando Docker — containerizar projetos, preparar para ambientes de produção. ([asimov.academy](https://asimov.academy/trilha-engenharia-de-dados/))  \n- Orquestração de processos com Apache Airflow para rodar pipelines agendados ou por demanda. ([asimov.academy](https://asimov.academy/trilha-engenharia-de-dados/))\n\n---\n\n## Público-alvo / Pré-requisitos\n\n- Indicado tanto para iniciantes quanto para quem quer migrar de área para Engenharia de Dados. ([asimov.academy](https://asimov.academy/trilha-engenharia-de-dados/))  \n- Não é necessário ter experiência prévia em programação ou em dados — o curso oferece aulas passo a passo e exemplos práticos guiados. ([asimov.academy](https://asimov.academy/trilha-engenharia-de-dados/))\n\n---\n\n## Benefícios da plataforma\n\n- Acesso imediato ao conteúdo e às trilhas da Asimov. ([asimov.academy](https://asimov.academy/trilha-engenharia-de-dados/))  \n- Projetos práticos, construídos passo a passo, prontos para portfólio. ([asimov.academy](https://asimov.academy/trilha-engenharia-de-dados/))  \n- Certificados por curso, para compartilhar profissionalmente (ex.: LinkedIn). ([asimov.academy](https://asimov.academy/trilha-engenharia-de-dados/))  \n- Suporte com professores durante toda a trilha. ([asimov.academy](https://asimov.academy/trilha-engenharia-de-dados/))  \n- Acesso à comunidade de alunos (Discord). ([asimov.academy](https://asimov.academy/trilha-engenharia-de-dados/))  \n\n---\n\n## Planos / Preços\n\n- **Assinatura Anual**  \n  - Parcelado: 12× R$ 179,00  \n  - À vista: R$ 1.793,55 com desconto  \n  - Inclui: todas as trilhas da Asimov; todos os projetos da plataforma; 1 ano de acesso; suporte com professores; comunidade de alunos. ([asimov.academy](https://asimov.academy/trilha-engenharia-de-dados/))\n\n- **Trilha Engenharia de Dados**  \n  - Parcelado: 12× R$ 67,90  \n  - À vista: R$ 680,35 com desconto  \n  - Inclui: a Trilha Engenharia de Dados; projetos da trilha; 1 ano de acesso; suporte com professores; comunidade de alunos. ([asimov.academy](https://asimov.academy/trilha-engenharia-de-dados/))\n\n---\n\n## Outras informações úteis\n\n- Garantia de 7 dias para reembolso (Art. 49 do Código de Defesa do Consumidor). ([asimov.academy](https://asimov.academy/trilha-engenharia-de-dados/))  \n- A assinatura anual renova automaticamente. Caso não queira renovar, pode solicitar pelo suporte por e-mail. ([asimov.academy](https://asimov.academy/trilha-engenharia-de-dados/))\n\n# Trilha Python para Web — Asimov Academy\n\n**URL:** https://asimov.academy/trilha-python-para-web/ (Asimov Academy)\n\n---\n\n## Descrição / Objetivo\n\n- Em poucas semanas, você vai sair do zero e desenvolver aplicações web completas com Python, Django e banco de dados. :contentReference[oaicite:0]{index=0}  \n- Aprender a construir, versionar e publicar sistemas reais, prontos para o mundo. :contentReference[oaicite:1]{index=1}  \n\n---\n\n## O que você vai aprender na Trilha\n\n- Programar em Python do zero, entendendo os conceitos fundamentais da programação. :contentReference[oaicite:2]{index=2}  \n- Criar aplicações completas com **Python** e **Django**. :contentReference[oaicite:3]{index=3}  \n- Estruturar rotas, views e templates com Django. :contentReference[oaicite:4]{index=4}  \n- Gerenciar banco de dados e modelos, usar Django Admin, trabalhar com SQLite (e outros bancos). :contentReference[oaicite:5]{index=5}  \n- Versionar código e colaborar com Git e GitHub. :contentReference[oaicite:6]{index=6}  \n- Fazer deploy de aplicações na nuvem com plataformas como PythonAnywhere. :contentReference[oaicite:7]{index=7}  \n- Criar portfólio profissional com sistema de contato, envio de e-mail real e proteção anti-spam (ex: Captcha). :contentReference[oaicite:8]{index=8}  \n\n---\n\n## Público-alvo / Pré-requisitos\n\n- Indicado para todos os níveis, desde iniciantes até quem já tem alguma experiência. :contentReference[oaicite:9]{index=9}  \n- Não é necessário conhecimento prévio em programação para participar desta trilha. :contentReference[oaicite:10]{index=10}  \n\n---\n\n## Benefícios da plataforma\n\n- Acesso a diversas trilhas, atualizações constantes e acesso imediato ao conteúdo. :contentReference[oaicite:11]{index=11}  \n- Comunidade de alunos via Discord para networking e suporte. :contentReference[oaicite:12]{index=12}  \n- Certificados para cada curso, compartilháveis no LinkedIn. :contentReference[oaicite:13]{index=13}  \n- Suporte com professores durante toda a jornada. :contentReference[oaicite:14]{index=14}  \n\n---\n\n## Planos / Preços\n\n- **Assinatura Anual**  \n  - Parcelado: 12× R$ 179,00 :contentReference[oaicite:15]{index=15}  \n  - À vista: R$ 1.793,55 com desconto :contentReference[oaicite:16]{index=16}  \n  - Inclui: Todas as trilhas da Asimov; todos os projetos da plataforma; 1 ano de acesso; suporte com professores; comunidade de alunos. :contentReference[oaicite:17]{index=17}  \n\n- **Trilha Python para Web**  \n  - Parcelado: 12× R$ 67,90 :contentReference[oaicite:18]{index=18}  \n  - À vista: R$ 680,35 com desconto :contentReference[oaicite:19]{index=19}  \n  - Inclui: A Trilha Python para Web; projetos de Python para Web; 1 ano de acesso; suporte com professores; comunidade de alunos. :contentReference[oaicite:20]{index=20}  \n\n# Trilha Data Science e Machine Learning — Asimov Academy\n\n**URL:** https://asimov.academy/trilha-data-science-e-machine-learning/ (Asimov Academy)\n\n---\n\n## Descrição / Objetivo\n\n- Dominar ciência de dados usando Python; do básico ao avançado. :contentReference[oaicite:0]{index=0}  \n- Explorar dados, desenvolver modelos preditivos e extrair insights para apoiar decisões. :contentReference[oaicite:1]{index=1}  \n\n---\n\n## O que você aprende na trilha\n\n- Manipular dados com **Pandas** e **SQL**, incluindo limpeza e preparação dos dados. :contentReference[oaicite:2]{index=2}  \n- Criar visualizações completas de dados com estilo, usando bibliotecas como Seaborn. :contentReference[oaicite:3]{index=3}  \n- Fazer análise exploratória de dados para descobrir padrões e tendências; comunicar insights de forma clara. :contentReference[oaicite:4]{index=4}  \n- Utilizar técnicas de Machine Learning para construir modelos preditivos. :contentReference[oaicite:5]{index=5}  \n\n---\n\n## Cursos e Projetos\n\n- Há cursos integrados à trilha para dar suporte desde os fundamentos até Machine Learning prático. :contentReference[oaicite:6]{index=6}  \n- Projetos autorais exclusivos para aplicar na prática o aprendizado. :contentReference[oaicite:7]{index=7}  \n\n---\n\n## Benefícios da plataforma\n\n- Comunidade de alunos (Discord) para networking. :contentReference[oaicite:8]{index=8}  \n- Certificados por curso, compartilháveis no LinkedIn. :contentReference[oaicite:9]{index=9}  \n- Suporte com professores durante toda a jornada. :contentReference[oaicite:10]{index=10}  \n- Conteúdo acessível assim que matriculado; atualizações constantes. :contentReference[oaicite:11]{index=11}  \n\n---\n\n## Planos / Preços\n\n- **Assinatura Anual**  \n  - Parcelado: 12 × R$ 179,00 :contentReference[oaicite:12]{index=12}  \n  - À vista: R$ 1.793,55 com desconto :contentReference[oaicite:13]{index=13}  \n  - Inclui: todas as trilhas da Asimov; todos os projetos da plataforma; 1 ano de acesso; suporte com professores; comunidade de alunos. :contentReference[oaicite:14]{index=14}  \n\n- **Trilha Data Science & Machine Learning**  \n  - Parcelado: 12 × R$ 67,90 :contentReference[oaicite:15]{index=15}  \n  - À vista: R$ 680,35 com desconto :contentReference[oaicite:16]{index=16}  \n  - Inclui: acesso à trilha Data Science & Machine Learning; projetos da trilha; 1 ano de acesso; suporte com professores; comunidade de alunos. :contentReference[oaicite:17]{index=17}  ",
              "type": "string"
            }
          ]
        },
        "options": {}
      },
      "type": "n8n-nodes-base.set",
      "typeVersion": 3.4,
      "position": [
        224,
        1120
      ],
      "id": "68519c92-2a1f-431d-8c8d-6729a544fbea",
      "name": "Edit Fields6"
    },
    {
      "parameters": {
        "jsCode": "const conteudo = $input.first().json.texto;\n\n// Quebra em blocos a partir de cada título \"# Trilha\"\nconst trilhas = conteudo.split(/^# Trilha/m).filter(t => t.trim() !== \"\");\n\n// Remonta cada chunk adicionando de volta o \"# Trilha\" no início\nconst chunks = trilhas.map(t => \"# Trilha\" + t.trim());\n\n// Retorna cada chunk no formato esperado pelo n8n\nreturn chunks.map(c => ({\n  json: { chunk: c }\n}));"
      },
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        448,
        1120
      ],
      "id": "bdc646b2-58f4-465e-80f3-5d230cc1f580",
      "name": "Code"
    },
    {
      "parameters": {
        "options": {}
      },
      "type": "n8n-nodes-base.splitInBatches",
      "typeVersion": 3,
      "position": [
        672,
        1120
      ],
      "id": "a262ce96-aeb0-4a49-b74e-8c2487296fb3",
      "name": "Loop Over Items1"
    },
    {
      "parameters": {},
      "type": "n8n-nodes-base.noOp",
      "name": "Replace Me1",
      "typeVersion": 1,
      "position": [
        896,
        928
      ],
      "id": "0e9f5ccb-24da-45f0-bd62-f8039bbaf7b4"
    },
    {
      "parameters": {
        "mode": "insert",
        "tableName": {
          "__rl": true,
          "value": "documents",
          "mode": "list",
          "cachedResultName": "documents"
        },
        "options": {
          "queryName": "match_documents"
        }
      },
      "type": "@n8n/n8n-nodes-langchain.vectorStoreSupabase",
      "typeVersion": 1.3,
      "position": [
        1136,
        1184
      ],
      "id": "e7b7c5b9-6646-4d5c-94dc-a2a6931e82cd",
      "name": "Supabase Vector Store1",
      "credentials": {
        "supabaseApi": {
          "id": "D24rsShjMLd56die",
          "name": "Supabase Asimov"
        }
      }
    },
    {
      "parameters": {
        "options": {}
      },
      "type": "@n8n/n8n-nodes-langchain.embeddingsOpenAi",
      "typeVersion": 1.2,
      "position": [
        1120,
        1408
      ],
      "id": "b0b31689-24f3-4403-81f8-c5afdb16e15c",
      "name": "Embeddings OpenAI1",
      "credentials": {
        "openAiApi": {
          "id": "fTUF7D2wBKLhwIvg",
          "name": "OpenAi aula 11/09"
        }
      }
    },
    {
      "parameters": {
        "jsonMode": "expressionData",
        "jsonData": "={{ $json.chunk }}",
        "textSplittingMode": "custom",
        "options": {}
      },
      "type": "@n8n/n8n-nodes-langchain.documentDefaultDataLoader",
      "typeVersion": 1.1,
      "position": [
        1248,
        1408
      ],
      "id": "1dfb76dc-94fe-4366-997f-01cbb5f27405",
      "name": "Default Data Loader"
    },
    {
      "parameters": {
        "chunkSize": 10000,
        "options": {}
      },
      "type": "@n8n/n8n-nodes-langchain.textSplitterRecursiveCharacterTextSplitter",
      "typeVersion": 1,
      "position": [
        1344,
        1616
      ],
      "id": "a0cbed79-e176-49ad-be39-8a4a91101c97",
      "name": "Recursive Character Text Splitter"
    },
    {
      "parameters": {
        "assignments": {
          "assignments": [
            {
              "id": "d5cdc149-629a-4c45-9d9a-d17c33b6a64e",
              "name": "chunk",
              "value": "={{ $json.chunk }}",
              "type": "string"
            }
          ]
        },
        "options": {}
      },
      "type": "n8n-nodes-base.set",
      "typeVersion": 3.4,
      "position": [
        896,
        1120
      ],
      "id": "d97d7911-7134-45ff-add7-3a89a9395c5e",
      "name": "Edit Fields8"
    },
    {
      "parameters": {
        "conditions": {
          "options": {
            "caseSensitive": true,
            "leftValue": "",
            "typeValidation": "strict",
            "version": 2
          },
          "conditions": [
            {
              "id": "3e229c0f-0327-4c9c-a428-de5b29fb6b78",
              "leftValue": "={{ $('Get many rows').item.json.status }}",
              "rightValue": "Transferido",
              "operator": {
                "type": "string",
                "operation": "equals",
                "name": "filter.operator.equals"
              }
            }
          ],
          "combinator": "and"
        },
        "options": {}
      },
      "type": "n8n-nodes-base.if",
      "typeVersion": 2.2,
      "position": [
        1120,
        -80
      ],
      "id": "089bf8f9-96d3-436e-90e0-3044be7dc99c",
      "name": "If"
    },
    {
      "parameters": {},
      "type": "n8n-nodes-base.noOp",
      "typeVersion": 1,
      "position": [
        1344,
        -80
      ],
      "id": "0fa819a9-53b8-4b90-8882-7d0d2df17d39",
      "name": "No Operation, do nothing"
    },
    {
      "parameters": {
        "operation": "download",
        "fileId": {
          "__rl": true,
          "value": "1PV7JoNJqFY4gqTy-AWm-y9BzLl8AU5h6",
          "mode": "list",
          "cachedResultName": "base_conhecimento_addept.pdf",
          "cachedResultUrl": "https://drive.google.com/file/d/1PV7JoNJqFY4gqTy-AWm-y9BzLl8AU5h6/view?usp=drivesdk"
        },
        "options": {}
      },
      "type": "n8n-nodes-base.googleDrive",
      "typeVersion": 3,
      "position": [
        112,
        1888
      ],
      "id": "8f29fdca-d953-4c80-8391-51735c1936ad",
      "name": "Download file",
      "credentials": {
        "googleDriveOAuth2Api": {
          "id": "8kAeNIo4xpEoD6Da",
          "name": "Google Drive account"
        }
      }
    },
    {
      "parameters": {
        "operation": "pdf",
        "options": {}
      },
      "type": "n8n-nodes-base.extractFromFile",
      "typeVersion": 1,
      "position": [
        320,
        1888
      ],
      "id": "2728f4b3-5c6f-49f3-a4c3-e525498c7c2d",
      "name": "Extract from File"
    },
    {
      "parameters": {
        "mode": "insert",
        "tableName": {
          "__rl": true,
          "value": "documents",
          "mode": "list",
          "cachedResultName": "documents"
        },
        "options": {
          "queryName": "match_documents"
        }
      },
      "type": "@n8n/n8n-nodes-langchain.vectorStoreSupabase",
      "typeVersion": 1.3,
      "position": [
        736,
        1888
      ],
      "id": "c2c99021-a82b-4332-995c-9758e383bfac",
      "name": "Supabase Vector Store2",
      "credentials": {
        "supabaseApi": {
          "id": "D24rsShjMLd56die",
          "name": "Supabase Asimov"
        }
      }
    },
    {
      "parameters": {
        "options": {}
      },
      "type": "@n8n/n8n-nodes-langchain.embeddingsOpenAi",
      "typeVersion": 1.2,
      "position": [
        656,
        2096
      ],
      "id": "f41665d2-68d9-49d9-9651-bd9b17b330c6",
      "name": "Embeddings OpenAI2",
      "credentials": {
        "openAiApi": {
          "id": "fTUF7D2wBKLhwIvg",
          "name": "OpenAi aula 11/09"
        }
      }
    },
    {
      "parameters": {
        "options": {}
      },
      "type": "@n8n/n8n-nodes-langchain.documentDefaultDataLoader",
      "typeVersion": 1.1,
      "position": [
        880,
        2096
      ],
      "id": "4573bf81-1169-4a49-961b-e0a76a3f4d9b",
      "name": "Default Data Loader1"
    },
    {
      "parameters": {
        "assignments": {
          "assignments": [
            {
              "id": "26ae3dc8-5faa-42a7-9a85-e34285c1e2cd",
              "name": "texto",
              "value": "={{ $json.text }}",
              "type": "string"
            }
          ]
        },
        "options": {}
      },
      "type": "n8n-nodes-base.set",
      "typeVersion": 3.4,
      "position": [
        528,
        1888
      ],
      "id": "5b741323-678a-4584-aeb4-42cd57638800",
      "name": "Edit Fields7"
    }
  ],
  "pinData": {
    "Webhook": [
      {
        "json": {
          "headers": {
            "host": "primary-wukb-production.up.railway.app",
            "user-agent": "facebookexternalua",
            "content-length": "599",
            "accept": "*/*",
            "accept-encoding": "deflate, gzip",
            "content-type": "application/json",
            "x-forwarded-for": "173.252.95.5",
            "x-forwarded-host": "primary-wukb-production.up.railway.app",
            "x-forwarded-proto": "https",
            "x-hub-signature": "sha1=7cc8b8b32f906f109cb778d1d00c4be36c3627cc",
            "x-hub-signature-256": "sha256=344c1b2a5a4c06693c85291d00246c4e552ec4611a547a37bf668a6b2e299e75",
            "x-railway-edge": "railway/us-east4-eqdc4a",
            "x-railway-request-id": "KM3GWj9bRVmf1JYRozsQ6Q",
            "x-real-ip": "173.252.95.5",
            "x-request-start": "1758589573084"
          },
          "params": {},
          "query": {},
          "body": {
            "object": "whatsapp_business_account",
            "entry": [
              {
                "id": "1555182578782782",
                "changes": [
                  {
                    "value": {
                      "messaging_product": "whatsapp",
                      "metadata": {
                        "display_phone_number": "551152962972",
                        "phone_number_id": "713649455175523"
                      },
                      "contacts": [
                        {
                          "profile": {
                            "name": "Enzzo Panarotto"
                          },
                          "wa_id": "555497076306"
                        }
                      ],
                      "messages": [
                        {
                          "from": "555497076306",
                          "id": "wamid.HBgMNTU1NDk3MDc2MzA2FQIAEhgUM0I2MjgxMjYxRDAwNDAzRjE5QUYA",
                          "timestamp": "1758589571",
                          "type": "audio",
                          "audio": {
                            "mime_type": "audio/ogg; codecs=opus",
                            "sha256": "EiDG2c3IAzrDqd79rSzIE/tdEhHL4ccth0okRtSuI90=",
                            "id": "1339179137813645",
                            "voice": true
                          }
                        }
                      ]
                    },
                    "field": "messages"
                  }
                ]
              }
            ]
          },
          "webhookUrl": "https://primary-wukb-production.up.railway.app/webhook/api-oficial-whatsapp",
          "executionMode": "production"
        }
      }
    ],
    "When Executed by Another Workflow": [
      {
        "json": {
          "telefone": 555497076306
        }
      }
    ]
  },
  "connections": {
    "Webhook": {
      "main": [
        [
          {
            "node": "If2",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "If2": {
      "main": [
        [
          {
            "node": "No Operation, do nothing3",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Edit Fields2",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Edit Fields2": {
      "main": [
        [
          {
            "node": "Get many rows",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get many rows": {
      "main": [
        [
          {
            "node": "If3",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "If3": {
      "main": [
        [
          {
            "node": "If",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Create a row",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Create a row": {
      "main": [
        [
          {
            "node": "Switch1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Switch1": {
      "main": [
        [
          {
            "node": "No Operation, do nothing4",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "HTTP Request4",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "HTTP Request5",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "HTTP Request5": {
      "main": [
        [
          {
            "node": "HTTP Request6",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "HTTP Request6": {
      "main": [
        [
          {
            "node": "Analyze image1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "HTTP Request4": {
      "main": [
        [
          {
            "node": "HTTP Request7",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "HTTP Request7": {
      "main": [
        [
          {
            "node": "Transcribe a recording1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Transcribe a recording1": {
      "main": [
        [
          {
            "node": "Edit Fields3",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "No Operation, do nothing4": {
      "main": [
        [
          {
            "node": "Edit Fields3",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Analyze image1": {
      "main": [
        [
          {
            "node": "Edit Fields3",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Edit Fields3": {
      "main": [
        [
          {
            "node": "Redis3",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Redis3": {
      "main": [
        [
          {
            "node": "Wait1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Wait1": {
      "main": [
        [
          {
            "node": "Redis4",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Redis4": {
      "main": [
        [
          {
            "node": "If4",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "If4": {
      "main": [
        [
          {
            "node": "Edit Fields4",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "No Operation, do nothing5",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Edit Fields4": {
      "main": [
        [
          {
            "node": "Redis5",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Redis5": {
      "main": [
        [
          {
            "node": "AI Agent",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "AI Agent",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "AI Agent": {
      "main": [
        [
          {
            "node": "AI Agent1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Chat Model1": {
      "ai_languageModel": [
        [
          {
            "node": "AI Agent1",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "AI Agent1": {
      "main": [
        [
          {
            "node": "Edit Fields5",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Edit Fields5": {
      "main": [
        [
          {
            "node": "Split Out",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Split Out": {
      "main": [
        [
          {
            "node": "Loop Over Items",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Loop Over Items": {
      "main": [
        [
          {
            "node": "Replace Me",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Wait2",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Replace Me": {
      "main": [
        []
      ]
    },
    "Wait2": {
      "main": [
        [
          {
            "node": "Send message1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Send message1": {
      "main": [
        [
          {
            "node": "Loop Over Items",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Postgres Chat Memory": {
      "ai_memory": [
        [
          {
            "node": "AI Agent",
            "type": "ai_memory",
            "index": 0
          }
        ]
      ]
    },
    "AI Agent Tool": {
      "ai_tool": [
        [
          {
            "node": "AI Agent",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Chat Model2": {
      "ai_languageModel": [
        [
          {
            "node": "AI Agent Tool",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Supabase Vector Store": {
      "ai_tool": [
        [
          {
            "node": "AI Agent",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Embeddings OpenAI": {
      "ai_embedding": [
        [
          {
            "node": "Supabase Vector Store",
            "type": "ai_embedding",
            "index": 0
          }
        ]
      ]
    },
    "Call n8n Workflow Tool": {
      "ai_tool": [
        [
          {
            "node": "AI Agent",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "When Executed by Another Workflow": {
      "main": [
        [
          {
            "node": "Edit Fields",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Edit Fields": {
      "main": [
        [
          {
            "node": "Update a row",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Update a row": {
      "main": [
        [
          {
            "node": "Get many rows1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get many rows1": {
      "main": [
        [
          {
            "node": "Edit Fields1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Edit Fields1": {
      "main": [
        [
          {
            "node": "Aggregate",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Aggregate": {
      "main": [
        [
          {
            "node": "AI Agent2",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Chat Model3": {
      "ai_languageModel": [
        [
          {
            "node": "AI Agent2",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "AI Agent2": {
      "main": [
        [
          {
            "node": "Send a message",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "When clicking ‘Execute workflow’": {
      "main": [
        [
          {
            "node": "Download file",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Edit Fields6": {
      "main": [
        [
          {
            "node": "Code",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Code": {
      "main": [
        [
          {
            "node": "Loop Over Items1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Loop Over Items1": {
      "main": [
        [
          {
            "node": "Replace Me1",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Edit Fields8",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Replace Me1": {
      "main": [
        []
      ]
    },
    "Embeddings OpenAI1": {
      "ai_embedding": [
        [
          {
            "node": "Supabase Vector Store1",
            "type": "ai_embedding",
            "index": 0
          }
        ]
      ]
    },
    "Default Data Loader": {
      "ai_document": [
        [
          {
            "node": "Supabase Vector Store1",
            "type": "ai_document",
            "index": 0
          }
        ]
      ]
    },
    "Recursive Character Text Splitter": {
      "ai_textSplitter": [
        [
          {
            "node": "Default Data Loader",
            "type": "ai_textSplitter",
            "index": 0
          }
        ]
      ]
    },
    "Supabase Vector Store1": {
      "main": [
        [
          {
            "node": "Loop Over Items1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Edit Fields8": {
      "main": [
        [
          {
            "node": "Supabase Vector Store1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "If": {
      "main": [
        [
          {
            "node": "No Operation, do nothing",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Switch1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Download file": {
      "main": [
        [
          {
            "node": "Extract from File",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Extract from File": {
      "main": [
        [
          {
            "node": "Edit Fields7",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Embeddings OpenAI2": {
      "ai_embedding": [
        [
          {
            "node": "Supabase Vector Store2",
            "type": "ai_embedding",
            "index": 0
          }
        ]
      ]
    },
    "Default Data Loader1": {
      "ai_document": [
        [
          {
            "node": "Supabase Vector Store2",
            "type": "ai_document",
            "index": 0
          }
        ]
      ]
    },
    "Edit Fields7": {
      "main": [
        [
          {
            "node": "Supabase Vector Store2",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "active": true,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "c75b7a4d-2e56-4cff-9687-355e1ee8b076",
  "meta": {
    "templateCredsSetupCompleted": true,
    "instanceId": "3816c47d3544af63ae31c4ad7115aca9fde85aca199bcae8101799dd5d820b69"
  },
  "id": "n3KcpQFlT2FrbGh6",
  "tags": []
}