Como explicar para o usuário final uma decisão tomada pelo Jev?

Pra explicar uma decisão do Jev, lembre que ele não gera justificativa: devolve só a categoria do schema e as probabilidades, por escolha de design. O caminho é quebrar a decisão em perguntas menores (avaliadas em paralelo na mesma chamada) e usar cada resposta como fator real da mensagem. Cada opção do schema ganha um template fixo. A confiança vira faixa de linguagem, calibrada com os seus dados. A confiança baixa vai pra uma pessoa. Um LLM de fronteira só redige se estiver amarrado aos campos estruturados, e tudo fica registrado em log pra debug e pra pedidos de revisão pela LGPD
O Jev decide, mas não te diz por quê
E pode apostar: o cliente vai perguntar 😅
Se liga no contexto: o Jev é da TypeSafe AI, foi apresentado em 15 de setembro de 2026 e é o primeiro modelo da categoria que a empresa chama de System One Models
Ele recebe o estado de um programa (texto ou JSON) e devolve uma decisão tipada com a probabilidade de cada opção
Nada de prosa, nada de ‘escolhi isso porque…’
E isso não é bug, é escolha de design: o Jev não escreve resposta de chat, código nem explicação, e esse design é o próprio produto
Então o trabalho de comunicar a decisão fica com o SEU código
Neste post eu te mostro como explicar a decisão do Jev pra um cliente ou pra um analista sem inventar um motivo que o modelo nunca deu, beleza?
O que você precisa entender antes de explicar uma decisão do Jev
Antes de escrever qualquer mensagem, você precisa saber exatamente o que o Jev te entrega
Só dá pra explicar o que existe na saída 🙂
Curso de Jev: Sistemas Mais Inteligentes, Rápidos e Robustos
Desenvolva sistemas mais inteligentes, rápidos e robustos com Jev
Quais são os tipos de pergunta do Jev e o que cada um devolve?
São três tipos, e cada um devolve uma coisa diferente:
| Tipo | O que pergunta | Limite | O que devolve |
|---|---|---|---|
| Choice | uma entre N opções | até 255 opções | probabilidade de cada opção + confiança geral |
| Score | posição numa escala ordenada | de 2 a 10 níveis | score contínuo + distribuição + confiança |
| Noul | sim ou não | fixo em sim/não | só a probabilidade (de 0 a 1), sem confiança separada |
Repara no Noul: ele não tem confiança separada, então a própria probabilidade é o que você tem pra trabalhar
O Jev pode devolver uma resposta fora das opções?
Não
As opções são declaradas no schema, e o Jev não devolve valor fora desse conjunto nem JSON quebrado
Pra quem vai montar mensagem pro usuário isso é ótimo: todas as saídas possíveis são conhecidas de antemão, então dá pra preparar o texto de cada uma
O que acontece quando nenhuma opção serve?
Aqui mora o perigo…
Quando as opções não cobrem a situação, o Jev escolhe uma das categorias oferecidas mesmo assim, só que com confiança baixa
Não existe um sinal de ‘nenhuma se aplica’
Tome cuidado! Se o seu sistema pegar a categoria escolhida e jogar direto na mensagem, você pode acabar explicando pro cliente uma decisão que nem faz sentido pro caso dele
Onde o Jev costuma errar?
A TypeSafe publica uma página de limitações pra versão 1.13 do Jev, com as fraquezas conhecidas:
- aritmética
- contagem
- comparação de datas
- perguntas indiretas
- contexto que distrai
- entrada adversarial
Vale ler isso ANTES de prometer qualquer explicação ao cliente
Se a sua decisão depende de ‘quantas parcelas estão em atraso’ ou ‘o contrato é anterior a tal data’, faz mais sentido calcular isso no seu código e entregar pro Jev como fato pronto, em vez de pedir pra ele fazer a conta
Passo a passo: da decisão tipada a uma mensagem que o usuário entende
Um aviso antes de começar: todo código abaixo é da SUA camada de aplicação
São estruturas ilustrativas pra mostrar a ideia, não a sintaxe da API do Jev nem os nomes dos campos que ela devolve
Passo 1: quebre a decisão em perguntas menores
Por quê? Porque o Jev não te dá motivo, mas te dá respostas
Se em vez de perguntar ‘aprova ou não aprova?’ você faz várias perguntas menores sobre o mesmo estado, cada resposta vira um fator REAL da explicação
E isso sai barato: dá pra fazer várias perguntas sobre o mesmo estado numa única requisição, elas são avaliadas em paralelo e acrescentar perguntas quase não muda o tempo de resposta
Depois você recombina tudo no seu próprio código
Um jeito de organizar isso do seu lado, pensando numa análise de crédito:
{
"decisao": "analise_de_credito",
"perguntas": [
{ "id": "renda_comprovada", "tipo": "Noul", "texto": "A renda informada está comprovada nos documentos enviados?" },
{ "id": "documentacao", "tipo": "Choice", "opcoes": ["completa", "incompleta", "ilegivel"] },
{ "id": "risco", "tipo": "Score", "niveis": ["muito_baixo", "baixo", "medio", "alto", "muito_alto"] }
]
}
A regra de recombinação também é sua, e fica explícita:
se documentacao == "incompleta" ou documentacao == "ilegivel":
resultado = "pendente_documentos"
senao se renda_comprovada for baixa:
resultado = "em_analise"
senao:
resultado = decidir_pelo_risco(risco)
Curso RecomendadoDesenvolva sistemas mais inteligentes, rápidos e robustos com JevConhecer cursoO erro comum deste passo: fazer uma única pergunta gigante (‘aprova esse cliente?’) e depois inventar os motivos pra justificar a resposta
Se o motivo não saiu de uma pergunta, ele não existe
Passo 2: monte um template fixo pra cada categoria do schema
Como o Jev só devolve opções do schema, você já conhece todas as saídas possíveis
Então cada opção ganha um texto fixo, escrito e revisado por gente (produto, atendimento, jurídico, quem for)
{
"documentacao": {
"completa": null,
"incompleta": "Faltam documentos para concluir sua análise, confira a lista na sua área de cliente e envie o que estiver pendente",
"ilegivel": "Não conseguimos ler um ou mais documentos enviados, você pode reenviar uma versão mais nítida?"
},
"status": {
"decisao_automatica": "Sua solicitação foi analisada",
"em_analise": "Sua solicitação está em análise com a nossa equipe"
}
}
É tipo tabela de mensagens de erro de formulário: ninguém escreve o texto na hora que o erro acontece, ele já está pronto pra cada caso
O erro comum deste passo: deixar texto livre ser gerado a cada decisão, sem nada amarrando ao que o Jev respondeu
Aí cada cliente recebe uma explicação diferente pra mesma categoria, e algumas vêm com motivo inventado
Passo 3: transforme confiança em faixa de linguagem
Que confiança? É o número que o Choice e o Score devolvem junto com a resposta, indicando o quanto o modelo está seguro da escolha
No Noul, você olha a própria probabilidade
O cliente não precisa ver esse número, ele precisa saber se a decisão está tomada ou se ainda está em análise
faixa = classificar(confianca, limites_calibrados_com_seus_dados)
se faixa == "alta":
status = "decisao_automatica"
se faixa == "baixa":
status = "em_analise"
E os limites? Esses VOCÊ define, com os seus dados
A TypeSafe treina a calibração com um método que chama de RLCD (Reinforcement Learning for Calibrated Decisions), e a meta é que, se o Jev disser 0,9 em cem entradas, cerca de noventa sejam verdadeiras
Meta, não garantia: 90% de confiança não garante 90% de acerto no SEU caso
Então pega um lote de decisões já revisadas por pessoas, compara com a confiança que o Jev deu e só depois define onde fica o corte
E continua acompanhando depois de colocar no ar, que é o assunto de medir o acerto do Jev ao longo do tempo
O erro comum deste passo: mostrar a porcentagem crua ao cliente
Uma porcentagem de ‘chance de reprovação’ na tela assusta, confunde e ainda passa uma precisão que você nem validou
Passo 4: mande a confiança baixa pra uma pessoa
O padrão de roteamento é simples: confiança alta segue direto, confiança baixa vai pra revisão humana
E nesse caso quem escreve a justificativa é a pessoa, olhando o caso e as respostas das perguntas auxiliares
se status == "em_analise":
enviar_para_fila_humana(caso, respostas, confianca)
mensagem = templates["status"]["em_analise"]
O mesmo roteamento aparece em outros fluxos, tipo quando você usa o Jev pra moderar conteúdo enviado por usuários
O erro comum deste passo: tratar confiança baixa como resposta válida
Lembra que o Jev não tem sinal de ‘nenhuma’? Confiança baixa pode ser exatamente isso: nenhuma opção do schema serve pro caso
Passo 5 (opcional): peça pra um LLM de fronteira redigir, amarrado aos dados
Se os templates ficarem engessados demais, dá pra colocar um LLM de fronteira pra redigir
Faz sentido: pra texto, código ou justificativa escrita, a indicação é usar um LLM de fronteira, e ele combina bem com o Jev, que fica como camada rápida de decisão: classifica, pontua e encaminha os casos difíceis
Ou seja, cada um no seu papel: o Jev decide e o LLM de fronteira escreve o texto que o cliente vai ler
O segredo (que não é segredo nenhum haha) é alimentar o LLM SÓ com os campos estruturados e proibir que ele acrescente motivos:
Você vai redigir uma mensagem curta para um cliente
Use SOMENTE os fatos abaixo
Não acrescente motivos, hipóteses nem critérios que não estejam na lista
Status: pendente_documentos
Fatores: documentacao = incompleta
Próximo passo: enviar documentos pendentes pela área de cliente

Crie sistemas com IA para vender
Prompts, modelos e checklists para criar e publicar seu sistema com IA e preparar a oferta para o primeiro cliente.
Quero o e-book gratuito Receba o livro e os bônus no seu e-mail.O erro comum deste passo: pedir pro LLM ‘explicar o raciocínio do Jev’
Esse raciocínio não existe na saída, então o LLM vai inventar um, e vai soar convincente (o que é muiiito pior)
Passo 6: registre tudo
O Jev devolve um número, não uma justificativa, e isso pesa em debug e em auditoria
Então o seu log precisa guardar o caminho completo da decisão:
{
"caso_id": "12345",
"entrada": "estado enviado ao Jev",
"perguntas": ["renda_comprovada", "documentacao", "risco"],
"respostas": { "documentacao": "incompleta" },
"confianca": "valor devolvido",
"faixa": "baixa",
"rota": "fila_humana",
"mensagem_enviada": "texto exato que o cliente recebeu"
}
Quando alguém pedir revisão ou quando uma decisão estranha aparecer, é aqui que você vai procurar
O erro comum deste passo: salvar só a mensagem final
Sem as perguntas e as respostas, você sabe o que disse pro cliente, mas não sabe de onde aquilo saiu
Exemplos: a mesma decisão explicada para o cliente e para o analista
A saída do Jev é uma só, mas quem lê muda tudo
Bora ver na prática com o mesmo caso de crédito?
Como fica a mensagem para o cliente final?
Curta, baseada nos fatores das perguntas decompostas, sem porcentagem e com caminho pra revisão:
Sua solicitação está em análise
Faltam documentos para concluir a avaliação, confira a lista na sua área de cliente e envie o que estiver pendente
Se quiser que uma pessoa da nossa equipe revise o seu caso, é só pedir por aqui
Repara que não tem nenhum ‘porque o modelo achou que…’
O único motivo citado é a documentação incompleta, que veio de uma pergunta real
O que o analista interno precisa ver?
O analista quer o oposto: tudo aberto, pra entender e debugar
- a probabilidade de cada opção nas perguntas do tipo Choice
- a distribuição do Score de risco, não só o nível escolhido
- a confiança de cada resposta (e a probabilidade pura nas do tipo Noul)
- as respostas de todas as perguntas auxiliares
- a faixa calculada e a rota que o caso seguiu
Se o risco veio ‘médio’ com a distribuição espalhada entre vários níveis, isso é sinal pro analista olhar com calma
Pro cliente, a mesma informação vira só ‘em análise’ 🙂
E em setores regulados, o que a LGPD pede?
Aqui não é parecer jurídico, beleza? É só o que a lei diz e como o seu sistema ajuda
Pelo art. 20 da LGPD, o titular pode pedir revisão de decisões tomadas só com base em tratamento automatizado de dados pessoais que afetem os interesses dele, como perfil pessoal, profissional, de consumo e de crédito
E o §1º obriga o controlador a fornecer, quando solicitado, informações claras e adequadas sobre os critérios e procedimentos da decisão, respeitados os segredos comercial e industrial
Ou seja: a lei não exige revelar o modelo nem a fórmula
Mas exige que você consiga dizer, de forma clara, quais critérios pesaram
E é exatamente isso que as perguntas decompostas do passo 1 e o log do passo 6 te dão: critérios nomeados, respostas registradas e o caminho que o caso percorreu
Sem isso, você teria só uma categoria e um número pra mostrar
Conclusão: o Jev decide, e a explicação é responsabilidade do seu sistema
Recapitulando a divisão de papéis:
- o Jev é a camada rápida de decisão: classifica, pontua e encaminha
- os templates escrevem o texto de cada categoria do schema
- as pessoas escrevem a justificativa dos casos de confiança baixa
- um LLM de fronteira pode redigir, desde que amarrado aos campos estruturados
Ninguém nessa cadeia inventa motivo
O próximo passo é concreto: pega uma decisão que você já usa, quebra em 3 ou 4 perguntas e valida a calibração da confiança num lote dos seus próprios dados
Só depois disso expõe qualquer mensagem ao cliente
Ficou alguma dúvida ou tem um caso diferente aí? Bora trocar uma ideia nos comentários
Até o próximo post!
Perguntas frequentes
O usuário final tem direito de pedir explicação sobre uma decisão do Jev?
Sim, se a decisão for tomada só com base em tratamento automatizado e afetar interesses do titular, o art. 20 da LGPD garante o direito de revisão. O §1º do mesmo artigo obriga a empresa a informar, quando solicitado, critérios e procedimentos usados na decisão, respeitados segredo comercial e industrial. Isso não significa expor o modelo, mas sim ter um relato claro de por que aquela categoria foi escolhida.
Como calcular se a confiança do Jev está calibrada nos meus dados?
A TypeSafe treina a calibração com um método próprio, o RLCD (Reinforcement Learning for Calibrated Decisions), com meta de que 0,9 de confiança corresponda a cerca de 90 acertos em 100 entradas. Mas essa calibração precisa ser validada com os seus próprios dados, porque 90% de confiança não garante 90% de acerto no seu caso. Sem essa checagem, a faixa de linguagem que você usa pra explicar a decisão pode estar errada.
Por que o Jev não escreve a explicação da decisão sozinho?
Porque os System One Models, categoria criada pela TypeSafe AI e apresentada em 15 de setembro de 2026, não geram texto: eles devolvem só categoria e probabilidade. Essa ausência de explicação em linguagem natural é decisão de design, não uma limitação temporária do Jev. Por isso a explicação pro usuário final precisa ser construída na sua camada de aplicação.
Dá pra usar o Jev junto com um LLM de fronteira pra gerar a explicação?
Sim, essa é a combinação recomendada: o Jev decide, classifica, pontua e encaminha os casos difíceis, e um LLM de fronteira fica responsável por escrever texto, código ou justificativa em linguagem natural. Nenhum dos dois faz o trabalho do outro sozinho. O Jev entrega decisão tipada rápida, o LLM de fronteira entrega prosa.
A latência do Jev afeta como eu monto a explicação em tempo real?
A TypeSafe informa latência de ponta a ponta entre 70 e 500 ms, o que dá margem pra montar a mensagem pro usuário no mesmo fluxo da requisição, sem precisar de processamento assíncrono só por causa do tempo de resposta. Mesmo fazendo várias perguntas numa única chamada, o tempo quase não muda, já que elas rodam em paralelo. Isso ajuda a manter a explicação sincronizada com a decisão exibida na tela.
Quanto custa gerar as perguntas extras pra montar uma explicação mais completa?
O preço de tabela do Jev é de US$ 0,042 por milhão de tokens de entrada, e a saída não é cobrada. Como dá pra fazer várias perguntas sobre o mesmo estado numa única requisição, quebrar a decisão em fatores menores pra montar uma explicação melhor tende a pesar pouco no custo final.
Formações
Formação Claude Code
Domine Claude Code do absoluto zero até o avançado
- 120 aulas
- 4 projetos
- 9h 48min
Blog | Mais populares

Como montar um workflow de automação combinando decisões do Jev em código
Aprenda a montar um workflow com Jev: decisões tipadas encadeadas em código, alta confiança agindo sozinha e casos incertos escalando para revisão.

Jev decide, LLM escreve: como dividir os papéis dentro de um agente de IA
Jev é o modelo que decide, não escreve: entenda como dividir papéis entre Jev e LLM dentro de um agente de IA e quando usar cada um.

Para quem o Jev serve (e para quem não serve)?
Jev serve pra roteamento, scoring e guardrails em IA, não pra texto ou código. Veja pra quem o Jev serve e quando evitar.
