Inicio / Flujos de trabajo

Flujos de trabajo

De PDF a mapa del caso con LlamaParse, Obsidian y Claude

Guía paso a paso para convertir un expediente en PDF a Markdown, ordenarlo en Obsidian, etiquetarlo con YAML usando Claude y ver el caso en un grafo.

Un expediente laboral complejo puede convertirse en un mapa navegable en cinco pasos. Convierto los PDF a Markdown con LlamaParse, guardo cada documento como una nota en una bóveda de Obsidian, pido a Claude que agregue a cada nota un encabezado YAML con fecha, partes, hechos, personas y contradicciones, y luego abro la vista de grafo para ver quién se conecta con qué. En esta guía explico el flujo completo tal como lo uso en Debian, con ejemplos que puedes copiar.

Diagrama de seis pasos. Expediente en PDF, LlamaParse, archivos Markdown, bóveda de Obsidian, Claude agrega properties en YAML y vista de grafo.
El flujo completo, desde el PDF escaneado hasta el grafo del caso.

Por qué vale la pena pasar el expediente a Markdown

Los expedientes laborales mezclan de todo; contratos escaneados con timbres, liquidaciones de remuneraciones llenas de tablas, finiquitos, cartas de despido, correos impresos y actas. Leídos en PDF, cada documento es una isla. El problema aparece cuando el caso tiene decenas de documentos y varias personas que se repiten en ellos, porque las relaciones importantes (una fecha que no calza, un monto que cambia de un papel a otro) quedan repartidas en archivos distintos.

Markdown es texto plano con marcas mínimas para títulos, listas y tablas. Tiene tres ventajas para este trabajo.

  • Lo leen bien los modelos de lenguaje: Claude trabaja mejor con texto limpio y estructurado que con un PDF escaneado. Si quieres profundizar en el formato, revisa la guía de Markdown para escribir mejores prompts.
  • Es tuyo y es portable: Son archivos .md en una carpeta de tu computador, que se abren con cualquier editor y no dependen de un programa en particular.
  • Obsidian lo convierte en una red: Cada nota puede enlazar a otras con [[wikilinks]], y esos enlaces son la materia prima del grafo.

Las tres herramientas

LlamaParse

Convierte PDF complejos a Markdown

Servicio en la nube de LlamaIndex que lee escaneos, tablas y documentos con formato difícil y los entrega como texto Markdown ordenado. Tiene un plan gratuito con créditos mensuales.

Obsidian

Organiza las notas y dibuja el grafo

Editor de notas que trabaja con archivos Markdown guardados en tu propio computador. Enlaza notas entre sí, lee las propiedades YAML y muestra las conexiones en una vista de grafo.

Claude

Analiza las notas y escribe el YAML

Asistente de inteligencia artificial de Anthropic. Lee cada nota, identifica fechas, partes, hechos y contradicciones, y propone el encabezado YAML que Obsidian usa para relacionar el caso.

Paso 1. Convertir los PDF a Markdown con LlamaParse

Herramienta de este paso: LlamaParse. Convierte cada PDF en un archivo .md.

LlamaParse es el servicio de lectura de documentos de LlamaIndex, que funciona dentro de la plataforma LlamaCloud. Recibe un PDF, incluso escaneado, y devuelve Markdown con títulos, párrafos y tablas reconstruidas. Hay tres formas de usarlo.

  • Interfaz web: En cloud.llamaindex.ai/parse eliges el nivel de procesamiento, subes el archivo y ejecutas el análisis. Es la vía más simple para empezar.
  • Kit para Python: El paquete llama-cloud permite procesar carpetas completas con un script corto.
  • Línea de comandos: La herramienta llp sirve para automatizar desde la terminal en Linux.

Qué nivel de procesamiento elegir

LlamaParse ofrece cuatro niveles (tiers), que se cobran en créditos por página. Según la página de precios y la guía de niveles vigentes en octubre de 2026, la referencia es la siguiente.

NivelCréditos por páginaCuándo lo uso
Fast1Texto plano sin tablas; no aplica modelos de IA sobre la página.
Cost-effective3Escritos y documentos con tablas simples.
Agentic10Escaneos, contratos con timbres y la mayoría de los PDF reales con tablas.
Agentic Plus45Liquidaciones o planillas con tablas densas, donde un número mal leído arruina el análisis.

Mil créditos cuestan 1,25 dólares, y el plan gratuito incluye 10.000 créditos al mes, suficientes para probar el flujo con un expediente mediano en nivel Agentic. Si vuelves a procesar el mismo archivo dentro de 48 horas, no se cobra, porque el resultado queda en caché.

Para procesar varios archivos, este es un ejemplo mínimo en Python basado en la documentación oficial. Necesita la variable de entorno LLAMA_CLOUD_API_KEY con tu clave.

from llama_cloud import LlamaCloud

client = LlamaCloud()  # lee LLAMA_CLOUD_API_KEY del entorno

archivo = client.files.create(file="2024-03-15 carta de despido.pdf", purpose="parse")
resultado = client.parsing.parse(
    file_id=archivo.id,
    tier="agentic",
    version="latest",
    expand=["markdown"],
)

texto = "\n\n".join(pagina.markdown for pagina in resultado.markdown.pages)
with open("2024-03-15 carta de despido.md", "w", encoding="utf-8") as salida:
    salida.write(texto)

Revisa siempre el resultado contra el original

La conversión es muy buena, pero no es infalible. Compara cada .md con su PDF antes de seguir, en especial las cifras de las liquidaciones, las fechas manuscritas y las firmas, que el sistema puede describir pero no autenticar. Un error de lectura en esta etapa se arrastra a todo lo que sigue.

Paso 2. Crear la bóveda y nombrar bien los archivos

Herramienta de este paso: Obsidian. Crea la bóveda donde vivirá el caso.

En Obsidian, una bóveda (vault) es simplemente una carpeta de tu computador. Creo una por caso y la ordeno con carpetas numeradas, para que el orden no dependa del alfabeto.

Árbol de carpetas de una bóveda de Obsidian con originales, documentos, personas, hechos, cronología y plantillas.
Una estructura simple, con los PDF originales separados de las notas de trabajo.

Los nombres de archivo importan más de lo que parece, porque en Obsidian el nombre de la nota es también el texto del enlace.

  • Fecha primero, en formato año-mes-día: 2024-03-15 carta de despido.md se ordena sola en la cronología.
  • Tipo de documento en minúsculas y sin abreviaturas crípticas: Escribe "liquidación de remuneraciones", no "liq rem".
  • Personas con el mismo nombre siempre: Si una nota se llama Trabajador A, todos los enlaces deben decir [[Trabajador A]]; una variante crea un nodo duplicado en el grafo.
  • Sin caracteres que Obsidian no admite en enlaces: Evita los signos # ^ [ ] | en los nombres.
  • Mismo nombre para el PDF y su .md: Así encuentras el original en segundos cuando necesitas verificar una cita.

Paso 3. Notas de personas y de hechos enlazadas

Además de una nota por documento, creo una nota breve por cada persona relevante (trabajador, jefaturas, testigos, encargados de recursos humanos) y una por cada hecho del caso (despido, aviso previo, horas extraordinarias, accidente, denuncia). Las notas de personas y hechos pueden partir casi vacías; lo importante es que existan, porque los documentos van a enlazar hacia ellas.

Dentro del texto de cada documento, marco con [[doble corchete]] las menciones relevantes. Escribir [[Despido]] en la nota de la carta de despido crea una conexión visible entre ambas. Para los nombres de personas reales, si trabajas con documentos anonimizados, usa los mismos identificadores que usaste al anonimizar.

Paso 4. Pedir a Claude el encabezado YAML de cada nota

Herramienta de este paso: Claude. Lee cada nota y propone su encabezado YAML.

Obsidian llama properties a los metadatos que van al inicio de la nota, entre dos líneas de tres guiones, escritos en formato YAML. Admite tipos de texto, lista, número, casilla de verificación, fecha, fecha y hora, y etiquetas. Tres reglas de la documentación oficial que conviene respetar desde el inicio.

  • Fechas en formato AAAA-MM-DD: Así Obsidian las reconoce como fecha y no como texto.
  • Enlaces entre comillas: Un enlace dentro de una property se escribe "[[Despido]]", con comillas.
  • Sin propiedades anidadas: Obsidian no las muestra en su editor visual, así que conviene un YAML plano, con listas simples.

Este es el encabezado que busco para cada documento. Los nombres son ficticios.

---
tipo: carta de despido
fecha: 2024-03-15
partes:
- "[[Trabajador A]]"
- "[[Empresa B]]"
personas:
- "[[Jefatura C]]"
hechos:
- "[[Despido]]"
- "[[Aviso previo]]"
tags:
- despido
- prueba-documental
relevancia: alta
contradicciones:
- "[[2024-03-20 finiquito]]"
detalle_contradicciones: "La carta indica una causal y una fecha de término que no coinciden con las del finiquito (ver página 1 de ambos documentos)."
revisado: false
---

Uso tags y no "etiquetas" porque Obsidian trata esa clave de forma especial y la conecta con su buscador de etiquetas. La propiedad revisado es una casilla que marco yo, después de leer el documento original y confirmar lo que Claude propuso.

Maqueta de una nota de Obsidian con properties de tipo, fecha, partes, hechos, tags, relevancia y contradicciones, con enlaces a otras notas.
Así se ve el mismo YAML en el editor visual de properties de Obsidian.

El prompt que uso

Trabajo cada documento en una conversación dentro de un proyecto de Claude, donde cargo como conocimiento del proyecto la lista de notas de personas y hechos. Cuando los documentos son muchos, uso Claude Code, que funciona en Linux y puede leer y editar los archivos de la carpeta de la bóveda directamente. En ambos casos, el prompt es el mismo y está escrito en Markdown.

# Rol
Eres un asistente de análisis documental para un abogado laboralista chileno.

# Contexto
Te entrego la transcripción en Markdown de un documento de un expediente laboral.
También te entrego la lista de notas que ya existen en la bóveda (personas, hechos y documentos).

# Tarea
Genera el encabezado YAML de la nota con estas claves y en este orden:
tipo, fecha, partes, personas, hechos, tags, relevancia, contradicciones,
detalle_contradicciones, revisado.

# Reglas
- Usa solo información que aparezca en el documento. Si un dato no está, deja la clave vacía.
- La fecha va en formato AAAA-MM-DD. Si el documento tiene varias fechas, usa la de emisión.
- Para partes, personas, hechos y contradicciones usa enlaces "[[...]]" entre comillas,
  con los nombres exactos de la lista de notas existentes. Si falta una nota, proponla al final.
- relevancia solo puede ser alta, media o baja.
- Marca una contradicción solo si un dato concreto (fecha, monto, causal, cargo, firma)
  difiere de otro documento de la lista; explica cuál en detalle_contradicciones e indica la página.
- revisado siempre es false.
- No inventes nombres, fechas ni montos.

# Formato de salida
Solo el bloque YAML entre líneas de tres guiones, sin comentarios adicionales.
Después del bloque, una lista breve de notas nuevas que sugieres crear.

# Documento
(pegar aquí el Markdown del documento)

# Notas existentes
(pegar aquí la lista de notas)

Dos advertencias prácticas. Primero, Claude solo puede detectar contradicciones con documentos que tiene a la vista, de modo que esa clave mejora cuando le entregas también la cronología o las notas relacionadas. Segundo, cada propuesta es un borrador; la casilla revisado existe para recordarme que nada entra al análisis del caso sin que yo lo haya confirmado contra el original.

Paso 5. Leer el caso en la vista de grafo

Herramienta de este paso: Obsidian. La vista de grafo muestra las conexiones del caso.

La vista de grafo dibuja cada nota como un círculo y cada enlace interno como una línea; las notas más enlazadas aparecen más grandes. Con un caso bien enlazado, la imagen dice mucho de un vistazo, porque se ve qué persona aparece en más documentos, qué hecho está respaldado por varias fuentes y cuál descansa en un solo papel.

Grafo de un caso con documentos, personas y hechos conectados; una línea punteada marca la contradicción entre carta de despido y finiquito.
Documentos, personas y hechos en colores distintos, con la contradicción destacada.

Para que el grafo sea útil, ajusto cuatro cosas en su panel de configuración.

  1. Grupos de color: En la sección Groups creo un grupo por carpeta, con búsquedas como path:"02 personas" o path:"03 hechos", y les asigno colores distintos. Así se distinguen documentos, personas y hechos.
  2. Filtros: Activo "Existing files only" para ocultar enlaces a notas que todavía no existen, y oculto los huérfanos cuando quiero ver solo lo conectado.
  3. Grafo local: Con el comando "Open local graph" veo solo las conexiones de la nota abierta. Desde la nota de un testigo, por ejemplo, aparecen todos los documentos que lo mencionan, lo que ayuda a preparar su contraexamen.
  4. Contradicciones visibles: Obsidian reconoce los enlaces escritos en las properties, pero para asegurarme de que la contradicción se vea siempre en el grafo, repito el enlace en el cuerpo de la nota, en una sección titulada "Contradicciones". Además agrego la etiqueta contradiccion a esas notas y creo un grupo de color con la búsqueda tag:#contradiccion, para que resalten en el grafo.

Opcional. Tablas automáticas con Dataview

Si además quieres una tabla con todos los documentos ordenados por fecha, el complemento comunitario Dataview lee las properties y las consulta como una base de datos. Esta consulta, puesta en la nota de cronología, lista los documentos con contradicciones.

```dataview
TABLE fecha, tipo, relevancia, detalle_contradicciones
FROM "01 documentos"
WHERE contradicciones
SORT fecha ASC
```

Límites que conviene tener presentes

  • El grafo muestra relaciones, no pruebas: Una línea entre dos notas significa que alguien escribió un enlace, no que el hecho esté acreditado.
  • La calidad depende de los nombres: Dos variantes del mismo nombre crean dos nodos y esconden la conexión.
  • Los modelos se equivocan: Claude puede omitir una contradicción o proponer una que no existe; la revisión humana no es opcional.
  • Los precios cambian: Las cifras de créditos de LlamaParse corresponden a octubre de 2026; revísalas antes de procesar un expediente grande.

En resumen

El flujo completo se reduce a convertir, ordenar, etiquetar y mirar. LlamaParse saca el texto de los PDF difíciles, Obsidian lo organiza en notas enlazadas, Claude propone los metadatos que después reviso, y el grafo muestra la estructura del caso que en papel queda escondida. Empieza con un expediente pequeño y anonimizado, ajusta el prompt a tu forma de trabajar y guárdalo como plantilla. Si ya usas un flujo parecido o distinto, me interesa conocerlo, y puedes publicar tu experiencia en ia-derecho.cl.