O controle humano precisa parar fisicamente a ação
O que eu faria se a IA redigisse uma proposta comercial, aplicasse um desconto e enviasse ao cliente. Eu separaria a preparação da execução: o modelo propõe, uma pessoa confirma um payload específico.
O erro que eu eliminaria primeiro: Se o approval vive dentro de um workflow de longa duração, um timeout ou reinício pode perder o estado. É mais confiável separar o salvamento da proposta da continuação após a decisão.
O que preparar e que resultado esperar
- Resultado: A equipe revisa só os casos de alto risco e, após uma pausa, o workflow continua do mesmo ponto.
- Defina ações que exigem approval: enviar, reembolsar, excluir, publicar, alterar permissões e operações financeiras.
- Mantenha os dados de origem e os direitos de acesso separados do resultado para poder verificar o que o workflow human-in-the-loop fez.
- Pare o cenário no approval, rejeite a ação, aprove-a alguns minutos depois e confira o log.
Monte um fluxo de approval que você consiga verificar
- Separe a proposta da ação
A IA cria um draft_action, o workflow mostra a uma pessoa, e um passo Execute separado só roda após o approve.
Проверьте: O botão de approve não só muda o status — é a condição de execução.
Если не сработало: Remova a ferramenta de escrita da IA e deixe-a só no ramo final.
- Persista o estado
Registre run_id, action, payload, requester, approver, status e expires_at. Para approval complexo, use um nó Wait ou webhook resume.
Проверьте: Após uma pausa, você consegue continuar o mesmo run_id.
Если не сработало: Divida o workflow em start e resume em vez de manter um processo longo na memória.
- Mostre o contexto a uma pessoa
O card de approval deve incluir a solicitação original, os dados encontrados, a proposta da IA, o risco e botões approve/reject/ask_more.
Проверьте: Dá para decidir sem vasculhar cinco sistemas.
Если не сработало: Reduza a tela aos dados que mudam a decisão.
- Trate rejeição e timeout
Reject envia a tarefa ao owner ou devolve o rascunho para edição. Um expires_at vencido não deve autoexecutar a ação.
Проверьте: Uma solicitação rejeitada nunca chega ao cliente e fica visível no log.
Если не сработало: Adicione uma lista diária de approvals travados.
Estados que eu configuraria
Máquina de estados mínima: received → drafted → waiting_approval → approved/rejected → executed → failed. Guarde no registro input_snapshot, proposed_action, reviewer_id, reviewed_at, rejection_reason e execution_id. Após approved, o workflow verifica de novo se a entrada não está desatualizada.
Para e-mail ou mudança no CRM, divida em duas operações: a primeira salva o rascunho e envia um botão de confirmação; a segunda executa por approval_id. Assim o processo sobrevive a um reinício e não reenvia.
- Reject deve explicar o motivo, não só limpar o status.
- Com baixa confiança, defina review_required em vez de um loop infinito de esclarecimentos.
O que deve estar na tela de approval
Mostre o texto de origem, o resultado proposto, os campos que vão mudar, um link para a fonte, o risco e botões approve/reject. Se uma pessoa não entende a decisão em um minuto, a tela está sobrecarregada ou a IA trouxe pouco contexto.
Duas cadeias em vez de um workflow travado
Workflow A: `Trigger → Get context → AI draft → Validate → proposal_id → action_hash → Save approval → Slack/Gmail`. Workflow B: `Approval webhook → Verify approver → Get proposal → Compare action_hash → Check expiry → Execute once → Audit log`.
Estados: `pending → approved/rejected/edited → executed/failed/expired`. No registro, guarde `proposal_id`, `target_id`, `payload`, `action_hash`, `state_version`, `approver_role`, `expires_at`, `rejection_reason` e `execution_id`.
{
"action": "send_quote",
"target_id": "deal_456",
"payload": {"amount": 150000, "discount": 10},
"requires_approval": true,
"expires_at": "2026-08-05T12:00:00Z"
}
O que uma pessoa precisa ver
Destinatário, valor, desconto, campos que vão mudar, prévia do texto, fonte dos dados e horário de expiração. O botão não deve executar a ação direto da URL: só passa `proposal_id`, e o servidor revalida papel, hash e status `executed`.
Onde uma pessoa precisa decidir e onde uma regra basta
| Critério | Pergunta | Bom sinal |
|---|---|---|
| Entrada | O que exatamente entra no workflow human-in-the-loop? | Defina ações que exigem approval: enviar, reembolsar, excluir, publicar, alterar permissões e operações financeiras. |
| Ação | O que o sistema pode fazer sozinho? | Somente ações pré-listadas, sem acesso a toda a conta |
| Verificação | Como saber que o resultado é aceitável? | Pare o cenário no approval, rejeite a ação, aprove-a alguns minutos depois e confira o log. |
| Falha | Para onde vão os casos pouco claros? | Persista o estado em uma tabela ou banco e defina um prazo de escalonamento para que um approval travado não se perca. |
O que deve mudar depois da configuração
A equipe revisa só os casos de alto risco e, após uma pausa, o workflow continua do mesmo ponto.
Por que o “human in the loop” muitas vezes existe só no papel
Tratar o approval como instrução de texto no prompt.
Não guardar o estado entre o início e a confirmação.
Mostrar à equipe só o resultado, sem a solicitação original.
Executar a ação automaticamente após um timeout.
Quando o approval precisa de estado separado
Chame um especialista se o approval envolver dinheiro, atos jurídicos, vários papéis ou processos longos com grande volume de estado.
O que deve estar na tela de confirmação
Para quem é esta abordagem de workflow human-in-the-loop?
Em um cenário de IA human-in-the-loop, o controle humano não é uma linha do prompt. O sistema precisa parar, salvar o estado, mostrar a entrada e a proposta da IA, esperar uma decisão e só então executar a ação.
Por onde começar se tudo ainda é manual?
Defina ações que exigem approval: enviar, reembolsar, excluir, publicar, alterar permissões e operações financeiras.
Como verificar se o setup não vai te prejudicar?
Pare o cenário no approval, rejeite a ação, aprove-a alguns minutos depois e confira o log.
E se o resultado não estiver claro?
Persista o estado em uma tabela ou banco e defina um prazo de escalonamento para que um approval travado não se perca.





