Desde que inicié este proyecto he insistido mucho en una idea que para algunos puede sonar utópica: la programación como parte de la solución al colapso de nuestros tribunales. Hemos hablado de cómo automatizar tareas mecánicas nos devuelve lo más valioso que tenemos, que es el tiempo para pensar, para estudiar y para motivar resoluciones con la calidad que los ciudadanos merecen.

Sin embargo, soy consciente de que hasta ahora todo esto ha quedado en un plano algo abstracto y general. Es fácil decir que la programación ayuda, pero lo difícil es visualizar cómo se traduce eso en el escritorio de un juez un martes por la mañana rodeado de expedientes.

Por eso, he decidido crear esta entrada, donde voy a abrir las puertas de mi juzgado y de mi ordenador. Quiero enseñaros las herramientas reales que he ido creando y que utilizo en mi día a día. No son prototipos ni teorías: son herramientas que hoy mismo están funcionando para que mi trabajo sea más ágil y menos burocrático.

De algunas de estas herramientas ya he ido dando algunas pinceladas en otras entradas de este blog, pero hoy quiero ir un paso más allá y presentarlas de forma más estructurada. Anticipo que aquí me limitaré a explicar las herramientas tal como son y la utilidad que me prestan en mi trabajo diario. No obstante, para algunas de ellas, por su interés y profundidad técnica, les dedicaré más adelante una entrada específica para explicar detalladamente su funcionamiento interno.

Calculadora de duración de juicios

Para empezar por lo más sencillo, os presento una herramienta que nació de una necesidad puramente logística: el control de los señalamientos que nos llegan desde los juzgados de instrucción.

Como sabéis, los juicios rápidos vienen ya señalados desde la guardia, pero para que la agenda de la sala no se convierta en un caos, por Junta de Jueces fijamos criterios de duración. Tanto para ayudar a señalar en base a tales criterios, como a controlar que los asuntos recibidos se ajustaban a ellos, nació la calculadora.




La interfaz es muy simple y directa. Como veréis en la imagen que acompaña esta entrada, me permite insertar desde el número de partes personadas, el número de intervinientes (testigos, peritos, etc.) y la duración estimada de las grabaciones que se van a reproducir. Con estos datos, la herramienta aplica automáticamente los criterios de la Junta y me devuelve el tiempo total de duración previsto para esa vista. No hay margen de error humano en el cálculo: lo que dice el criterio es lo que la calculadora arroja.

Aunque esta herramienta fue pensada originalmente para los juicios rápidos, la realidad es que la acabo aplicando cada día al señalar cualquier tipo de vista en sala. Me da una base objetiva sobre la que trabajar. Sin embargo, la experiencia me ha enseñado a aplicar un margen de corrección manual que el algoritmo puro no siempre contempla. He detectado que, cuando se trata de juicios que superan las 3 horas o que cuentan con una complejidad alta por el número de partes o el objeto, la calculadora puede llegar a proponer un tiempo demasiado ajustado.

Por eso, en esos casos, siempre añado manualmente media hora extra para cubrir la duración de las conclusiones. Es el ejemplo perfecto de cómo el código nos da la base, pero el criterio del juez (en este caso, un criterio de pura gestión de tiempos) es el que termina de ajustar la herramienta a la realidad del estrado.

Autos de prisión

Si algo es el pan de cada día en un Juzgado de lo Penal son los autos de prisión, pues no son pocos los casos en los que es necesario adoptar esta medida para asegurar la presencia de los acusados en juicio. Con el objetivo de agilizar esta redacción técnica y repetitiva, desarrollé una herramienta que gestiona los distintos escenarios en los que suelo acordar estas medidas.

 

La herramienta no es un simple editor de texto, sino un sistema basado en la casuística real de mi juzgado. El programa contempla varias opciones iniciales que, al ser seleccionadas, despliegan campos específicos y cargan plantillas predefinidas: prisión por incomparecencia a juicio, prisión por no comparecer a dos conformidades, prisión por no comparecer tras requisitoria en la que se le requiere para presentarse el siguiente día hábil... Dependiendo de la opción elegida, el sistema genera unos desplegables dinámicos que me permiten montar la estructura del auto de forma lógica y rápida.

Es interesante notar que, precisamente por la complejidad de lo que se acuerda en un auto de prisión, esta es, con diferencia, la herramienta en la que al final acabo introduciendo más modificaciones manuales en el documento que me genera la aplicación. La tecnología me da la estructura, pero la idiosincrasia de cada caso es única.

Lejos de ver estas modificaciones manuales como un fallo del programa, creo que confirman la visión que he mantenido siempre respecto del uso de la tecnología en justicia: la tecnología debe proporcionarnos una base sólida sobre la que poder trabajar. El código me ahorra el 80% del trabajo mecánico de formato y estructura, permitiéndome volcar toda mi atención en ese 20% de detalles específicos que justifican una decisión tan trascendental.

Sistema integral de documentación de conformidades

Hasta ahora, hemos expuesto herramientas muy concretas y focalizadas en resolver problemáticas específicas, pero ahora vamos a elevar el nivel y a hablar de una herramienta diseñada para gestionar lo que constituye un núcleo importante del volumen de trabajo en un Juzgado de lo Penal: las conformidades.

En mi entrada Cuadernos de Bitácora ya tuve ocasión de hablar sobre esta herramienta, pues ha sido la génesis de mi labor como juez-programador. Dicha herramienta consiste en un sistema informático pensado para la documentación ágil, precisa y coordinada de esas resoluciones orales que, al nacer del libre acuerdo entre las partes, son firmes desde el mismo momento de su pronunciamiento


La herramienta garantiza una documentación integral en escenarios de procedimiento abreviado, juicio rápido o diligencias urgentes, permitiendo gestionar de forma fluida un número ilimitado de partes procesales, desde acusados y acusaciones particulares hasta responsables civiles.

Lo que realmente marca la diferencia en el día a día es la capacidad del programa para procesar una complejidad que los modelos de texto tradicionales no pueden abarcar con seguridad. El sistema permite introducir múltiples delitos para cada acusado, con sus respectivas penas y circunstancias modificativas, y asume automáticamente tareas técnicas como el cálculo de la responsabilidad personal subsidiaria o el fraccionamiento de las indemnizaciones en materia de responsabilidad civil

La verdadera potencia de este desarrollo reside en su coordinación documental simultánea. A partir de una única introducción de datos, el sistema genera de forma paralela la sentencia, el eventual auto de ejecución para aquellos pronunciamientos que no alcancen firmeza y el requerimiento al penado. Esto asegura que toda la documentación que emite el juzgado gravite sobre un mismo eje de datos, eliminando las incongruencias y permitiendo que el penado sea notificado de manera inmediata al finalizar la vista.

Desde un punto de vista metodológico, una de las mayores ventajas es que el sistema elabora cada resolución desde cero basándose en los datos suministrados, lo que suprime de raíz los errores materiales tan comunes que derivan de la reutilización de plantillas o del "copia y pega" de otros casos

Por su interés y profundidad técnica, quiero anticipar que dedicaré más adelante una entrada específica para explicar su funcionamiento interno y la arquitectura que permite esta integración.

Asistente para la ejecución penal

El asistente para la ejecución penal es mi última creación, y se trata de una herramienta diseñada específicamente para analizar, extraer y estructurar todos los datos de la hoja de antecedentes penales en formato PDF, descargada directamente del sistema SIRAJ


El funcionamiento técnico comienza con la carga del documento, tras lo cual el programa extrae automáticamente todo su contenido y organiza la información sistemáticamente en la memoria, clasificando cada antecedente por órgano sentenciador, penas impuestas, duración y fechas clave como la firmeza o la extinción



Más allá de la simple organización, la aplicación realiza un análisis jurídico-matemático basado en el artículo 136 del Código Penal, indicando junto a cada antecedente si es o no cancelable. Al interactuar con estos estados, el sistema despliega un informe pormenorizado que detalla el cómputo de plazos y el análisis de posibles interrupciones, permitiendo además corregir o modificar cualquier dato extraído antes de su uso

Esta base de datos estructurada alimenta tres módulos especializados para la elaboración de resoluciones: el de suspensión, que cubre todas las modalidades del Código Penal; el de revocación, para gestionar incidencias como la comisión de nuevos delitos; y el de responsabilidad personal subsidiaria, para resolver las consecuencias del impago de multas.

La herramienta resulta especialmente eficaz porque permite referenciar otros asuntos de la hoja histórico-penal con un solo clic, automatizando cálculos complejos como la regla de conversión del artículo 80.3 del Código Penal o el cálculo de la responsabilidad personal subsidiaria aplicable. Al generar cada documento desde cero, se garantiza una coherencia total y se eliminan los errores de transcripción, mejorando la calidad técnica de las resoluciones



Como añadido, esta aplicación está pensada para adaptarse al criterio de cada usuario, pues le permite introducir sus propias plantillas de razonamiento jurídico para que el programa las use como base en futuras ocasiones. De este modo, el sistema se convierte en un reflejo fiel del criterio personal del juzgador.


Finalmente, un aspecto fundamental es su arquitectura completamente local y autónoma, lo que significa que el programa funciona sin conexión a internet y no transmite datos a servidores externos ni utiliza inteligencia artificial, garantizando una protección absoluta de la confidencialidad de la información judicial.

Asistente para el dictado de sentencias con IA (proyecto en desarrollo)

Tras haberos enseñado herramientas plenamente funcionales y aplicadas al día a día de mi juzgado, ahora vamos a abordar el proyecto en el que llevo varios días trabajando.

Antes de entrar en detalles, quiero ser muy claro: este es un proyecto en fase de desarrollo. Se trata de un proyecto en fase de optimización, donde la depuración del código y el refinamiento de los prompts son constantes para alcanzar la precisión que exige la función jurisdiccional No es una solución cerrada, sino un experimento vivo de cómo la programación puede asistirnos en la tarea más compleja de nuestra profesión.

Cuando nos enfrentamos a la redacción de una resolución judicial, tendemos a pensar que todo el texto es fruto de un profundo proceso intelectivo de motivación. Sin embargo, si analizamos fríamente una sentencia, nos damos cuenta de que una parte muy importante de su extensión no es más que la reproducción de datos que otras personas ya han elaborado previamente, o la expresión cronológica de ciertos hitos procesales. 



De aquí es de donde nace este proyecto, que no pretende sustituir el criterio del juez, sino extraer esa información previa, a menudo dispersa en PDFs y notas, y estructurarla de forma coherente para que no tengamos que perder tiempo en tareas de mera transcripción.

El proceso comienza con una primera fase de introducción de datos, donde se cargan los archivos de los escritos de acusación y defensa además de aquellas directrices que el usuario introduce manualmente.

A continuación, el sistema realiza un análisis mediante la API de Gemini para crear lo que llamo un Dossier de Hechos Atómicos, que no es más que una lista organizada donde cada dato queda etiquetado y aislado para que el programa "entienda" los componentes del caso. Finalmente, se pasa a la fase de redacción, donde el asistente utiliza prompts específicos para construir de forma modular el encabezamiento, los antecedentes o los fundamentos genéricos de la sentencia


Por el momento la motivación y la valoración de la prueba son apartados que el programa deja siempre libres para que el usuario los desarrolle manualmente. No obstante, mi objetivo es que en un futuro el asistente también pueda colaborar en el bloque de la motivación. La dinámica que busco implementar consiste en que el usuario exponga de forma directa su decisión y detalle los criterios específicos que le han llevado a tomarla, dejando que el programa se encargue únicamente de la función mecánica de la redacción, sin innovar ni aportar nuevos criterios. 

Así, por ejemplo, la idea que tengo en mente es que el usuario pudiera introducir como Decisión, "Condenatoria" y en el apartado de motivación desgranar uno a uno todos los argumentos que le llevan a tal decisión (porque el testigo ha sido muy creíble y su testimonio goza de gran verosimilitud al no haber incurrido en contradicción, y haber incluso preferido reconocer que no recordaba algún extremo antes que embellecer su relato para perjudicar al acusado; porque consta el documento obrante en el folio 34 que acredita tal extremo; porque en la grabación se ve claramente al acusado golpear a la víctima; porque el perito que ha declarado en juicio ha explicado de forma muy detallada y concisa la afectación específica que padecía...)


Desde mi punto de vista, una sentencia es la exposición cohesionada de ideas muy simples, y considero que el hecho de que el juez exponga materialmente tales ideas concretas para que la inteligencia artificial se encargue de cohesionarlas, sin apartarse en ningún momento del camino marcado, no transgrede en ningún caso la esencia que subyace en el ejercicio de la función jurisdiccional. 

La decisión final y los argumentos íntimos que han llevado a tomarla forman parte de un proceso reflexivo que es completamente humano e inaccesible para la tecnología, y la herramienta solo se ocuparía de dar forma a un fondo que el magistrado ya ha decidido y delimitado previamente.

En todo caso, y como siempre, el programa únicamente ofrecería al usuario un borrador de resolución, el cual debería ser revisado y corregido minuciosamente por el usuario, decidiendo con qué partes de la propuesta se queda y cuáles decide desechar.

Una dinámica que ya tengo incorporada es que no se permite a la inteligencia artificial añadir en la motivación la cita de ningún tipo de jurisprudencia, salvo la que el usuario le indique específicamente, con tal de reducir el riesgo de alucinaciones.

Un aspecto fundamental de este sistema es la seguridad y la protección de datos. Es vital entender que esta aplicación no funciona como un chatbot convencional tipo ChatGPT o el chat público de Gemini. Al utilizar una API de desarrollador, los términos de uso y condiciones garantizan que los datos enviados son confidenciales, pues la información procesada a través de la API no se utiliza para entrenar los modelos globales de la empresa. Los datos entran, se procesan para generar el borrador y no quedan expuestos ni alimentan la base de conocimientos pública de la máquina. Esto nos permite trabajar con la tranquilidad de que la privacidad de las actuaciones judiciales queda preservada en un entorno de desarrollo profesional y privado.

Conclusiones

Todas estas herramientas, desde la calculadora de tiempos hasta el asistente con IA, comparten un denominador común y una misma razón de ser: agilizar lo material para ahorrar tiempo en lo importante. Su propósito no es la sustitución del juzgador, sino su auxilio. Están diseñadas para que el software asuma la carga mecánica y burocrática, permitiendo que el juez recupere su función esencial, que es decidir y motivar con la calidad que cada caso requiere.

Este potencial de optimización tiene un margen de crecimiento inmenso en otras muchas jurisdicciones. Es fácil imaginar el impacto transformador que estas soluciones tendrían en campos como el Derecho Bancario, donde los tribunales se ven inundados por miles de expedientes idénticos en los que únicamente cambian nombres y cifras. Herramientas de este tipo podrían afrontar tales situaciones de colapso con una agilidad pasmosa, resolviendo con precisión técnica lo que hoy supone una carga administrativa inasumible.

La programación, aplicada desde la realidad del estrado, no busca automatizar la justicia, sino dotar al juez de los medios necesarios para ejercerla con mayor libertad intelectual. Es el camino para modernizar nuestras instituciones y ofrecer una respuesta rápida y eficaz a los ciudadanos.