
O estatuto era real. A resposta ainda era ilegal.
A primeira resposta que eu já vi um chatbot governamental dar com confiança — e errada — foi sobre um voucher da Seção 8.
Um proprietário pergunta, em palavras simples, se pode recusar um inquilino que pagaria o aluguel com um voucher de moradia. A resposta correta é não. Recusar é discriminação por origem de renda sob o Código Admin. de NYC § 8-107(5), e a Comissão de Direitos Humanos da cidade pode aplicar multas civis de até US$ 250.000 por uma violação dolosa. Isso não é uma pergunta pegadinha. É direito consolidado. E em outubro de 2023, o próprio bot MyCity da cidade de Nova York, rodando na Azure AI, disse a donos de negócios e proprietários o contrário. O The Markup documentou isso em março de 2024: o bot disse que os proprietários podiam recusar titulares de voucher, que as lojas podiam operar sem dinheiro em espécie, que os empregadores podiam embolsar uma fatia das gorjetas de seus funcionários. Cada uma dessas respostas era ilegal, e cada uma delas carregava o selo da cidade em um domínio .gov.
Eu não construí o CivicCite porque um modelo alucinou. Construí por causa das respostas que estavam quase certas, e quero contar a você sobre aquela que mudou como penso o problema inteiro. Se quiser ver a coisa em si, ela está aqui: veriprajna.com/pt-BR/demos/ia-governamental-que-cita-a-lei-ou-permanece-em-silencio. O corpus é um grafo de demonstração sintético, porém fiel — não é aconselhamento jurídico. Mas o mecanismo é real, e o mecanismo é a parte que vale a pena discutir.
O momento que ficou comigo não foi o bot inventando uma lei. Foi ver meu próprio pipeline puxar o estatuto correto e mesmo assim redigir a resposta errada.
A semana que passei adicionando recuperação a um problema que a recuperação não alcança
Comecei do jeito que quase todo mundo em GovTech começa: convencido de que a correção para um chatbot mentiroso era uma recuperação melhor. Dar ao modelo o código municipal de verdade. Fundamentar cada resposta em uma disposição real. Geração aumentada por recuperação, a resposta padrão ao medo padrão — de que o modelo inventa coisas. É uma história limpa, demonstra lindamente, e eu acreditei nela por mais tempo do que deveria.
Então li os números de Stanford e eles arruinaram a história. Magesh e colegas, em um estudo de 2025 publicado via JELS, mediram as duas ferramentas de pesquisa jurídica feitas sob medida que fazem exatamente isso. A Lexis+ AI alucinou em 17% das consultas. A Pesquisa Assistida por IA da Westlaw alucinou em 33%. Esses não são chatbots de brinquedo. São sistemas que recuperam o estatuto primeiro e geram depois, construídos por empresas cujo negócio inteiro é acertar a lei. Cerca de uma em cada três respostas da segunda ferramenta ainda estava errada. A recuperação melhorou o rascunho. Não tornou a resposta segura para liberar.
Quero ser honesto sobre como isso me afetou, porque eu tinha acabado de passar uma semana construindo a mesma arquitetura e me sentindo esperto com ela. Meu pipeline decompunha a pergunta do cidadão em subperguntas jurídicas atômicas, recuperava disposições candidatas de um grafo de código municipal e restringia o modelo a redigir só a partir do que recuperava. Na pergunta da Seção 8, ele fez tudo certo até o último passo. Encontrou o § 8-107(5). O estatuto correto. Puxou o texto exato sobre origem lícita de renda. E então redigiu uma frase que dizia, em essência, sim, você pode recusar o voucher.
A lei certa. A resposta errada. Uma em cima da outra no mesmo rascunho.
A recuperação entrega ao modelo o estatuto correto. Ela não faz nada para impedir que o modelo leia esse estatuto de trás para frente.
Foi a semana em que o problema mudou de forma para mim. Eu vinha tratando a alucinação como o inimigo, e a alucinação é real, mas é a falha que você consegue imaginar pegar. A falha que de fato enviou as respostas do MyCity é mais sutil e pior: a disposição certa citada, a conclusão errada afirmada. Nenhuma fabricação em lugar nenhum da frase. Nada para um filtro de "você inventou isso" pegar, porque nada foi inventado. Só uma leitura confiante e errada de uma lei que estava bem ali. Esse modo de falha é invisível para a recuperação, porque a recuperação só verifica que o estatuto está presente, nunca que a frase o leu no sentido certo.
O que é pior, uma lei inventada ou uma real lida ao contrário?
Eu voltava a essa pergunta, e minha resposta ficava cada vez mais certa. A lei inventada é a falha mais segura.
Pense no que um cidadão faz com cada uma. Um estatuto obviamente fabricado soa estranho, cita uma seção de código que não resolve, parece fora do lugar. Um estatuto real lido de trás para frente soa perfeito. Tem uma citação genuína. A seção existe. Um proprietário lê "sim, você pode recusar o voucher", vê um número de código real anexado e age com base nisso. Agora há uma recusa ilegal, um inquilino com uma reclamação de discriminação e um rastro documental que leva de volta a uma resposta do governo. A correção da citação é exatamente o que torna a conclusão errada perigosa. É a credencial com que o mau conselho chega.
Então a verificação com que eu mais me importava nunca foi "essa citação é real". Foi "essa citação de fato sustenta esta frase". No pipeline, essa verificação é a implicação: dada a alegação redigida e o texto exato da disposição citada, o texto implica a alegação, a contradiz, ou nenhuma das duas. No rascunho da Seção 8, o "sim" do modelo é pego como contradito pelo § 8-107(5), porque a disposição diz claramente o oposto. O rascunho morre ali. O que sobrevive, e o que o portão eventualmente libera, é a alegação corrigida: um proprietário não pode recusar, e aqui está o estatuto que diz isso.

Aquilo em que eu insistia, e a razão de essa tela existir, é que a implicação não é uma caixa-preta em que você precisa acreditar. Você pode abrir a etapa Verify e ler sua entrada e saída brutas: a alegação redigida, o texto estatutário contra o qual foi verificada, o rótulo e o motivo nas próprias palavras da disposição. Um veredito que você não consegue inspecionar não é verificação. É uma segunda opinião com produção melhor. Eu já tinha aprendido, do jeito caro, que pedir a um modelo para arbitrar outro modelo só lhe dá dois modelos concordando — uma coisa mais fraca do que parece.
O movimento que finalmente funcionou foi parar de tentar tornar o modelo confiável
Lembro da reformulação exata, porque pareceu desistir e acabou sendo o desenho inteiro. Parei de tentar tornar o modelo confiável e comecei a tornar sua confiabilidade irrelevante.
A mudança é esta. O modelo de linguagem no CivicCite é um assessor. Ele decompõe a pergunta, redige uma resposta candidata, oferece uma opinião de implicação. Ele nunca consegue liberar nada. Fora do framework de agentes, em Python determinístico puro, há uma coisa que chamo de Portão de Decisão Estatutária, e ele libera uma subresposta só quando quatro condições valem ao mesmo tempo: a citação existe, a disposição está em vigor, o texto citado implica a alegação, e nada conflita com ela. Falhe em qualquer uma e a resposta não sai. Duas dessas verificações são pura aritmética e lógica. Em vigor é uma comparação de datas: a disposição não tem data de revogação e sua data de vigência é igual ou anterior à data de referência. Conflito é uma leitura de grafo. Não há prompt, não há temperatura, não há como persuadi-lo.

Repito duas frases o tempo todo agora. Uma é os agentes aconselham, o portão decide. A outra é que um LLM não consegue votar a si mesmo para além do portão, por mais confiante que seja seu rascunho. Isso importa mais do que parece, porque a falha sedutora em todo esse campo é deixar o modelo dar nota ao próprio trabalho e chamar a nota de "verificação". Um modelo que redige a resposta não pode ser a coisa que certifica que a resposta é segura. O portão é deliberadamente mais burro que o modelo e deliberadamente fora dele, e esse é o ponto inteiro. A inteligência propõe. O código dispõe.
O modelo é um bom escritor e um mau juiz. Então deixo ele escrever, e nunca deixo ele julgar.
A demo é honesta sobre suas bordas, e eu também serei. O corpus é um grafo sintético, porém fiel, de código municipal, parafraseado a partir de disposições reais, não uma fonte oficial. O roteamento de escalonamento 311 é calculado e mostrado, mas o conector a um sistema de casos real é um stub. A redação restrita usa um validador de lista permitida e um novo pedido em vez de decodificação em nível de token de produção. O que é real é a lógica de decisão, e a lógica de decisão é o produto.
Por que confio mais no silêncio do que confio em uma boa resposta
Eu não esperava me orgulhar da demo se recusando a responder, e agora é minha coisa favorita que ela faz. O exemplo mais claro é um food truck.
Um vendedor pergunta se pode deixar seu caminhão estacionado em uma vaga com parquímetro o dia todo sob a regra geral de estacionamento de vendedores. O assistente simples responde alegremente e errado, citando uma regra como se estivesse em vigor. O CivicCite também redige uma candidata, e a candidata cita uma disposição de estacionamento que foi revogada. Então a verificação de vigência roda. A disposição tem uma data de revogação. Em vigor falha. E em vez de cair de volta em alguma regra adjacente e blefar, o portão retém a resposta, marca a pergunta como fora da cobertura verificada e a encaminha a um departamento ao vivo com os achados parciais anexados.

Uma resposta errada em um domínio governamental não é um constrangimento. É uma responsabilidade com o nome da cidade nela.
Olhe o que aquela tela se recusa a fazer. Ela não sintetiza uma resposta plausível a partir de um estatuto morto. Ela diz, em linguagem clara, que a única disposição que trata disso foi revogada e nada atualmente em vigor rege a pergunta, e entrega o cidadão adiante em vez de chutar. A abstenção honesta vence uma resposta errada confiante, especialmente no governo. E no governo as apostas não são reputacionais. O aconselhamento jurídico governamental situa-se na zona de função proprietária, o que significa que não há escudo de imunidade soberana atrás do qual se esconder quando a resposta acaba errada.
Isso não é mais uma preocupação hipotética, o que é parte de por que construí a coisa agora e não depois. Havia 78 projetos de lei relacionados a chatbots em 27 estados em 2026. O S7263 de Nova York chegou ao plenário do Senado em 26 de fevereiro de 2026. As obrigações de alto risco do Anexo III do Regulamento de IA da UE tornam-se aplicáveis em 2 de agosto de 2026, com penalidades de até €15M ou 3% do faturamento global. A pergunta regulatória está mudando de "sua IA é útil" para "você consegue provar que sua IA tinha permissão para dizer aquilo". Silêncio você consegue defender. Uma resposta errada confiante, não.
O número em que um regulador de fato pode agir
Eu costumava achar que a métrica de manchete para um sistema como este era uma taxa de alucinação, e agora acho que esse instinto está exatamente de cabeça para baixo. Uma porcentagem é a coisa errada a entregar a um regulador.
Imagine que você é o Departamento Jurídico da cidade, o escritório que carrega a responsabilidade quando uma resposta dá errado. "Nosso chatbot alucina só 4% das vezes" não é tranquilizador. É uma admissão de que quatro em cada cem cidadãos recebem uma resposta com a autoridade da cidade por trás e nada sustentando a resposta. O número que significa alguma coisa não é sobre com que frequência o modelo erra. É sobre se algo não verificado alguma vez foi permitido sair pela porta. Então a métrica em torno da qual construí o benchmark é esta: em um conjunto dourado fixo e rotulado de 12 consultas, rodado pelo pipeline real, a contagem de respostas liberadas sem uma base estatutária verificada e em vigor. A meta é zero em doze.
Uma taxa de alucinação diz a um regulador com que frequência você falhou. Não consegue dizer a ele que você pegou.

Quero ser preciso sobre o que esse número é e não é, porque exagerá-lo trairia toda a premissa. É um resultado em um conjunto rotulado fixo, não uma garantia de mundo aberto e não "zero alucinação", uma frase que acho que nenhuma pessoa honesta deveria vender. O modelo ainda redige alegações imperfeitas. O ponto é que as não verificadas são retidas, não que nunca sejam redigidas. Ao lado desse número ficam mais dois: 100% de cobertura de registro de auditoria, significando um registro arquivável por consulta quer ela saia ou se recuse, e concordância de disposição com a verdade de referência rotulada. A linha de base plain-RAG, a arquitetura MyCity sem portão, teria liberado as respostas ilegais documentadas neste mesmo conjunto. Essa comparação é contexto, não a manchete.
O registro é a parte que eu defenderia com mais força.

Cada consulta, liberada ou recusada, produz um Registro de Decisão Estatutária: a disposição, a citação, todos os quatro resultados de verificação, a decisão, como dados estruturados que você pode arquivar e reexecutar. Nomeia logging do NIST AI RMF e monitoramento contínuo FedRAMP e StateRAMP como os padrões para os quais é construído. Sou cuidadoso com essa frase. "Construído na direção de" é uma direção, não uma certificação, e não vou afirmar que o CivicCite é certificado contra nenhum deles. Mas um auditor não quer uma promessa de que o modelo é inteligente. Um auditor quer um registro, por interação, que mostre exatamente por que uma resposta teve permissão de existir, de uma forma que sobreviva a alguém tentando quebrá-la. A reprodutibilidade é o que transforma uma decisão em evidência, e evidência é aquilo em que um regulador pode agir.
E se preferir assistir a isso a me ouvir descrever, aqui está a demo inteira rodando de ponta a ponta.
A pergunta com que fico
Fico voltando a algo que me surpreendeu na minha própria reação. Na primeira vez que vi o CivicCite recusar uma pergunta e encaminhá-la a um departamento, alguma parte de mim leu aquilo como o sistema falhando.
Não estava falhando. Estava fazendo a única coisa que os bots confiantes não conseguem fazer, que é conhecer a borda do que consegue provar e parar ali. Eu tinha passado tanto tempo otimizando por uma boa resposta que tinha assumido em silêncio que uma boa resposta era o objetivo. Não é. No governo, o objetivo é uma resposta defensável, e a distância entre essas duas palavras é a razão inteira de este produto existir. Uma resposta defensável às vezes parece uma citação liberada. Com a mesma frequência, parece uma pergunta encaminhada e um registro arquivado.
Então a pergunta que eu deixaria com qualquer um que constrói IA para um governo, ou a compra, não é "quão preciso é o seu modelo". Modelos melhores vão continuar ficando melhores em escrever respostas fluentes e erradas no contexto, porque a fluência nunca foi a peça que faltava. A pergunta que faço antes de qualquer coisa sair pelo portão é mais estreita e mais difícil. Você consegue provar, agora mesmo, que esta resposta exata remonta a um estatuto que existe e está atualmente em vigor, e essa prova sobreviveria a um tribunal que quisesse que ela falhasse? Se a resposta for não, não importa quão bom seja o modelo. O sistema deve ficar em silêncio. Você pode vê-lo decidir, de qualquer jeito, aqui: veriprajna.com/pt-BR/demos/ia-governamental-que-cita-a-lei-ou-permanece-em-silencio.
A confiança não pertence a um modelo em que você precisa acreditar. Pertence a código que você pode auditar.


