Exportei mais de uma década de posts do Facebook. Quase 13 mil itens entre textos, fotos e comentários. Precisava identificar quais mencionavam minhas filhas Marina e Isabella, quais eram relevantes e qual o sentimento de cada um. O objetivo: transformar esse backup numa espécie de álbum de memórias. Codinome interno: tatuzada.
Já tinha tentado GLM, Trae, Codex, várias ferramentas. Gastei alguns fins de semana classificando manualmente. Aí lançou o JEV.
O que é o JEV e por que ele é diferente
JEV é o modelo da TypeSafe AI. Ele não gera texto. Só responde perguntas estruturadas sobre um texto que você passa. São três tipos:
- Noul — probabilidade de sim/não (0 a 1). “O texto menciona Marina?” → 0.89
- Choice — escolha entre opções definidas. “Qual o tipo de conteúdo?” →
frase_filha - Score — nota em escala. “Qual o valor sentimental?” → 2.1 (de 0 a 3)
O modelo não inventa. Não alucina. Você pergunta, ele pontua.
O nome vem do framework cognitivo de Daniel Kahneman: Sistema 1 (rápido, intuitivo) versus Sistema 2 (lento, deliberativo). O JEV opera no modo Sistema 1 — decisões estruturadas, sem a lentidão de gerar texto.
O batching que mudou tudo
Comecei com uma chamada HTTP por pergunta. Oito perguntas por post. Quase 13 mil posts. Fazendo as contas: 103 mil requests. Ia demorar horas.
Lendo a documentação da TypeSafe encontrei um cookbook chamado Parallel questions. O exemplo mostrava 13 perguntas sobre um artigo da Wikipedia sendo enviadas numa única request.
O benchmark deles:
- ~12.2x mais barato (o documento é enviado uma vez só)
- ~10x mais rápido (uma ida e volta em vez de treze)
- Mesmas respostas (cada pergunta é avaliada de forma independente)
Fazia sentido: enviar todas as oito perguntas de classificação numa única chamada. O texto do post vai uma vez, as perguntas vão juntas, as respostas voltam juntas.
O código original já fazia isso. O que faltava era aumentar o paralelismo.
Tip
Aumentei de 50 para 200 requests simultâneas. O TypeSafe aguentou tranquilo.
Primeira linha do log depois do ajuste:
[Batch 1] 200/200 OK em 3.1s | 👧M:2 👧I:1 ⭐:0Três segundos para 200 posts. Cada post com oito perguntas. São 1.600 decisões estruturadas em três segundos.
Os números finais
| Métrica | Valor |
|---|---|
| Total processado | 12.927 itens |
| Tempo total | 205 segundos (~3.4 min) |
| Velocidade | ~63 itens/segundo |
| Mencionam Marina | 91 posts |
| Mencionam Isabella | 69 posts |
| Mencionam ambas | 21 posts |
| Candidatos destaque | 424 posts |
O modelo identificou corretamente o post do nascimento da Marina (“Nasceu a Marina!!! 3.395 kg e 49 cm!!”) como destaque máximo. Identificou 184 “frases das filhas” — aquele padrão “Marina em:” ou “Isa em:” que eu usava na época. Marcos de desenvolvimento por fase da vida também apareceram bem classificados.
Comparando com a classificação manual
Eu já tinha um blog com 279 posts curados manualmente. Classificados por personagem (Marina, Isabella, Juntas) e por categoria (lógica-infantil, marcos-crescimento, escola-amigos).
Os números do JEV ficaram menores. Por quê?
O tradeoff dos thresholds
O JEV retorna probabilidades. Eu usei 0.7 como corte: só conta como “menciona Marina” se a probabilidade for 70% ou mais.
Alguns posts do blog antigo ficaram abaixo:
- “E a Isa na casa da vó…” → 0.62 (menção curta)
- “Marina quase pronta para ir para casa!!” → 0.61 (contexto ambíguo)
- “Essa careta da Tia Fran tá com uma cara de Marinoca” → 0.47 (apelido em comparação)
Se eu baixar o threshold para 0.5, os números ficam próximos do blog curado manualmente.
O threshold é uma escolha. Mais alto: menos posts, mais precisão. Mais baixo: mais posts, pode incluir falsos positivos.
O que o JEV não faz
- Não gera texto. Se você quer um resumo do post, precisa de outro modelo.
- Não explica. Ele dá 0.47 para “menciona Marina”, mas não diz por quê. Você infere pelo contexto.
- Não aprende com feedback. É stateless. Cada chamada é independente.
O que o JEV faz muito bem
- Consistência. A mesma pergunta sobre o mesmo texto dá o mesmo resultado. Não tem variação de temperatura, não tem “hoje acordou criativo”.
- Velocidade. 63 itens por segundo, com oito perguntas cada. Throughput de banco de dados, não de LLM.
- Estrutura. A resposta é JSON tipado.
noul: 0.84, não “provavelmente sim, mas depende do contexto”. - Custo. O preço por token é uma fração do que você paga em modelos generativos. E você não paga por tokens de saída — a resposta é só a pontuação.
Quando usar
Classificação em escala. Triagem de conteúdo. Roteamento de intenção. Moderação. Qualquer coisa onde você precisa de decisões estruturadas sobre texto.
Se você está gerando N classificações com GPT e parseando JSON da resposta, provavelmente deveria estar usando isso.
Quanto custou?
Uns R5 de crédito, ainda rolam mais alguns experimentos.
Para saber mais:
- Arquitetura do JEV — deep dive técnico
- modelsystem.one — meu site de curadoria de modelos Sistema 1 (como montei o projeto)
- JEV no skilldev.pro — skill para usar com agentes
Publicado originalmente no Substack.