"Erro de código, erro de configuração, erro de pedido: os três tipos e por que a IA só resolve um"
"Tem erro que mora no código, erro que mora no painel e erro que mora no seu pedido. A IA só enxerga o primeiro. A triagem de 3 perguntas pra fazer antes."
"you're just going in circles."
"Você só está andando em círculos." Escreveu um usuário do Bolt, em 2025, depois de gastar crédito num projeto simples. É relato de uma pessoa, não estatística, mas é a frase que eu mais ouço de quem constrói com IA.
Tem loop que acontece porque você pediu mal o conserto. Já fiz a autópsia de um desses. Este post é sobre outro: o loop em que a IA nunca ia acertar, porque o erro não estava onde ela olha.
Não é você, e às vezes nem é ela
A IA do Lovable, do Bolt ou do Replit lê o código do seu app. É o mundo dela. Quando você diz "não funciona", ela procura o defeito ali, o único lugar que enxerga. Se o defeito está fora, ela reescreve um código que já estava certo, diz "corrigido", e você paga a rodada.
Existem três lugares onde um erro mora. Ela só vê um.
O mapa: três tipos de erro
1. Erro de código. O defeito está no que foi escrito: um cálculo errado, um botão que não chama nada, um campo que não vai pro banco (a parte do app que guarda os dados). Esse ela resolve, e bem, desde que receba evidência. A documentação do Lovable diz que ele lê sozinho os registros de erro, mas colar a mensagem exata "ainda ajuda" quando o erro acontece no site publicado.
2. Erro de configuração. O código está certo; o que está errado é um valor guardado fora dele, num painel. Chave de acesso de um serviço, endereço do site cadastrado no login, variável de ambiente (um valor, tipo senha, que o app lê de fora do código; expliquei aqui). Dois exemplos das documentações oficiais:
- No Replit, o segredo que você cadastrou pra rodar no editor não vai sozinho pro app publicado. A documentação manda abrir Publishing → Adjust settings → Production app secrets e cadastrar lá também. Esqueceu, o app no ar não acha a chave.
- No Supabase, o banco e o login por trás de muito app feito no Lovable, o endereço padrão do site (Site URL) vem como
http://localhost:3000, que é o endereço do computador de quem programa. A documentação manda trocar pelo endereço de produção. Não trocou, o e-mail de "esqueci a senha" manda o cliente pra um endereço que não existe no celular dele.
Nos dois casos, a IA reescreve o código dez vezes e nada muda: nada ali estava errado.
3. Erro de pedido. O app faz exatamente o que você pediu, e o que você pediu não era o que você queria. Pediu "10% de desconto pra cliente antigo" e ela deu desconto em cada item, não no total. Pediu "o cliente vê os pedidos" e todo cliente vê os pedidos de todo mundo. A documentação da Anthropic, que faz o Claude, resume bem: trate a IA como "um funcionário novo e brilhante, que não tem o contexto das suas regras". Ela não erra o código. Acerta a coisa errada, e quando você reclama, acerta de novo a coisa errada, de outro jeito.
| Tipo | Onde mora | A IA vê? | Quem resolve |
|---|---|---|---|
| Código | nos arquivos do app | sim | a IA, com a mensagem de erro colada |
| Configuração | no painel (Replit, Supabase, Stripe, domínio) | não | você, clicando no painel |
| Pedido | na sua cabeça | não | você, reescrevendo a regra |
A triagem: três perguntas antes de pedir conserto
Dois minutos, antes do primeiro "conserta".
Pergunta 1: funciona num lugar e quebra em outro? Funciona na prévia e quebra no link publicado. Funciona no seu computador e não no do cliente. Funciona pra você e o e-mail não chega pra ninguém. Se sim, aposte em configuração e mande este pedido, que não mexe em nada:
"Não mude código. Liste cada configuração que fica fora do código e que essa parte do app precisa pra funcionar no ar: variáveis, chaves, endereços cadastrados, permissões. Pra cada uma, me diga em qual painel eu confiro e o nome exato que deve aparecer lá."
A IA não enxerga o painel, mas enxerga o que o código espera achar nele. Com a lista na mão, você confere.
Pergunta 2: o app faz o que eu escrevi, só que não o que eu queria? Pra saber, peça a descrição, não o conserto. No Lovable, use o modo de planejamento (Plan mode); pela documentação, ele "nunca modifica o código" e custa um crédito por mensagem:
"Sem mudar nada, me explique em português simples o que o app faz hoje quando [a situação]. Passo a passo, com um exemplo de números."
Leia a resposta. Se ela descreve certinho o que você pediu e mesmo assim está errado, o erro é de pedido. Escreva a regra de novo, com um exemplo: "cliente antigo é quem comprou antes de janeiro; o desconto é de 10% sobre o total, não sobre cada item; pedido de R$ 200 fica R$ 180". A regra de ouro da mesma documentação da Anthropic serve de teste: mostre o pedido pra alguém sem contexto. Se essa pessoa ficaria confusa, a IA também fica.
Pergunta 3: nenhuma das duas? Aí é código. Abra o console, copie o erro e mande com evidência, do jeito da autópsia. Agora ela procura no lugar certo.
A ordem importa: configuração e pedido vêm primeiro porque a IA não acha nenhum dos dois sozinha.
Era uma parede de várias
Separar os três tipos de erro é a letra D do ciclo que eu uso: definir antes de mandar construir. O erro de pedido some quando a regra é escrita antes, com exemplo. O de configuração some quando você sabe quais painéis o app tem e o que mora em cada um. O de código fica pra IA, com prova. São peças de um caminho só, e têm ordem: quem define a regra antes e conhece os painéis quase não entra no loop.
Fontes
- Relato de usuário do Bolt, 2025, "you're just going in circles", colhido na pesquisa do blog (relato de uma pessoa, não estatística; o link original não ficou registrado)
- Lovable, "Debug and improve your app" (o Lovable lê os logs, mas colar o erro exato ajuda quando ele acontece fora da prévia): https://docs.lovable.dev/prompting/prompting-debugging
- Lovable, "Plan mode" (não modifica código; um crédito por mensagem): https://docs.lovable.dev/features/plan-mode
- Replit Docs, "Secrets" (segredos de produção em Publishing → Adjust settings → Production app secrets): https://docs.replit.com/core-concepts/project-editor/app-setup/secrets
- Supabase Docs, "Redirect URLs" (Site URL padrão
http://localhost:3000, trocar pelo endereço de produção): https://supabase.com/docs/guides/auth/redirect-urls - Anthropic, "Prompting best practices" (o funcionário novo sem contexto; a regra de ouro do colega): https://platform.claude.com/docs/en/build-with-claude/prompt-engineering/claude-prompting-best-practices