Quase toda empresa com produto no varejo digital tem o mesmo relatório mensal: alguém lê duzentas avaliações de um total de vinte mil, monta uma lista de reclamações mais comuns e apresenta. O relatório está certo dentro da amostra e erra exatamente onde importa — nos problemas raros e graves, que aparecem pouco e custam caro.
A amostragem não era preguiça: era orçamento. Leitura humana é cara. Quando a leitura de uma avaliação passa a custar frações de centavo, a pergunta muda de “qual amostra?” para “por que amostrar?”.
O Jev é o modelo da TypeSafe AI que recebe um texto e devolve decisões tipadas — uma opção, uma nota, um sim ou não — com a probabilidade de cada uma. Para avaliações, isso significa transformar texto solto em colunas de banco.
O desenho das perguntas
Uma chamada por avaliação, com o texto e o mínimo de contexto do pedido.
{
"state": {
"nota_estrelas": 2,
"texto": "O produto em si é bom, mas chegou com a caixa amassada e faltando o carregador. Já é a segunda vez que compro e vem incompleto. Pedi troca e ninguém responde.",
"categoria_do_produto": "eletroportátil",
"dias_desde_a_entrega": 9
},
"questions": {
"tema": {
"type": "choice",
"instructions": "Qual é o assunto principal da reclamação ou do elogio?",
"criteria": {
"qualidade_do_produto": "Defeito, durabilidade, desempenho ou acabamento do produto.",
"entrega": "Prazo, embalagem, extravio, item faltando ou transportadora.",
"atendimento": "Resposta, troca, garantia ou falta de retorno da empresa.",
"preco": "Valor, promoção, frete ou cobrança.",
"elogio_geral": "Elogio sem apontar problema.",
"outro": "Não se encaixa em nenhum dos temas acima."
}
},
"severidade": {
"type": "score",
"instructions": "Qual a gravidade do problema relatado para o cliente?",
"criteria": [
"Nenhum problema relatado.",
"Incômodo pequeno; o cliente seguiu usando.",
"Problema relevante; exigiu esforço do cliente.",
"Problema grave; produto inutilizável, risco ou prejuízo."
]
},
"risco_de_reputacao": {
"type": "score",
"instructions": "Quanto este texto tende a afastar outros compradores se ficar visível?",
"criteria": [
"Neutro ou positivo.",
"Reclamação comum, sem detalhe marcante.",
"Relato detalhado e convincente de um problema.",
"Relato de risco à segurança, fraude ou descaso grave."
]
},
"pede_providencia": {
"type": "noul",
"instructions": "O cliente pede troca, estorno, garantia ou alguma providência da empresa?"
},
"menciona_risco_a_saude": {
"type": "noul",
"instructions": "O texto menciona risco à saúde, ferimento, choque, queimadura ou incêndio?"
}
}
}
Repare que dias_desde_a_entrega é um número calculado no seu banco, não uma
data que o modelo teria de interpretar. Essa separação é deliberada, e o motivo
está na seção de limites, mais abaixo.
O que o código faz com a resposta
Piso de confiança primeiro. Avaliações curtas — “não gostei” — não sustentam classificação. Confiança baixa manda a avaliação para a pilha de revisão ou simplesmente para a categoria “sem sinal”, que é uma resposta honesta.
Regras determinísticas depois. menciona_risco_a_saude acima do corte
dispara alerta imediato para o time de qualidade, sem passar por nota nenhuma.
É política, não julgamento ponderado. pede_providencia abre um caso no
atendimento.
Combinação por último. Severidade e risco de reputação definem a ordem da fila de resposta pública.
t = r.answers["tema"]
if r.answers["menciona_risco_a_saude"].noul > 0.5:
alerta_qualidade(avaliacao) # corte baixo: falso positivo é barato
if t.confidence < PISO:
return marcar(avaliacao, tema="sem_sinal")
if r.answers["pede_providencia"].noul > 0.7:
abrir_caso_atendimento(avaliacao)
prioridade = 0.6 * (r.answers["severidade"].score / 3) \
+ 0.4 * (r.answers["risco_de_reputacao"].score / 3)
gravar(avaliacao, tema=t.choice, prioridade=prioridade,
distribuicao=t.probabilities)
O corte de 0,5 para risco à saúde é intencionalmente mais baixo que os outros. Limiar acompanha o risco da ação: um falso positivo custa a leitura de um analista; um falso negativo custa um recall que ninguém fez. Esse raciocínio está em roteamento por confiança.
Onde entra a pessoa
Em dois lugares. No alerta de segurança, sempre — nenhuma ação de recall ou de
notificação deve sair automática. E na revisão periódica da pilha outro: ela é
o melhor indicador de que a sua lista de temas envelheceu. Quando 8% das
avaliações caem em outro, existe um tema novo no mercado que você ainda não
nomeou.
Um terceiro uso, mais silencioso, é a auditoria: guardar a distribuição inteira, e não só o tema escolhido, permite reprocessar o histórico quando você mudar um limiar, sem chamar a API de novo.
Custo
Assumindo cem mil avaliações por mês — suposição deste artigo — com 955 tokens de entrada por chamada, o perfil das nossas medições: ao preço oficial de US$ 0,042 por milhão de tokens de entrada, com saída gratuita, e o dólar estimado em R$ 5,40, cada avaliação sai por cerca de R$ 0,00022 e o mês inteiro por cerca de R$ 21,66. A fórmula e as ressalvas estão em quanto custa uma decisão.
O ganho não é o dinheiro poupado: é trocar uma amostra de 1% por 100% do volume, o que muda a natureza do relatório.
Onde isso quebra
Contagem. “Quantas avaliações reclamam de entrega este mês?” é uma pergunta
para o seu banco, não para o modelo. A documentação oficial diz que o
jev-1.13 não conta de forma confiável e que o erro cresce com o tamanho da
lista. Pergunte uma avaliação por vez e some no código.
Comparação de datas. “Esta reclamação é anterior à mudança de transportadora?” também é código. O modelo lê data como texto, não como quantidade ordenada.
Nota de estrelas não é resumo do texto. Avaliações de 1 estrela com texto
elogioso e o contrário existem em qualquer base. Deixe a estrela no state como
contexto, mas não a use para validar a resposta do modelo — são dois sinais
diferentes, e a divergência entre eles costuma ser informação.
Ironia e exagero. O português informal de avaliação é cheio de hipérbole (“pior compra da minha vida” sobre um atraso de um dia). No nosso teste em português, de 18 de setembro de 2026, o modelo leu ironia corretamente no sentimento mas ficou incerto na categoria. Essa combinação é o caso de usar a confiança, não de ignorá-la.
A lista completa dos nove modos de falha declarados está em limites do Jev, e os cinco casos em português estão em o Jev funciona em português. O índice desta família fica em casos de uso.
Perguntas frequentes
Por que não usar análise de sentimento comum?
Porque sentimento sozinho não diz o que fazer. Uma avaliação negativa sobre entrega e outra sobre defeito de fabricação exigem times diferentes. O desenho útil junta o tema, a severidade e a intenção na mesma chamada, e deixa o agrupamento para o seu código.
O modelo entende ironia em avaliação em português?
No nosso teste de 18/09/2026, um texto irônico em português do Brasil recebeu sentimento negativo com 98% — a ironia passou. Mas a categoria caiu em 'Outro' com confiança 0,72, ou seja, o enquadramento ficou incerto. Foram cinco chamadas, não um benchmark.
Dá para descobrir temas que eu não listei?
Não diretamente. O Choice escolhe entre as opções que você escreveu, e o modelo não gera categorias novas. O caminho é manter uma opção de escape e revisar periodicamente o que caiu nela: essa pilha é a sua lista de temas faltando.
Como faço o ranking de problemas por mês?
No seu código, agregando as respostas. O modelo avalia uma avaliação por vez; contagem, média e série temporal são aritmética, e a documentação oficial recomenda manter aritmética fora do modelo.
Quanto custa avaliar cem mil avaliações?
Com o perfil das nossas medições, 955 tokens de entrada por chamada, o preço oficial de US$ 0,042 por milhão de tokens de entrada e o dólar estimado em R$ 5,40, cem mil avaliações saem por cerca de R$ 21,66 em chamadas.