Saltar al contenido principal

Usa LLMs con Beancount para importar, revisar y consultar

Categoriza transacciones con un LLM, revisa las entradas propuestas de Beancount, valida los saldos de los estados de cuenta y consulta tus libros

Usa IA para sugerir cuentas y explicar transacciones, luego verifica las entradas contra tus documentos fuente antes de guardarlas. Esta guía lleva un pequeño estado de cuenta ficticio a través de la categorización, la revisión, la validación y una consulta que puedes verificar.

Elige un flujo de trabajo alojado o local a continuación. El ejemplo práctico utiliza un archivo de muestra local para que puedas reproducir cada verificación antes de conectar la IA a tus propios libros.

Elige tu flujo de trabajo​

Tu configuraciónComienza aquíCómo llegan los cambios a tu libro mayor
Usas Beancount.ioUsa Smart Import para archivos de estado de cuenta, o Asistente de IA para preguntas y ediciones propuestas.Revisa las filas antes de enviar una importación. Para ediciones del Asistente, revisa el diff propuesto y elige Aprobar o Denegar.
Usas un cliente de IA externoSigue la guía de configuración de Beancount MCP para conectar tu cliente a un libro mayor alojado.Una ejecución de prueba previsualiza una operación de edición. Una llamada de escritura separada la confirma. Las indicaciones de aprobación dependen de la configuración de tu cliente.
Mantienes archivos localesUsa el convertidor de CSV a Beancount o un importador, luego pide a una herramienta de IA que sugiera categorías.Revisas las entradas propuestas, validas el archivo y guardas los cambios aceptados.

El Asistente alojado y MCP son integraciones de Beancount.io. Instalar el motor de contabilidad de código abierto Beancount no agrega esos servicios a un libro mayor local.

Antes de comenzar​

Ten tu estado de cuenta fuente, la cuenta a la que pertenece y una lista de cuentas de destino permitidas. Conserva el estado de cuenta original para poder compararlo con el resultado.

Para el recorrido local, instala Beancount usando la guía de inicio. También necesitarás Beanquery para ejecutar la consulta final desde una terminal. El ejemplo asume USD en todo momento y no tiene transacciones existentes en el archivo de muestra.

Para datos reales, decide qué información puede recibir tu herramienta de IA. Elimina identificadores innecesarios antes de compartir un estado de cuenta. Un libro mayor local aún puede enviar datos a un modelo en la nube a través de un editor o cliente MCP. Verifica las políticas de datos del cliente y del proveedor del modelo; tener un archivo en tu computadora no mantiene su contenido local por sí mismo.

1. Comienza con las transacciones fuente​

Nuestra cuenta corriente ficticia comienza agosto con 1.000,00 USD. Su estado de cuenta contiene tres retiros y cierra en 805,10 USD después de esos retiros:

date,payee,description,amount
2026-08-03,Office Depot,Printer paper,-45.00
2026-08-04,Cloud Hosting Inc,Monthly hosting,-120.00
2026-08-05,Amazon,Online purchase,-29.90

Los montos negativos aquí significan dinero que sale de la cuenta corriente. Confirma la convención de signos de tu banco antes de importar; otras exportaciones e importadores pueden usar una convención diferente.

En el convertidor CSV, mapea estas cuatro columnas y establece la cuenta fuente como Assets:Bank:Checking con moneda USD. Deja Invertir cada signo desactivado para esta muestra. Verifica que los asientos fuente sean negativos. Una cuenta de destino provisional es solo un marcador de posición hasta que hayas revisado las categorías.

Si comienzas con una imagen de recibo o PDF, compara las fechas, montos, moneda y número de transacciones extraídos con el documento original antes de categorizar cualquier cosa. Mantén los valores fuente intactos mientras decides las cuentas.

2. Pide categorías con límites explícitos​

Usa un prompt que nombre las cuentas permitidas y deje espacio para la incertidumbre:

Sugiere una cuenta de destino para cada fila en este estado de cuenta de muestra. La cuenta fuente es Assets:Bank:Checking. Usa solo Expenses:Office:Supplies o Expenses:Business:Hosting. Devuelve la fecha original, el beneficiario, el monto, la cuenta sugerida y una razón breve. Si la descripción es insuficiente, devuelve NEEDS_REVIEW y explica qué información falta. No inventes cuentas, cambies montos ni escribas en el libro mayor.

Proporciona las tres filas CSV con el prompt. Un resultado útil se vería así; la redacción y las sugerencias del modelo pueden variar:

FechaBeneficiarioMonto (USD)Cuenta sugeridaRazón de revisión
2026-08-03Office Depot-45,00Expenses:Office:SuppliesLa descripción identifica papel para impresora.
2026-08-04Cloud Hosting Inc-120,00Expenses:Business:HostingLa descripción identifica alojamiento.
2026-08-05Amazon-29,90NEEDS_REVIEWEl nombre del comercio no identifica lo que se compró.

El prompt expresa tu intención. No hace cumplir permisos en una herramienta que puede escribir archivos. Configura los controles de aprobación del cliente antes de darle acceso a un libro mayor real.

3. Resuelve la incertidumbre y revisa las entradas​

Verifica el recibo de la compra de Amazon. Para este ejemplo, identifica un cable USB-C para la oficina, y el revisor asigna Expenses:Office:Supplies. Sin esa evidencia, deja la fila pendiente en lugar de aceptar una categoría adivinada.

Crea un nuevo archivo llamado review.beancount con el siguiente ejemplo completo. Incluye las declaraciones de cuentas y el saldo inicial que el CSV no contiene. Si usaste el convertidor, compara sus transacciones con estas entradas revisadas; no agregues ambas copias al mismo libro mayor.

option "title" "AI bookkeeping review example"
option "operating_currency" "USD"
 
2026-08-01 open Assets:Bank:Checking USD
2026-08-01 open Equity:Opening-Balances USD
2026-08-01 open Expenses:Office:Supplies USD
2026-08-01 open Expenses:Business:Hosting USD
 
2026-08-01 * "Opening balance"
  Assets:Bank:Checking       1000.00 USD
  Equity:Opening-Balances   -1000.00 USD
 
2026-08-03 * "Office Depot" "Printer paper"
  Assets:Bank:Checking        -45.00 USD
  Expenses:Office:Supplies     45.00 USD
 
2026-08-04 * "Cloud Hosting Inc" "Monthly hosting"
  Assets:Bank:Checking          -120.00 USD
  Expenses:Business:Hosting      120.00 USD
 
2026-08-05 * "Amazon" "Online purchase; receipt: office USB-C cable"
  Assets:Bank:Checking        -29.90 USD
  Expenses:Office:Supplies     29.90 USD
 
2026-08-06 balance Assets:Bank:Checking 805.10 USD

La transacción de saldo inicial pertenece a este libro mayor de práctica vacío. En un libro mayor existente, usa su saldo establecido y las declaraciones de cuentas en lugar de agregar otro saldo inicial.

Antes de aceptar un cambio propuesto, compara cada transacción con su fila fuente. Confirma los signos, la moneda, las cuentas y el recibo de respaldo. Un nombre de comercio familiar por sí solo no establece el propósito de una compra.

4. Valida y concilia​

Ejecuta el validador de Beancount en la muestra local:

bea --file review.beancount check

El ejemplo completo debería pasar sin errores. Su aserción de saldo verifica el monto en la cuenta corriente al inicio del 6 de agosto, después de los tres retiros anteriores.

Confirma el resultado contra el estado de cuenta:

  • Las tres transacciones del estado de cuenta aparecen una vez cada una, además del saldo inicial.
  • Los retiros suman 194,90 USD.
  • La cuenta corriente tiene 805,10 USD: los 1.000,00 USD iniciales menos esos retiros.
  • Los suministros de oficina suman 74,90 USD y el alojamiento suma 120,00 USD.

Si dejas la transacción de Amazon pendiente, la cuenta corriente permanece en 835,00 USD y la aserción falla por 29,90 USD. Investiga esa diferencia; no agregues un ajuste inexplicado solo para que la verificación pase.

bea check detecta errores de sintaxis, cuentas, balance y aserción de saldo. No puede establecer que un recibo sea genuino, que hayas seleccionado la categoría de gasto correcta o que cada fila del estado de cuenta esté presente. Una transacción registrada en la cuenta de gastos incorrecta aún puede cuadrar perfectamente.

Cuando algo no coincide​

SíntomaSiguiente verificación
El saldo difiere del estado de cuentaCompara el saldo inicial, el número de transacciones, los signos, las fechas y los montos con la fuente.
Dos entradas parecen igualesCompara los identificadores de transacción fuente y los recibos. El mismo comercio y monto pueden representar dos compras legítimas.
El modelo inventa una cuentaElige una cuenta existente o crea deliberadamente una nueva después de revisar tu plan de cuentas.
La extracción omite una fila o cambia un decimalCorrige los datos extraídos contra el documento original antes de categorizarlos.
El validador pasa pero un informe se ve malInspecciona las elecciones de cuentas, el período del informe y los asientos individuales.

Pide a la IA que explique las discrepancias y señale las filas afectadas. Confirma la evidencia antes de eliminar un posible duplicado o cambiar un monto.

5. Guarda el resultado revisado y consúltalo​

Cuando repitas este flujo de trabajo con tu propio estado de cuenta, fusiona solo tus transacciones revisadas en tu libro mayor real, luego valida el archivo combinado. Mantén las entradas ficticias en el archivo de muestra. Si usas Git, inspecciona el diff y haz el commit a través de tu flujo de trabajo habitual. Mantén el estado de cuenta fuente disponible para una conciliación posterior. La guía de flujos de trabajo scriptables cubre la automatización local repetible.

Puedes verificar los totales de la muestra con Beancount Query Language. Con Beanquery instalado, ejecuta:

bea --file review.beancount query "SELECT account, sum(position) WHERE account ~ '^Expenses:' AND date >= 2026-08-01 AND date < 2026-09-01 GROUP BY account"

Los dos totales de gastos deberían ser 74,90 USD para suministros de oficina y 120,00 USD para alojamiento. Inspecciona el rango de fechas y el filtro de cuentas de la consulta, así como su salida.

Con un cliente de IA conectado a un libro mayor que contenga la muestra, puedes preguntar:

Consulta el libro mayor de muestra para los gastos de agosto de 2026 agrupados por cuenta. Muestra la consulta y sus resultados. No cambies ningún archivo.

Compara su respuesta con los mismos totales. Una respuesta fluida es útil solo cuando sus números se pueden rastrear hasta el libro mayor.

Aplica el proceso de revisión en Beancount.io​

Para archivos de estado de cuenta, abre Import → Smart Import en la barra lateral de tu libro mayor. Revisa las filas extraídas, elige Cuenta Fuente y Moneda, y usa AI Fill para sugerencias de cuentas de destino. Corrige las categorías antes de enviar Import, cuyo botón incluye el número de transacciones. Verifica el diario y los saldos resultantes en un libro mayor de muestra antes de procesar un estado de cuenta real. Confirma que los retiros reducen la cuenta fuente; el CSV anterior está preparado para el convertidor local, y los importadores pueden interpretar los signos de manera diferente.

Para el Asistente alojado, abre Ask Beancount.io dentro de tu libro mayor. Comienza con una pregunta sobre las entradas existentes. Cuando proponga una edición de archivo, revisa el diff antes de aprobarlo. Las importaciones aceptadas y las ediciones del Asistente se registran en Git para que puedas inspeccionar o revertir los cambios.

Para MCP, sigue las instrucciones de configuración específicas del cliente enlazadas arriba y autoriza el libro mayor previsto. Pide editLedgerFiles con dry_run: true antes de permitir una edición. Inspecciona el contenido propuesto y el resumen de la operación, luego permite una llamada de escritura separada solo después de la revisión. La previsualización de la ejecución de prueba no establece la corrección contable ni garantiza que tu cliente pedirá permiso antes de una escritura posterior.

Mantén el proceso de revisión mientras automatizas​

Comienza con un lote pequeño y registra qué sugerencias cambias. Convierte mapeos repetidos y confirmados en reglas de importación explícitas o proporciona ejemplos revisados como contexto. No asumas que un modelo aprende permanentemente de una corrección en una conversación.

Mantén separadas las verificaciones de extracción, la revisión de categorías y la conciliación de estados de cuenta. Cada una detecta un tipo diferente de error. Para importaciones recurrentes, también verifica que importar la misma fuente dos veces no duplique transacciones silenciosamente.

La investigación respalda esta distinción entre sintaxis válida y contabilidad correcta. El estudio de enero de 2025 de Figueroa Rosero y colegas evaluó modelos pequeños de peso abierto en escenarios de ratios financieros y generación de transacciones usando prompts estructurados. Sus resultados describen esos modelos y tareas, en lugar de una tasa de precisión para los asistentes actuales o tu flujo de importación. Evalúa tu propio flujo de trabajo usando transacciones fuente verificadas y las correcciones que requieren.

Herramientas para un flujo de trabajo local repetible​

Elige una herramienta para la parte del proceso que necesitas repetir:

  • Beangulp proporciona un marco de importadores. Reemplaza el marco anterior beancount.ingest en Beancount 3.
  • smart_importer es un paquete instalado por separado que agrega sugerencias de aprendizaje automático a los importadores. No es una función de LLM incorporada.
  • Beanborg documenta categorización basada en reglas, sugerencias de aprendizaje automático y predicciones opcionales de ChatGPT. Verifica su configuración actual y compatibilidad antes de adoptarlo.

Para un contexto más amplio, consulta la guía de automatización de contabilidad y la guía de flujo de trabajo contable mensual.

Explora un ejemplo más grande​

El libro mayor público a continuación es separado del ejercicio de tres transacciones. Úsalo para explorar cómo se combinan cuentas, transacciones e informes antes de conectar IA a tus propios libros.

Abrir Libro mayor de ejemplo público, separado del ejercicio de revisión con IA en una pestaña nueva

Fuente: https://beancount.io/es/docs/Solutions/using-llms-to-automate-and-enhance-bookkeeping-with-beancount