Em defesa de não usar IA — usa ML
Toda a reunião de produto em 2026 acaba na mesma frase: "e depois o GPT podia sugerir…". Já estivemos do outro lado dessa frase vezes suficientes para escrever o que fazemos em vez disso — e porque, para o tipo de produtos que construímos, ganha quase sempre.
O imposto LLM que ninguém soma
Uma chamada a um LLM não é uma feature. É um custo recorrente, um orçamento de latência, uma exposição regulatória e um problema de avaliação — tudo agrupado numa única API key. Num ecrã de bem-estar com 30 000 utilizadores activos por dia, até um modelo pequeno se torna a linha do P&L que o teu CFO aprende a soletrar. E isto antes da infraestrutura de streaming, do prompt caching, da monitorização de jailbreaks e dos embaraços "como modelo de linguagem AI" que a tua caixa de suporte te reenvia.
Nada disto é um argumento contra LLMs em geral. É um argumento contra usá-los para listas de sugestões ranqueadas — que é o que a maioria das "features de IA" realmente são, assim que tiras o embrulho.
O que uma "sugestão" normalmente precisa
Recua um passo. Uma sugestão num produto está quase sempre a responder às mesmas três perguntas:
- Que candidatos existem? O conjunto de candidatos é finito e teu — receitas, exercícios, artigos, suplementos, sons, produtos. Escreveste-os tu.
- Qual a relevância de cada um para este utilizador, agora?
- Qual o custo de errar?
Repara no que não está na lista: gerar texto novo. Na maior parte das vezes não precisas de prosa inédita — precisas de ordenar bem coisas já conhecidas.
O modelo aborrecido que ganha ao chatbot
No Jofit — a nossa app de fitness e bem-estar — entregamos um pequeno ranker que pontua cada intervenção candidata (um suplemento, uma troca de refeição, um cue de sono, um ajuste de treino) em três eixos:
- Peso da evidência. Cada intervenção é anotada com o seu estudo de origem e uma pontuação de qualidade (RCT > coorte > case report). A anotação é trabalho único feito por um clínico, não por um modelo.
- Delta pessoal. Quão longe o utilizador está do alvo clínico para a métrica que a intervenção endereça. Uma vitamina D a 10 ng/mL pontua delta superior a uma a 28 ng/mL.
- Custo de adesão. Um pequeno modelo de histórico de hábitos estima quanta fricção a sugestão adiciona: tempo, dinheiro, custo social, se o utilizador já rejeitou sugestões parecidas antes.
Multiplica, ordena, fica com o topo. Tudo o que esteja no tier URGENT clínico salta o ranker por completo. A coisa toda corre em menos de um milissegundo e cabe num único ficheiro.
Porque um chatbot faria isto pior
Um LLM conseguiria gerar a mesma recomendação. Mas:
- Não consegues garantir que cita as fontes. Os links são alucinados 4–10% das vezes mesmo nos melhores modelos.
- Não consegues fazer unit tests. O output muda entre versões do modelo.
- Não consegues explicar uma pontuação. "Porque me sugeriste isto?" devolve um parágrafo, não um número.
- Não consegues correr um A/B test limpo. A variância da deriva de prompt sobrepõe-se à variância da tua mudança.
O ranker não tem nenhum destes problemas. Cada pontuação é uma função de inputs que controlamos. Podemos repetir os dados da semana passada contra o modelo desta semana e quantificar o lift. Podemos perguntar "o que acontecia se duplicássemos o peso do custo de adesão?" e responder numa tarde.
A caixa de ferramentas, por ordem de uso
- Scoring ponderado com coeficientes afinados à mão. Aborrecido. Eficaz. Dois fins-de-semana para entregar.
- Gradient-boosted trees (XGBoost / LightGBM) sobre labels de engagement. O melhor ROI em ML aplicado da última década. Treina num portátil.
- Matrix factorisation para recomendações colaborativas quando já tens histórico user-item. Mesma família do Netflix por volta de 2009. Continua excelente.
- Contextual bandits quando queres explorar tanto como explorar. O Vowpal Wabbit corre-os no edge.
- Um pequeno transformer ou modelo de embeddings para semelhança semântica. Sentence-transformers entrega um modelo de 90 MB que bate o GPT-4 na maioria dos benchmarks de retrieval.
- LLM — só quando o output é genuinamente texto novo que o utilizador precisa de ler, e tens uma linha de orçamento para isso.
Quando ir mesmo buscar um LLM
Três casos legítimos:
- Geração aberta. "Escreve-me um plano de treino para a próxima semana com estas restrições." Não há conjunto de candidatos que pudesses pré-escrever.
- Interface em linguagem natural para um sistema estruturado. O utilizador pergunta em prosa; tu traduzes para uma query; a resposta vem de um sistema determinista. O LLM é o tradutor, não o oráculo.
- Explicação longa. O ranker escolheu a sugestão. O LLM escreve o parágrafo que explica porquê, ancorado nos inputs do ranker. Agora alucinações custam-te uma frase, não uma recomendação clínica.
Perguntas frequentes
Porquê usar um pequeno ranker de ML em vez de um LLM numa funcionalidade de sugestões?
Porque uma lista de sugestões responde a uma pergunta finita e ordenável — qual dos seus próprios candidatos é mais relevante para este utilizador agora — em vez de exigir gerar texto novo. Um LLM faz isto pior: não cita fontes de forma fiável (com alucinações de 4-10%), não se consegue testar unitariamente, não consegue explicar uma pontuação nem fazer testes A/B de forma limpa. Uma chamada a um LLM é ainda um custo recorrente, um orçamento de latência e exposição regulatória.
Como é que o ranker da Jofit pontua cada intervenção candidata?
Pontua cada candidato em três eixos — peso da evidência (um artigo-fonte anotado mais uma pontuação de qualidade do estudo, em que RCT supera coorte que supera relato de caso, avaliada uma vez por um clínico), delta pessoal (quão longe o utilizador está do seu objetivo clínico) e custo de adesão (um modelo de histórico de hábitos que estima a fricção). Os três são multiplicados, ordenados, e ficam os primeiros.
O que acontece em casos clínicos urgentes?
Um nível clínico URGENTE contorna totalmente o ranker, ficando fora da pontuação e ordenação normais.
Isto é um argumento contra os LLMs em geral?
Não — o argumento é especificamente contra usar LLMs para listas de sugestões ordenadas, que é o que a maioria das "funcionalidades de IA" realmente são. A ideia é que não é preciso gerar texto novo; é preciso ordenar bem coisas já conhecidas.
Que técnicas de ML devemos usar primeiro?
Comece com pontuação ponderada com coeficientes afinados à mão, depois árvores com gradient boosting como XGBoost ou LightGBM sobre rótulos de envolvimento, e fatorização de matrizes assim que tiver histórico utilizador-item. O ranker da Jofit corre em menos de um milissegundo e cabe num único ficheiro.
A ordem de entrega
Se estás a olhar para uma spec que diz "sugestões com IA", faz isto:
- Lista os candidatos. Se não consegues, não tens um problema de recomendação — tens um problema de conteúdo. Resolve isso primeiro.
- Escolhe três eixos de scoring. Afina os pesos à mão durante uma semana.
- Entrega. Regista cada sugestão mostrada e cada uma sobre a qual o utilizador agiu.
- Ao fim de 4–6 semanas de dados, treina um modelo gradient-boosted sobre os logs. Substitui os pesos manuais.
- Só então, se ainda precisares de prosa inédita, adiciona um LLM — para explicar, não para decidir.
Entregas mais depressa, gastas menos, dormes melhor, e — mais importante — consegues responder à única pergunta que importa quando um utilizador pergunta porque recebeu aquela sugestão: aqui estão os três números, e aqui está o que significam.