Como usar o Jev para aprovar ou escalar pedidos de desconto do time comercial?

O Jev é o modelo System One da TypeSafe AI: tu manda o estado da proposta e perguntas tipadas, ele devolve decisão com probabilidade calibrada, sem escrever prosa. Pra desconto comercial isso vira ouro: um Choice com as rotas (aprovar, escalar gestor, escalar diretoria, recusar), um Score pro risco de margem e um Noul pra alçada do vendedor, tudo numa requisição só. Depois tu roteia por confidence no teu código: piso de 0,6 pra descartar incerteza e acima de 0,85 pra ação de alto risco. Novas contas ganham US$ 5 de crédito pra testar
Sexta, 17h40, o vendedor manda mensagem: "cliente só fecha com um desconto fora da minha alçada, consigo aprovar?"
O gestor tá em reunião
A proposta esfria, o cliente some no fim de semana e na segunda vira aquele papo de "perdemos por preço"
O gargalo aqui quase nunca é a política de desconto, é o ser humano que precisa ler o caso e bater o martelo
É exatamente esse tipo de decisão repetitiva e de resposta curta que o Jev foi feito pra resolver
Ele é o primeiro modelo público da TypeSafe AI e é classificado como modelo System One: tu entrega um estado e perguntas tipadas, ele devolve decisões tipadas com probabilidades calibradas, em vez de texto
Ou seja: ele não escreve justificativa bonita, não conversa, não gera código
Ele escolhe, pontua e responde sim ou não, com um número de confiança do lado
E isso muda tudo pra um fluxo de aprovação, porque tu para de fazer parsing de parágrafo e passa a trabalhar com valor de campo mesmo 🙂
O que você precisa antes de começar
Tem duas metades aqui: a técnica e a do negócio
A técnica é rápida
Do lado técnico:
- Uma conta no console pra criar tua API key, em console.typesafe.ai
- Novas contas começam com US$ 5 de crédito, que equivalem a cerca de 120 milhões de tokens de entrada, então dá MUITA margem pra testar antes de colocar em produção
- SDK Python (
pip install typesafe-sdkouuv add typesafe-sdk, exige Python 3.10 ou superior) ou SDK JavaScript/TypeScript (npm install @typesafe-ai/sdk, exige Node.js 20 ou superior) - A variável de ambiente
TYPESAFE_API_KEY, que é de onde o cliente Python lê a chave

Domine o Jev e coloque decisões de IA dentro do seu sistema
Você vai aprender a usar o Jev, o System One Model da TypeSafe AI, pra automatizar decisões com resposta tipada e confiança medida, sem depender de chat nem de alguém revisando cada passo. Entre na lista de espera para garantir a condição de lançamento!
Sobre preço, vale saber antes de modelar: o Jev cobra apenas por token de entrada, a US$ 0,042 por 1 milhão de tokens, e a saída estruturada é gratuita
Isso tem uma consequência prática que volta lá embaixo: o que pesa na conta é o tamanho do teu state, não a quantidade de respostas
Do lado do negócio, e essa parte é a que o pessoal pula:
- A política de desconto escrita em faixas, com alçada clara (até quanto o vendedor aprova sozinho, até quanto o gestor, a partir de quanto sobe pra diretoria)
- A lista dos campos da proposta que vão virar state: valor, margem, desconto pedido, histórico do cliente, justificativa do vendedor
Se a política tá só na cabeça do gestor comercial, o Jev não vai adivinhar
Ele é bom em decidir dentro de um critério descrito, não em inventar o critério
Passo a passo: do pedido de desconto à decisão tipada
Os exemplos aqui vão em HTTP puro, que roda em qualquer linguagem
O endpoint é POST https://api.typesafe.ai/v1/systemone, com header Authorization: Bearer <API_KEY> e Content-Type: application/json
Os nomes exatos dos campos de cada tipo de pergunta tu confere na documentação de primitives, o que importa aqui é a forma de pensar o fluxo
Bora?
1. Modelar o state com a proposta:
O state é o conteúdo a avaliar e ele aceita string simples, objeto JSON ou array de textos
Pra desconto, objeto JSON é o formato natural, porque o pedido já é estruturado no teu CRM
{
"cliente": "Alfa Log",
"tipo_cliente": "recorrente",
"meses_de_casa": 26,
"valor_proposta": 48000,
"margem_padrao_pct": 34,
"desconto_pedido_pct": 18,
"alcada_vendedor_pct": 10,
"alcada_gestor_pct": 20,
"inadimplencia": false,
"justificativa_vendedor": "Concorrente entrou com proposta 15% menor e o cliente quer fechar ainda nesta semana"
}
Repara que eu coloquei a alçada dentro do state
Isso é de propósito: a regra vira dado, e não texto solto numa pergunta gigante
O erro comum deste passo: despejar a thread inteira do CRM ali dentro
O Jev tem janela de contexto limitada, e o preço é por token de entrada
Então mandar 40 e-mails de negociação faz duas coisas ruins ao mesmo tempo: encarece e dilui o sinal
Manda os campos que decidem, não o histórico emocional da conta 😀
2. Escrever as perguntas tipadas:
O Jev tem três tipos de pergunta (os primitives):
- Choice: escolher uma opção de um conjunto fixo sem ordem, com no máximo 255 opções
- Score: nota em níveis ordenados que você descreve, de 2 a 10 níveis
- Noul: sim ou não, que retorna a probabilidade de sim
Pro nosso caso isso mapeia quase que sozinho
O Choice vira a rota da decisão, o Score vira o risco de margem, o Noul vira a checagem de alçada
{
"rota_aprovacao": {
"type": "choice",
"question": "Considerando a política de alçadas presente no estado, qual rota este pedido de desconto deve seguir?",
"options": [
"aprovar",
"escalar_gestor",
"escalar_diretoria",
"recusar"
]
},
"risco_margem": {
"type": "score",
"question": "Qual o risco deste desconto para a margem do negócio?",
"levels": [
"muito baixo: desconto dentro da faixa padrao e margem preservada",
"baixo: margem levemente reduzida, ainda confortavel",
"medio: margem apertada, exige atencao",
"alto: margem perto do limite aceitavel",
"muito alto: desconto compromete a margem do contrato"
]
},
"dentro_da_alcada": {
"type": "noul",
"question": "O desconto pedido esta dentro da alcada do vendedor informada no estado?"
}
}
As chaves (rota_aprovacao, risco_margem, dentro_da_alcada) são definidas por você, e as respostas voltam sob as mesmas chaves
Isso é o que deixa o código limpo depois: nada de regex em resposta de modelo
O erro comum deste passo: pergunta torta
A documentação lista como limitação conhecida do Jev a perda de acurácia em dupla negativa, indireção complexa e raciocínio de múltiplos saltos
Então nada de "este desconto não está fora da alçada, considerando que o cliente não é novo?"
Quebra em perguntas simples e independentes, que é justamente o que o modelo faz bem
3. Montar a requisição e ler as respostas:
O corpo tem três partes: state, model e questions
O modelo padrão dos exemplos da doc e dos SDKs é o alias jev-latest
import os
import requests
resp = requests.post(
"https://api.typesafe.ai/v1/systemone",
headers={
"Authorization": f"Bearer {os.environ['TYPESAFE_API_KEY']}",
"Content-Type": "application/json",
},
json={
"state": proposta, # o dict do passo 1
"model": "jev-latest",
"questions": perguntas, # o dict do passo 2
},
)
respostas = resp.json()
rota = respostas["rota_aprovacao"]
risco = respostas["risco_margem"]
alcada = respostas["dentro_da_alcada"]
Choice e Score voltam com um valor de confidence entre 0 e 1, calculado a partir da distribuição de probabilidade da própria resposta
Noul não tem campo separado de confidence, porque a distribuição só tem dois resultados: o próprio valor já é a probabilidade de sim
O erro comum deste passo: esperar um parágrafo explicando a decisão
Não vem, e não é bug
O Jev não gera texto, não escreve código e não mantém conversa, ele aceita só entrada de texto (string, objeto JSON ou array) e devolve decisão tipada
Se o teu processo exige justificativa escrita pro vendedor, essa parte é do teu template ou de um modelo generativo, não dele
4. Mandar tudo numa requisição só:
Esse passo é o que mais economiza dinheiro e tempo
Cada pergunta é avaliada de forma independente contra o mesmo state
Ou seja: mandar N perguntas numa requisição dá as MESMAS respostas que N requisições separadas, só que tu paga o custo do documento uma vez só e as perguntas rodam em paralelo
O erro comum deste passo: fazer uma chamada por pergunta
Três chamadas separadas com o mesmo state significa pagar três vezes pelos mesmos tokens de entrada e comer três round trips de rede
Junta tudo no mesmo questions e pronto
5. Rotear por confidence no seu código:
O último passo é onde o pessoal erra de conceito: o modelo não decide o que é automático e o que sobe pra humano
Ele te dá a decisão e o quanto ela é confiável
Quem decide o que fazer com isso é o teu if
E quais números usar nesse if? O padrão de Confidence-gated routing da documentação já dá dois pontos de partida: um piso de 0,6, pra descartar os casos genuinamente incertos, e limiar acima de 0,85 pra ação de alto risco, tipo aprovar sozinho
No código fica assim:
PISO = 0.6
LIMIAR_APROVAR = 0.85
if rota["confidence"] < PISO:
encaminhar_para_humano(proposta, motivo="confianca abaixo do piso")
elif rota["value"] == "aprovar" and rota["confidence"] >= LIMIAR_APROVAR:
aprovar_desconto(proposta)
else:
escalar(proposta, rota["value"])
O erro comum deste passo: tentar embutir a regra de escalonamento dentro do enunciado da pergunta, tipo "se você não tiver certeza, responda escalar"
Isso joga fora a informação mais valiosa que o Jev te dá, que é a probabilidade calibrada
Deixa o modelo responder o que ele acha e deixa o threshold no código, onde tu consegue versionar, medir e mudar sem retreinar nada
Como calibrar os limiares para escalar sem travar o vendedor
A documentação recomenda dividir a confiança em três faixas: alta (agir automaticamente), média (prosseguir com cautela) e baixa (mandar para um humano)
E o padrão de Confidence-gated routing deixa claro uma coisa que eu acho a parte mais importante disso tudo: o limiar não é um número único
Cada ação recebe um limiar conforme a consequência do erro
O piso sugerido é 0,6, pra descartar os casos genuinamente incertos, e ações de alto risco pedem limiar acima de 0,85 (o exemplo da própria doc é aprovar transferência)
Traduzindo pro comercial:
| Rota | Consequência de errar | Limiar sugerido |
|---|---|---|
| aprovar | desconto que come margem, difícil de desfazer | acima de 0,85 |
| escalar_gestor | um humano olha um caso que talvez fosse óbvio | a partir do piso de 0,6 |
| escalar_diretoria | atrito interno e proposta mais lenta | intermediário, acima do gestor |
| recusar | vendedor perde o negócio sem revisão | alto, tratar como alto risco |
Repara na assimetria: escalar errado custa alguns minutos de alguém
Aprovar errado ou recusar errado custa margem ou custa o contrato
Por isso escalar pode viver com limiar mais baixo, e é justamente isso que evita travar o vendedor: no meio termo o pedido continua andando, só que com um par de olhos humanos junto
Nada de deixar a proposta parada esperando certeza absoluta
Se tu quiser aprofundar esse ajuste fino, tem um material dedicado a definir thresholds de confiança que entra na lógica de agir, escalar ou recusar
E lembra do detalhe do Noul: ele não traz confidence separado
O valor devolvido JÁ é a probabilidade de sim
Então dentro_da_alcada em 0,93 significa "muito provavelmente está dentro da alçada", e um valor perto de 0,5 é o modelo te dizendo que a informação no state não resolve essa pergunta
Quando isso acontecer, o problema quase sempre é o state, não a pergunta 😛
Três cenários comuns de desconto e como configurar cada um
Bora aterrissar em caso real de operação comercial
Cenário 1: desconto na faixa padrão, cliente recorrente
Desconto pedido dentro da alçada, cliente de casa, sem inadimplência
Aqui o Noul de alçada volta alto, o Score de risco de margem cai nos níveis baixos e o Choice aponta aprovar
Configuração: mantém o limiar de aprovação acima de 0,85 e exige as duas condições juntas (Choice em aprovar com confiança alta e Noul de alçada alto)
É o caso que libera o vendedor na sexta às 17h40 sem acordar ninguém
Cenário 2: acima da alçada, justificativa fraca
O desconto pedido passa da alçada do vendedor e a justificativa é genérica, tipo "cliente pediu"
Nesse cenário vale acrescentar um Noul específico:
{
"justificativa_sustenta": {
"type": "noul",
"question": "A justificativa do vendedor apresenta um motivo concreto e verificavel para o desconto solicitado?"
}
}
Se esse Noul vem baixo e o Score de risco de margem vem nos níveis altos, a rota natural é escalar_gestor
E como escalar é barato de errar, tu roda com limiar mais folgado, perto do piso
O gestor recebe o caso já com a leitura pronta: fora da alçada, risco de margem alto, justificativa fraca
A decisão dele leva 20 segundos em vez de 20 minutos
Cenário 3: dados incompletos ou confiança abaixo do piso
Proposta sem margem preenchida, cliente novo, campo de histórico vazio
O Choice vai voltar com confiança baixa, e é EXATAMENTE pra isso que existe o piso de 0,6
Abaixo dele, humano, sem discussão
E aqui tem um truque de operação: loga o caso com os campos que faltavam no state
Depois de algumas semanas tu descobre que metade dos casos de baixa confiança é sempre o mesmo campo vazio no CRM, e o conserto não é no prompt, é no formulário 😀
Esse raciocínio de roteamento por faixa não serve só pra desconto, é o mesmo motor de quem usa o modelo pra priorizar leads no funil, muda o state e mudam as perguntas
Um conteúdo extra do canal
Saindo um pouco da API e indo pro lado humano da coisa
Este vídeo do canal fala sobre o sentimento de não ter vocação para TI e o que fazer quando ele aparece
Próximo passo
Recapitulando o fluxo inteiro
Tu modela o state com os campos da proposta que realmente decidem, escreve as perguntas tipadas (Choice pra rota, Score pro risco de margem, Noul pra alçada), manda tudo numa requisição só e aplica o roteamento por confidence no teu código, com limiar diferente por ação
O Jev entra como a camada que transforma "posso dar esse desconto?" numa decisão estruturada com probabilidade do lado
E o próximo passo eu não recomendaria de outro jeito: começa em modo sombra
Roda uma pergunta Choice em cima dos pedidos de desconto que já estão acontecendo, guarda a resposta e a confiança, e compara com a decisão que o gestor tomou
Sem automatizar nada ainda
Depois de algumas dezenas de casos tu vai ter dado real pra escolher teus limiares, em vez de chutar 0,85 porque alguém na internet escreveu 0,85
Os US$ 5 de crédito inicial dão bastante fôlego pra essa fase de comparação, ainda mais considerando que a saída não é cobrada
E aí tu automatiza a faixa alta primeiro, que é a mais segura, e vai subindo conforme a confiança no processo (a tua, não só a do modelo) aumenta
até o próximo post!
Perguntas frequentes
Quanto custa rodar o Jev num volume alto de pedidos de desconto por mês
O Jev cobra só pelo token de entrada, a US$ 0,042 por 1 milhão de tokens, e a saída estruturada não custa nada. Como o que pesa na conta é o tamanho do state (os campos da proposta), e não a quantidade de perguntas, dá pra mandar várias perguntas na mesma requisição sem multiplicar custo. Os US$ 5 de crédito inicial equivalem a cerca de 120 milhões de tokens de entrada, o que costuma sobrar pra validar o fluxo inteiro antes de ir pra produção.
O Jev pode aprovar um desconto sozinho, sem nenhum humano olhando
Pode, mas a própria documentação recomenda faixas de confiança em vez de liberar tudo direto. A ideia é ter um piso de 0,6: abaixo disso o caso vai pra um humano, porque a confiança tá genuinamente baixa. Ações de alto risco, como aprovar um desconto grande, pedem confiança acima de 0,85 pra agir automático.
O que fazer quando a confiança da resposta do Jev fica baixa num desconto
Isso é o esperado dentro do padrão que a documentação chama de confidence gated routing. Confiança baixa (abaixo do piso de 0,6) significa que o próprio modelo não tá seguro, então o caso deve ir pra um gestor revisar manualmente. Confiança média fica numa faixa intermediária, de prosseguir com cautela, e só confiança alta libera ação automática.
Dá pra usar o Jev sem instalar SDK Python ou JavaScript
Dá sim, porque no fundo o Jev é um endpoint HTTP: POST para https://api.typesafe.ai/v1/systemone, com header Authorization Bearer e o corpo em JSON contendo state, model e questions. Os SDKs (pip install typesafe-sdk pra Python 3.10 ou superior, npm install @typesafe-ai/sdk pra Node 20 ou superior) só facilitam a chamada, mas não são obrigatórios pra integrar com o CRM.
Ainda existe lista de espera pra criar conta no Jev
Não. A TypeSafe AI removeu a waitlist e hoje o acesso é aberto: qualquer pessoa cria a API key direto em console.typesafe.ai. O Jev foi lançado em 15 de setembro de 2026 inicialmente em early access, mas essa etapa já ficou pra trás.
O Jev serve pra escrever a justificativa da aprovação ou recusa do desconto
Não, e esse é justamente o ponto do Jev ser um modelo System One. Ele não gera texto nem mantém conversa: devolve decisões tipadas (Choice, Score ou Noul) com probabilidade calibrada, não prosa explicando o motivo. Se tu precisa de um texto de justificativa pro vendedor ou pro cliente, essa parte fica pra um LLM tradicional; o Jev fica só com a decisão em si.
Formações
Formação Claude Code
Domine Claude Code do absoluto zero até o avançado
- 120 aulas
- 4 projetos
- 9h 45min
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.
