Una aplicación web sencilla donde escribes una pregunta en lenguaje normal —por ejemplo, “¿cuántos días de permiso por mudanza tengo?”— y un asistente te responde basándose en documentos legales que tú le has dado (leyes, un convenio, un reglamento en PDF), citando el fragmento de donde saca la respuesta. Y lo mejor: la aplicación funciona entera en tu ordenador.
🧠 En cristiano: “local” de verdad, con un matiz honesto. La aplicación corre 100% en tu máquina: cuando la usas, ningún documento se envía a ningún servidor. Ahora bien, para construirla usamos Claude Code, que se apoya en la nube durante el desarrollo (lee y escribe archivos en tu equipo, pero razona en servidores externos). En resumen: privacidad total al usar el asistente; durante la construcción, no pegues datos confidenciales en el chat de Claude Code.
🎯 Objetivos de aprendizaje
Qué es un modelo de lenguaje “local” y por qué te interesa para datos sensibles.
Qué es RAG, la técnica que hace que la IA responda con tus documentos y no se los invente.
Cómo pedirle a Claude Code que te construya la aplicación paso a paso.
Cómo ejecutarla, guardarla y volver a abrirla otro día.
Conceptos clave (en dos minutos)
Antes de teclear nada, entendamos qué estamos montando. Son solo tres ideas.
Modelo de lenguaje local
Un “modelo de lenguaje” es el cerebro que entiende y redacta texto (lo mismo que hay detrás de un chatbot conocido). Local significa que ese cerebro se descarga y se ejecuta en tu propia máquina.
🧠 En cristiano: modelo local. Piensa en la diferencia entre ver una película en streaming (necesitas internet y una cuenta) y tenerla descargada en el disco duro (la ves cuando quieras, sin conexión y sin que nadie sepa qué ves). Un modelo local es la versión “descargada” de la IA: privada, gratuita de usar y siempre disponible.
💡 Idea clave. Para un abogado, una gestoría o cualquiera que maneje datos confidenciales, lo local no es un capricho técnico: es que los documentos de tus clientes nunca salen de tu ordenador.
Por qué la IA “se inventa” cosas y cómo evitarlo
Un modelo, por sí solo, responde con lo que “recuerda” de su entrenamiento. A veces acierta y a veces inventa con total seguridad (a esto se le llama alucinación). Para un tema legal, eso es inaceptable.
⚠️ Cuidado. Esto es una herramienta para buscar y redactar más rápido, no un asesor jurídico. RAG reduce mucho los inventos, pero no los elimina, y citar un fragmento no garantiza que la interpretación sea correcta. Contrasta siempre con la norma vigente y con criterio profesional.
RAG: darle a la IA los documentos correctos
La solución se llama RAG (Retrieval-Augmented Generation, o “generación apoyada en búsqueda”). Funciona en dos tiempos:
Buscar: cuando preguntas algo, el sistema busca en tus documentos los fragmentos más relacionados con tu pregunta.
Responder: le pasa esos fragmentos al modelo y le dice: “responde usando SOLO esto, y cita de dónde lo sacas”.
🧠 En cristiano: RAG. Es la diferencia entre un examen “de memoria” y un examen “con apuntes”. RAG le da apuntes a la IA —tus documentos— justo antes de responder. Así contesta con hechos que puedes verificar, no con lo que cree recordar.
Requisitos
Necesitas tres cosas instaladas: Claude Code (para que construya la app), Node.js (motor de apps web, desde nodejs.org, versión LTS) y Ollama (ejecuta modelos en local; lo instalamos en el paso 1). Con un portátil de 8 GB de RAM basta para empezar; con 16 GB irá más holgado.
Privacidad y RGPD
Si indexas expedientes, contratos o datos de clientes, actúas como responsable del tratamiento: necesitas base legal (ejecución de encargo, interés legítimo documentado o consentimiento), informar al interesado y aplicar medidas de seguridad. La IA local ayuda a que los documentos no salgan de tu equipo, pero no sustituye tu responsabilidad profesional ni el deber de secreto profesional del abogado: revisa siempre las respuestas, no subas más datos de los imprescindibles y no uses expedientes reales mientras construyes el proyecto con Claude Code en la nube.
Paso a paso
Paso 1: instala Ollama y descarga un modelo
Ollama es una aplicación gratuita. Descárgala de ollama.com e instálala como cualquier otro programa. Cuando termine, abre la terminal y comprueba que responde:
⌨️ Terminal
ollama --version
Ahora descarga un modelo. Usaremos una versión pequeña y capaz, que cabe holgada en un portátil de 8 GB:
⌨️ Terminal
ollama pull qwen3:4b
🧠 En cristiano: eso del :4b. El :4b indica el “tamaño” del modelo (unos 4.000 millones de parámetros). Cuanto mayor, más listo pero más lento y más memoria necesita. Empieza por 4b; si tu equipo es potente, más adelante puedes probar variantes mayores.
También necesitamos un modelo “de embeddings”, que es el que sabe buscar fragmentos parecidos:
⌨️ Terminal
ollama pull nomic-embed-text
🧠 En cristiano: embeddings. Un “embedding” convierte un trozo de texto en una lista de números que representa su significado. Dos textos que hablan de lo mismo tendrán números parecidos. Gracias a eso, el sistema encuentra el fragmento de la ley que significa lo que preguntaste, aunque no uses las mismas palabras.
✅ Comprueba que funciona. Escribe ollama list y deberías ver qwen3:4b y nomic-embed-text. Eso confirma que están descargados. Para confirmar que Ollama funciona, prueba: ollama run qwen3:4b "hola" y verifica que te contesta.
⚠️ Cuidado. Ollama tiene que estar en marcha para que la app funcione. En Mac y Windows, al instalarlo se abre solo y deja un icono en la barra. Si lo cerraste, ábrelo de nuevo antes de arrancar la aplicación.
Paso 2: crea la carpeta del proyecto
⌨️ Terminal
mkdir chatbot-legal
cd chatbot-legal
Paso 3: pídele a Claude Code que construya la app
No vas a escribir el programa a mano. Vas a describir lo que quieres y Claude Code lo construirá. Arranca Claude Code dentro de la carpeta con claude y pégale esta petición:
💬Escribe esto a Claude Code
Crea una aplicación web sencilla de chat con RAG que funcione 100% en local. Requisitos:
- Usa Ollama con el modelo "qwen3:4b" para responder y "nomic-embed-text" para los embeddings.
- Debe leer los PDF que yo ponga en una carpeta "documentos/": extraer su texto, trocearlo, calcular embeddings y guardar ese índice en local para no recalcularlo cada vez.
- Que haya un comando para reindexar cuando añada PDF nuevos.
- Cuando responda, debe CITAR el fragmento y el archivo del que ha sacado la información.
- Interfaz web mínima: un cuadro de texto y las respuestas debajo.
- Explícame en un README cómo arrancarla y cómo añadir mis PDF.
Hazlo paso a paso y explícame qué archivos creas.
💡 Idea clave. Fíjate en cómo está escrita la petición: dice qué queremos, con qué herramientas y cómo debe comportarse (¡que cite!). Un buen encargo produce un buen resultado; es la receta de cuatro partes del capítulo “Escribir buenos encargos”.
Paso 4: añade tus documentos
Copia dentro de la carpeta documentos/ los PDF que quieras consultar: un convenio colectivo, el Estatuto de los Trabajadores, un reglamento interno... Puedes arrastrarlos ahí con el explorador de archivos.
⚠️ Cuidado. Empieza con pocos documentos (uno o dos) para tu primera prueba. Así verificas que todo funciona antes de meterle cientos de páginas.
💡 Idea clave. La primera vez que añades PDF, la app los indexa: los trocea y calcula sus embeddings. Eso puede tardar y es normal —solo pasa una vez por documento—. Cada vez que añadas PDF nuevos, ejecuta el comando de reindexar del README; si no, la app no “verá” los documentos recién copiados.
Ejecutar en tu ordenador
Con los documentos en su sitio, arranca la aplicación (el README te dirá el comando exacto):
⌨️ Terminal
npm install
npm run dev
🧠 En cristiano: npm install / npm run dev.npm install descarga las piezas que la aplicación necesita (se hace una sola vez). npm run dev enciende la aplicación en tu ordenador en “modo desarrollo”, para que puedas probarla.
En la terminal verás una dirección local, parecida a http://localhost:3000. Ábrela en tu navegador, escribe una pregunta sobre tus documentos y pulsa Enter.
✅ Comprueba que funciona. La respuesta debería aparecer acompañada de una cita: el trozo de texto y el nombre del PDF de donde salió. Si ves la respuesta y su fuente, ¡lo has conseguido! Tienes un asistente legal privado funcionando en tu máquina.
💾 Guardar y reabrir el proyecto.
Tu proyecto es la carpeta chatbot-legal. Para cerrar hoy: pulsa Ctrl + C en la terminal donde corre la app y cierra la ventana. Para volver otro día: abre la terminal, entra con cd chatbot-legal y arranca con npm run dev (el npm install no hace falta repetirlo). Abre otra vez http://localhost:3000.
Si algo falla
“command not found: ollama” — Ollama no está instalado o hay que reabrir la terminal.
Error de conexión — asegúrate de que Ollama está en marcha (icono en la barra). Comprueba con ollama list.
Responde muy lento — normal en la primera pregunta. Si tu equipo es modesto, prueba ollama pull qwen3:4b y pídele a Claude Code que lo use.
No cita bien o mezcla documentos — empieza con menos PDF y preguntas más concretas.
Reto para practicar
Pídele a Claude Code que añada un botón para borrar la conversación, que muestre la fecha de la ley junto a cada cita, y prueba un modelo más potente si tu equipo lo permite.