MÓDULO 6.2

⏰ Automations: Agentes Recorrentes

Tirar trabalho repetitivo das suas mãos com agentes que rodam em horários fixos — relatórios, triagem, dependabot, scans — e transformar isso em mensalidade que entra sem você lembrar.

6
Tópicos
60
Minutos
Avançado
Nível
Recorrente
Tipo
1

🆚 Prompt Único vs Automation Recorrente

Prompt único = você dispara, agente faz, acabou. Automation = agente acorda sozinho em horário/evento, sem você lembrar. Confundir os dois é o erro de design mais comum — e o mais caro.

Prompt Único

  • Disparo manual quando precisa
  • Contexto fresco em cada execução
  • Bom para tarefas únicas
  • Custo previsível por execução
  • Você lembra de rodar

Automation Recorrente

  • Roda sozinho por cron/webhook
  • Estado entre execuções (cache)
  • Bom para repetições previsíveis
  • Custo mensal multiplicado por N
  • Você esquece (bom e ruim)

💡 Regra prática

Se você executa algo ≥ 2x/semana e o disparo é previsível, vira automation. Se é raro ou contexto muda muito, mantém prompt único. Promover prompt repetido para automation é o ganho compounding da fábrica.

2

💼 Casos Reais de Automation

Quatro automations que pagam mensalidade por si só. Cada uma é vendável como add-on do seu micro-SaaS ou serviço avulso recorrente.

Automation Trigger Output Preço/mês
📊 Relatório semanal de vendascron seg 09hPDF + e-mailR$ 400
🎯 Triagem matinal de issuescron 08h dia útillabels + commentsR$ 300
🤖 Dependabot reviewwebhook PR abertaaprovação ou bloqueioR$ 250
🔒 Scan de vulnerabilidadecron domingo 22hissue + Slack alertR$ 500

📌 Combo de margem alta

Pacote "DevOps Inteligente" = 4 automations acima por R$ 1.200/mês. Custo de execução: ~R$ 80 em tokens. Margem 93%. Setup: 2h. Cliente vê valor desde o primeiro relatório recebido. Esse é o tipo de oferta que vira contrato anual com pouca discussão.

3

⚙️ Configurando uma Automation

Automation versionada é auditável e reproduzível. Use YAML no repo, env vars para secrets, dry-run antes de ativar. Sem isso, vira "magia que só você sabe configurar" — e morre quando você sai de férias.

📄 Exemplo: relatório-semanal-vendas.yml

name: relatorio-semanal-vendas
description: Gera PDF com vendas da semana e envia por e-mail.

trigger:
  type: cron
  schedule: "0 9 * * MON"   # toda segunda 09:00
  timezone: America/Sao_Paulo

inputs:
  cliente_id: "{{ secrets.CLIENTE_ID }}"
  periodo_dias: 7

steps:
  - id: fetch
    run: |
      codex run "Busque vendas dos ultimos {{ periodo_dias }} dias
      do cliente {{ cliente_id }} no Convex e agrupe por produto."

  - id: render
    run: |
      codex run "Renderize relatorio em PDF usando template
      ./templates/vendas.html com os dados de {{ steps.fetch.output }}."

  - id: send
    run: |
      codex run "Envie {{ steps.render.output }} por e-mail
      para {{ secrets.EMAIL_DESTINO }} com assunto 'Vendas semanais'."

budget:
  max_cost_per_run_brl: 8
  max_runs_per_month: 5

on_failure:
  notify: slack://#alerts

🧪 Sequência de validação

  1. codex automation validate ./relatorio.yml — checa sintaxe
  2. codex automation dry-run ./relatorio.yml — simula sem efeitos colaterais
  3. codex automation run-once ./relatorio.yml — executa imediatamente uma vez
  4. codex automation enable ./relatorio.yml — ativa o cron
4

📅 Schedule: Cron Expression e Janela

Cron mal configurado dispara em horário errado, polui logs e gera complaint do cliente. Conhecer minimamente timezone, jitter e retries elimina 90% dos incidentes.

🕒 Cron expression — leitura rápida

┌──── minuto (0-59)
│ ┌── hora   (0-23)
│ │ ┌─ dia mes (1-31)
│ │ │ ┌─ mes  (1-12)
│ │ │ │ ┌─ dia semana (0-6, 0=DOM)
│ │ │ │ │
0 9 * * MON   → toda segunda 09:00
*/15 * * * *  → a cada 15 minutos
0 22 * * SUN  → domingo 22:00
0 8 1-5 * *   → 08:00 dos dias 1 a 5 do mes

🌍 Timezone

Sempre IANA (ex: America/Sao_Paulo). Nunca UTC sem comentar — relatório do cliente do RJ no horário errado é constrangedor.

timezone: America/Sao_Paulo

🎲 Jitter

10 clientes com cron "0 9" disparam todos às 09:00 = thundering herd. Jitter espalha em janela.

jitter: 5min

🔁 Retries

Falhou? Backoff exponencial 3 tentativas. API instável é parte da vida.

retries: { max: 3, backoff: exp }

🪟 Janela

"Rode em qualquer momento entre 08h e 10h" — útil quando horário exato não importa.

window: "08:00-10:00"
5

👀 Monitoramento: Quando Algo Deu Errado

Sem monitoramento, automation que falha 3 dias seguidos te queima com cliente. Com logs estruturados, alerta no Slack e fallback graceful, você corrige antes do cliente perceber.

🛎️ Webhook de alerta no Slack

// scripts/notify-slack.js
const fetch = require('node-fetch');

async function notifySlack(automation, status, error) {
  const color = status === 'error' ? '#dc2626' : '#16a34a';
  const payload = {
    attachments: [{
      color,
      title: `[${status.toUpperCase()}] ${automation}`,
      fields: [
        { title: 'Cliente', value: process.env.CLIENTE_ID, short: true },
        { title: 'Horário', value: new Date().toISOString(), short: true },
        { title: 'Erro', value: error || '—', short: false }
      ],
      footer: 'Codex Automations'
    }]
  };
  await fetch(process.env.SLACK_WEBHOOK, {
    method: 'POST',
    body: JSON.stringify(payload)
  });
}

module.exports = notifySlack;

🔄 Fallback graceful

Se a execução falhou, o cliente não pode receber "(vazio)". Use o último output bom como fallback temporário e dispare alerta interno.

try {
  const report = await generateReport();
  await sendEmail(report);
  await cache.save('last_good', report);
} catch (err) {
  await notifySlack('relatorio-semanal', 'error', err.message);
  const lastGood = await cache.load('last_good');
  await sendEmail({ ...lastGood, notice: 'Dados da semana anterior — atualização em andamento' });
}
6

💰 Custos: Usage Budget para Automations

Cliente paga R$ 800/mês. Se a automation custar R$ 1.000 em tokens, é prejuízo. Calibrar budget é matemática direta de margem, não detalhe técnico.

Mecanismo O que faz Quando usar
Hard limitMata execução ao atingir tetoSempre — última linha de defesa
Soft alertNotifica em 80% do limiteAntecipar antes de bater hard
Cost per runCap por execução individualLoop mal configurado
Modelo FastSubstitui High em automations rotineirasTriagem, classificação, scan
Cache de resultadosReusa output quando input não mudouInputs estáveis (ex: scan diário)

📊 Cálculo de margem por cliente

Receita: R$ 1.200/mês. Custos: tokens R$ 80 + Convex R$ 25 + Slack/email R$ 0 = R$ 105. Margem bruta: 91%. Multiplicado por 10 clientes = R$ 12k de margem mensal — com 0 horas adicionais depois do setup. Esse é o motor da fábrica.

O que Aprendemos

Promova prompt repetido para automation — se roda ≥ 2x/semana com input previsível, vira recorrente.
4 automations vendáveis: relatório, triagem, dependabot, scan — pacote DevOps Inteligente com 93% de margem.
YAML versionado com validate → dry-run → enable — auditável e reproduzível por cliente.
Cron sempre com timezone IANA + jitter — evita thundering herd e relatório no horário errado.
Logs + Slack alert + fallback graceful — você descobre antes do cliente reclamar.
Hard limit + Fast model + cache mantêm margem 91% — automation que custa mais que receita destrói o modelo.

Próximo Módulo:

6.3 — Criando Suas Próprias Skills: anatomia, frontmatter, progressive disclosure e a skill autoral "novo-vertical" que clona o InboxAI por nicho.