
El estatuto era real. La respuesta seguía siendo ilegal.
La primera respuesta que vi dar a un chatbot gubernamental con confianza y de forma errónea fue sobre un vale de la Sección 8.
Un propietario pregunta, en palabras llanas, si puede rechazar a un inquilino que pagaría el alquiler con un vale de vivienda. La respuesta correcta es no. Rechazarlo es discriminación por fuente de ingresos bajo el NYC Admin. Code § 8-107(5), y la Human Rights Commission de la ciudad puede imponer sanciones civiles de hasta $250,000 por una infracción deliberada. Esta no es una pregunta trampa. Es derecho asentado. Y en octubre de 2023, el propio bot MyCity de Nueva York, ejecutándose sobre Azure AI, dijo a dueños de negocios y propietarios lo contrario. The Markup lo documentó en marzo de 2024: el bot dijo que los propietarios podían rechazar a titulares de vales, que las tiendas podían operar sin efectivo, que los empleadores podían quedarse con una parte de las propinas de sus trabajadores. Cada una de esas respuestas era ilegal, y cada una llevaba el sello de la ciudad en un dominio .gov.
No construí CivicCite porque un modelo alucinara. Lo construí por las respuestas que estaban casi bien, y quiero contarte la que cambió cómo pienso sobre todo el problema. Si quieres ver la cosa en sí, vive aquí: veriprajna.com/es/demos/ia-gubernamental-que-cita-la-ley-o-guarda-silencio. El corpus es un grafo de demostración sintético pero fiel, no asesoramiento jurídico. Pero el mecanismo es real, y el mecanismo es la parte que vale la pena discutir.
El momento que se me quedó no fue el bot inventando una ley. Fue ver cómo mi propio pipeline recuperaba el estatuto correcto y aun así redactaba la respuesta equivocada.
La semana que pasé añadiendo recuperación a un problema que la recuperación no puede tocar
Empecé esto como casi todo el mundo en GovTech lo empieza, convencido de que la solución a un chatbot mentiroso era una mejor recuperación. Dale al modelo el código municipal real. Ancla cada respuesta en una disposición real. Generación aumentada por recuperación, la respuesta estándar al miedo estándar, que es que el modelo inventa cosas. Es una historia limpia, se demuestra de maravilla, y yo la creí más tiempo del que debería.
Luego leí los números de Stanford y arruinaron la historia. Magesh y colegas, en un estudio de 2025 publicado a través de JELS, midieron las dos herramientas de investigación jurídica hechas a propósito que hacen exactamente esto. Lexis+ AI alucinó en el 17% de las consultas. La AI-Assisted Research de Westlaw alucinó en el 33%. Estos no son chatbots de juguete. Son sistemas que recuperan primero el estatuto y generan después, construidos por empresas cuyo negocio entero es acertar sobre la ley. Aproximadamente una de cada tres respuestas de la segunda herramienta seguía siendo incorrecta. La recuperación mejoró el borrador. No hizo que la respuesta fuera segura para publicarse.
Quiero ser honesto sobre cómo se sintió eso, porque acababa de pasar una semana construyendo la misma arquitectura y sintiéndome ingenioso por ello. Mi pipeline descomponía la pregunta del ciudadano en subpreguntas jurídicas atómicas, recuperaba disposiciones candidatas de un grafo de código municipal y limitaba al modelo a redactar solo a partir de lo recuperado. En la pregunta de la Sección 8 hizo todo bien hasta el último paso. Encontró el § 8-107(5). El estatuto correcto. Extrajo el texto exacto sobre la fuente lícita de ingresos. Y luego redactó una frase que, en efecto, decía: sí, puedes rechazar el vale.
La ley correcta. La respuesta equivocada. Una encima de la otra en el mismo borrador.
La recuperación entrega al modelo el estatuto correcto. No hace nada para impedir que el modelo lea ese estatuto al revés.
Esa fue la semana en que el problema cambió de forma para mí. Había estado tratando la alucinación como el enemigo, y la alucinación es real, pero es el fallo que puedes imaginar atrapando. El fallo que de verdad envió las respuestas de MyCity es más sutil y peor: la disposición correcta citada, la conclusión equivocada enunciada. Ninguna fabricación en ninguna parte de la oración. Nada que un filtro de «¿te lo inventaste?» pueda atrapar, porque nada se inventó. Solo una lectura errónea confiada de una ley que estaba ahí mismo. Ese modo de fallo es invisible para la recuperación, porque la recuperación solo comprueba que el estatuto esté presente, nunca que la oración lo haya leído en el sentido correcto.
¿Qué es peor, una ley inventada o una real leída al revés?
Seguí volviendo a esa pregunta, y mi respuesta se hacía cada vez más segura. La ley inventada es el fallo más seguro.
Piensa en lo que hace un ciudadano con cada una. Un estatuto obviamente fabricado suena raro, cita una sección del código que no resuelve, se siente mal. Un estatuto real leído al revés suena perfecto. Tiene una cita genuina. La sección existe. Un propietario lee «sí, puedes rechazar el vale», ve un número de código real adjunto y actúa en consecuencia. Ahora hay un rechazo ilegal, un inquilino con una reclamación por discriminación y un rastro documental que conduce a una respuesta gubernamental. La corrección de la cita es exactamente lo que hace peligrosa la conclusión equivocada. Es la credencial con la que entra el mal consejo.
Así que la comprobación que más me importaba nunca fue «¿es real esta cita?». Fue «¿esta cita realmente respalda esta oración?». En el pipeline esa comprobación es el entailment: dada la afirmación redactada y el texto exacto de la disposición citada, ¿el texto implica la afirmación, la contradice o ninguna de las dos? En el borrador de la Sección 8, el «sí» del modelo se atrapa como contradicho por el § 8-107(5), porque la disposición dice claramente lo contrario. El borrador muere ahí. Lo que sobrevive, y lo que la puerta acaba liberando, es la afirmación corregida: un propietario no puede rechazar, y aquí está el estatuto que lo dice.

Lo que insistí, y la razón de que esa pantalla exista, es que el entailment no es una caja negra en la que tengas que creer. Puedes abrir la etapa Verify y leer su entrada y salida en bruto: la afirmación redactada, el texto estatutario contra el que se comprobó, la etiqueta y la razón en las propias palabras de la disposición. Un veredicto que no puedes inspeccionar no es verificación. Es una segunda opinión con mejores valores de producción. Ya había aprendido, de la forma cara, que pedirle a un modelo que arbitre a otro modelo solo te da dos modelos de acuerdo, lo cual es una cosa más débil de lo que parece.
El movimiento que por fin funcionó fue dejar de intentar hacer el modelo digno de confianza
Recuerdo el cambio de enfoque exacto, porque se sintió como rendirse y resultó ser todo el diseño. Dejé de intentar hacer el modelo digno de confianza y empecé a hacer irrelevante su fiabilidad.
El cambio es este. El modelo de lenguaje en CivicCite es un asesor. Descompone la pregunta, redacta una respuesta candidata, ofrece una opinión de entailment. Nunca llega a liberar nada. Fuera del marco de agentes, en Python determinista llano, hay algo que llamo la Statutory Decision Gate, y libera una subrespuesta solo cuando se cumplen cuatro condiciones a la vez: la cita existe, la disposición está vigente, el texto citado implica la afirmación y nada entra en conflicto con ella. Falta cualquiera y la respuesta no se publica. Dos de esas comprobaciones son aritmética y lógica puras. Vigente es una comparación de fechas: la disposición no tiene fecha de derogación y su fecha de entrada en vigor es igual o anterior a la fecha de referencia. Conflicto es una lectura del grafo. No hay prompt, ni temperatura, ni persuasión.

Digo dos frases constantemente ahora. Una es los agentes aconsejan, la puerta decide. La otra es que un LLM no puede votarse a sí mismo más allá de la puerta, por muy confiado que esté su borrador. Esto importa más de lo que parece, porque el fallo seductor en todo este campo es dejar que el modelo califique su propio trabajo y llamar a la nota «verificación». Un modelo que redacta la respuesta no puede ser lo que certifica que la respuesta es segura. La puerta es deliberadamente más tonta que el modelo y deliberadamente está fuera de él, y ese es todo el punto. La inteligencia propone. El código dispone.
El modelo es un buen escritor y un mal juez. Así que lo dejo escribir, y nunca lo dejo juzgar.
La demo es honesta sobre sus límites, y yo también lo seré. El corpus es un grafo sintético pero fiel de código municipal, parafraseado de disposiciones reales, no una fuente de registro. El enrutamiento de escalado 311 se calcula y se muestra, pero el conector a un sistema de casos real está simulado. La redacción restringida usa un validador de lista blanca y una re-pregunta en lugar de decodificación a nivel de token de producción. Lo que es real es la lógica de decisión, y la lógica de decisión es el producto.
Por qué confío más en el silencio que en una buena respuesta
No esperaba sentirme orgulloso de que la demo se negara a responder, y ahora es mi cosa favorita que hace. El ejemplo más claro es un food truck.
Un vendedor pregunta si puede dejar su camión aparcado en un espacio con parquímetro todo el día bajo la norma general de aparcamiento de vendedores. El asistente llano responde con alegría y de forma errónea, citando una norma como si estuviera vigente. CivicCite también redacta un candidato, y el candidato cita una disposición de aparcamiento que ha sido derogada. Entonces corre la comprobación de vigencia. La disposición tiene una fecha de derogación. Vigente falla. Y en lugar de recurrir a alguna norma adyacente y farolear, la puerta retiene la respuesta, marca la pregunta como fuera de la cobertura verificada y la enruta a un departamento en vivo con los hallazgos parciales adjuntos.

Una respuesta equivocada en un dominio gubernamental no es una vergüenza. Es una responsabilidad con el nombre de la ciudad encima.
Mira lo que esa pantalla se niega a hacer. No sintetiza una respuesta plausible a partir de un estatuto muerto. Dice, en lenguaje llano, que la única disposición que aborda esto ha sido derogada y nada actualmente vigente rige la pregunta, y entrega al ciudadano en lugar de adivinar. La abstención honesta supera a una respuesta confiada y equivocada, en el gobierno especialmente. Y en el gobierno lo que está en juego no es reputacional. El asesoramiento jurídico gubernamental se sitúa en la zona de función propietaria, lo que significa que no hay escudo de inmunidad soberana detrás del cual esconderse cuando la respuesta resulta ser equivocada.
Esto ya no es una preocupación hipotética, que es parte de por qué construí la cosa ahora en lugar de más tarde. Hubo 78 proyectos de ley relacionados con chatbots en 27 estados en 2026. El S7263 de Nueva York llegó al pleno del Senado el 26 de febrero de 2026. Las obligaciones de alto riesgo del Anexo III de la EU AI Act se hacen exigibles el 2 de agosto de 2026, con sanciones de hasta €15M o el 3% de la facturación global. La pregunta regulatoria está pasando de «¿es útil tu IA?» a «¿puedes demostrar que a tu IA se le permitió decir eso?». El silencio lo puedes defender. Una respuesta confiada y equivocada, no.
El número sobre el que un regulador puede actuar de verdad
Solía pensar que la métrica estrella de un sistema como este era una tasa de alucinación, y ahora creo que ese instinto es exactamente al revés. Un porcentaje es lo equivocado que hay que entregar a un regulador.
Imagina que eres el Law Department de la ciudad, la oficina que asume la responsabilidad cuando una respuesta sale mal. «Nuestro chatbot solo alucina el 4% del tiempo» no es tranquilizador. Es una admisión de que cuatro de cada cien ciudadanos reciben una respuesta con la autoridad de la ciudad detrás y nada respaldando la respuesta. El número que significa algo no es sobre cuántas veces se equivoca el modelo. Es sobre si algo no verificado se dejó salir alguna vez por la puerta. Así que la métrica en torno a la cual construí el benchmark es esta: en un golden set fijo y etiquetado de 12 consultas, ejecutado por el pipeline real, el conteo de respuestas liberadas sin una base estatutaria verificada y vigente. El objetivo es cero de doce.
Una tasa de alucinación le dice a un regulador con qué frecuencia fallaste. No puede decirle que lo atrapaste.

Quiero ser preciso sobre lo que ese número es y no es, porque sobreafirmarlo traicionaría toda la premisa. Es un resultado en un conjunto etiquetado fijo, no una garantía de mundo abierto y no «cero alucinación», una frase que creo que ninguna persona honesta debería vender. El modelo sigue redactando afirmaciones imperfectas. El punto es que las no verificadas se retienen, no que nunca se redacten. Junto a ese número hay dos más: 100% de cobertura de registros de auditoría, es decir un registro archivable por consulta tanto si se publica como si se rechaza, y acuerdo de disposition con la verdad de referencia etiquetada. La línea base plain-RAG, la arquitectura MyCity sin puerta, habría publicado las respuestas ilegales documentadas en este mismo conjunto. Esa comparación es contexto, no el titular.
El registro es la parte que defendería con más fuerza.

Cada consulta, liberada o rechazada, produce un Statutory Decision Record: la disposition, la cita, los cuatro resultados de comprobación, la decisión, como datos estructurados que puedes archivar y volver a ejecutar. Nombra el logging de NIST AI RMF y el monitoreo continuo de FedRAMP y StateRAMP como los estándares hacia los que está construido. Soy cuidadoso con esa frase. Built toward es una dirección, no una certificación, y no afirmaré que CivicCite esté certificado frente a ninguno de ellos. Pero un auditor no quiere una promesa de que el modelo es inteligente. Un auditor quiere un registro, por interacción, que muestre exactamente por qué se permitió que existiera una respuesta, en una forma que sobreviva a alguien que intente romperla. La reproducibilidad es lo que convierte una decisión en evidencia, y la evidencia es aquello sobre lo que un regulador puede actuar.
Y si preferirías verlo a leerme describirlo, aquí está toda la demo funcionando de extremo a extremo.
La pregunta con la que me quedo
Sigo volviendo a algo que me sorprendió de mi propia reacción. La primera vez que vi a CivicCite rechazar una pregunta y enrutarla a un departamento, alguna parte de mí lo leyó como un fallo del sistema.
No estaba fallando. Estaba haciendo lo único que los bots confiados no pueden hacer, que es conocer el borde de lo que puede probar y detenerse ahí. Había pasado tanto tiempo optimizando por una buena respuesta que había asumido en silencio que una buena respuesta era el objetivo. No lo es. En el gobierno, el objetivo es una respuesta defendible, y la distancia entre esas dos palabras es toda la razón de que exista este producto. Una respuesta defendible a veces se ve como una cita liberada. Con la misma frecuencia se ve como una pregunta enrutada y un registro archivado.
Así que la pregunta que dejaría a cualquiera que construya IA para un gobierno, o la compre, no es «qué tan preciso es tu modelo». Los mejores modelos seguirán mejorando en escribir respuestas fluidas y equivocadas en contexto, porque la fluidez nunca fue la pieza que faltaba. La pregunta que hago antes de que algo salga por la puerta es más estrecha y más dura. ¿Puedes demostrar, ahora mismo, que esta respuesta exacta se rastrea hasta un estatuto que existe y está actualmente vigente, y esa prueba sobreviviría a un tribunal que quisiera que fallara? Si la respuesta es no, no importa lo bueno que sea el modelo. El sistema debería guardar silencio. Puedes verlo decidir, de cualquier modo, aquí: veriprajna.com/es/demos/ia-gubernamental-que-cita-la-ley-o-guarda-silencio.
La confianza no pertenece a un modelo en el que tengas que creer. Pertenece a código que puedes auditar.


