MÓDULO 4.2

🔁 Primeira automação ponta a ponta

Agora você monta um fluxo de verdade: do gatilho à ação visível, com a IA no meio. Trigger por webhook ou agenda, coleta da entrada, chamada ao LLM, parsing da saída, execução da ação e leitura da execução.

6
Tópicos
50
Minutos
Prático
Nível
Mão na massa
Tipo
Trigger Coletar IA / LLM Parse Ação Observar

Ilustrativo — os seis passos deste módulo, na ordem em que viram um fluxo só.

1

⚡ Trigger

O trigger decide a natureza da automação. Um Webhook a torna reativa (alguém manda dado e ela responde); um Schedule a torna proativa (roda sozinha em horários definidos).

✓ Webhook (reativo)

  • Formulário enviado, pagamento aprovado, mensagem recebida.
  • Resposta em tempo real ao evento.
  • Você recebe um payload pronto para usar.

✓ Schedule (proativo)

  • Relatório diário, varredura de e-mails a cada 15 min.
  • Não depende de ninguém disparar.
  • Definido por cron: 0 9 * * 1-5 (9h em dias úteis).
# payload que chega num Webhook trigger
POST /webhook/novo-lead
{ "nome": "Ana", "email": "ana@x.com", "mensagem": "Quero um orçamento" }
// disponível no fluxo como: ={{ $json.body.email }}
2

📥 Coletar dados de entrada

Antes de chamar a IA, extraia e normalize os campos que importam. A qualidade da resposta do modelo é proporcional ao contexto que você entrega — lixo na entrada, lixo na saída.

# Set node — montando um contexto limpo
{
  "nome":     "={{ $json.body.nome }}",
  "email":    "={{ $json.body.email.toLowerCase() }}",
  "mensagem": "={{ $json.body.mensagem.trim() }}"
}

📊 Por que normalizar na entrada

  • Consistência - e-mail em minúsculo evita duplicata na hora de gravar.
  • Token economia - mandar só os campos úteis reduz o custo da chamada de IA.
  • Validação cedo - barrar entrada vazia aqui evita gastar uma chamada à toa.
$json.body

Acessar o payload

Set node

Montar contexto

={{ }}

Expressões

Validação

Barrar lixo cedo

3

🤖 Chamar a IA

O coração da automação com IA. Use o node nativo (OpenAI/Anthropic) quando existe; senão, o HTTP Request chama a API direto. Peça saída em JSON para não sofrer no parsing depois.

# HTTP Request para um LLM (corpo da requisição)
{
  "model": "gpt-4o-mini",
  "response_format": { "type": "json_object" },
  "messages": [
    { "role": "system", "content": "Classifique o lead. Responda JSON: {intencao, prioridade}." },
    { "role": "user", "content": "={{ $json.mensagem }}" }
  ]
}

💡 Dica prática

Coloque a estrutura exata do JSON que você espera no system prompt e ligue o json_object mode. Isso reduz drasticamente saídas mal-formadas — e temperature: 0 deixa a classificação mais estável.

System prompt

Define o papel/formato

JSON mode

Saída estruturada

Temperature

0 = estável

Custo/token

Mais contexto = mais $

4

🔍 Parsear a saída

A resposta chega como texto (mesmo em JSON mode, ela vem como string dentro de um campo). Você precisa transformá-la em campos reais para os próximos nodes usarem — com um fallback caso venha quebrada.

# Code node — parse defensivo
const raw = $json.choices[0].message.content;
let parsed;
try { parsed = JSON.parse(raw); }
catch (e) { parsed = { intencao: "indefinida", prioridade: "baixa" }; }
return [{ json: parsed }];

⚠️ Atenção

Modelos às vezes embrulham o JSON em ```json ... ``` ou adicionam um texto antes. Sempre trate a falha de parse — nunca confie 100% que a saída virá perfeita.

5

🎯 Executar a ação

A ação é o que o cliente percebe e paga: enviar o e-mail, gravar a linha, inserir o registro. É o único passo visível — tudo antes foi preparação.

# mapeando campos no node de saída (e-mail)
Para:     ={{ $json.email }}
Assunto:  Recebemos seu pedido — prioridade ={{ $json.prioridade }}
Corpo:    Olá ={{ $json.nome }}, classificamos como "={{ $json.intencao }}".

🎯 Escolha a ação pelo destinatário

  • E-mail — quando uma pessoa precisa ser notificada.
  • Planilha — quando o time acompanha visualmente.
  • Banco — quando outro sistema vai consumir o dado.
6

▶️ Rodar e observar

Execute o fluxo de verdade e inspecione item por item. Em automação você não usa breakpoints: você lê a entrada e a saída de cada node no painel de execução. O bug quase sempre é o formato dos dados entre dois nodes.

1

Test workflow com dado real

Dispare uma vez com um payload de exemplo. Veja o fluxo "acender" node a node.

2

Abra cada node e leia I/O

Compare o que entrou com o que saiu. Onde o dado "sumiu" é onde está o erro.

3

Pin data para iterar rápido

Fixe a saída do trigger (pin) e re-rode só os nodes seguintes sem gastar nova chamada de IA.

💡 Dica prática

Use pin data no trigger durante o desenvolvimento. Você congela uma entrada de exemplo e itera nos nodes seguintes em segundos, sem disparar webhooks reais nem queimar tokens a cada teste.

📌 Resumo do Módulo

Trigger - webhook (reativo) ou schedule (proativo) define a natureza do fluxo.
Coletar - extrair e normalizar só os campos úteis; lixo na entrada = lixo na saída.
Chamar a IA - node nativo ou HTTP, JSON mode e temperature 0 para estabilidade.
Parsear - texto → JSON com try/catch e fallback; nunca confie 100% na saída.
Ação - e-mail, planilha ou banco; o único passo que o cliente percebe.
Observar - ler I/O por node e usar pin data para iterar rápido e barato.

Próximo Módulo:

4.3 - Integrações e dados (APIs REST, autenticação, banco, planilhas, paginação)