Cash reconciliation · Notarial firmConciliación de caja · Negocio notarial

Agentic Cash RecConciliación de caja agéntica

Cash control per legal case file (expediente) for an Argentine notarial firm: client advances, recoverable expenses, bank movements and the balance of every case. Each amount is computed in deterministic Python with Decimal, never floats; the AI only classifies, suggests matches and explains. In production for a paid client. Control de caja por expediente para un negocio notarial argentino: anticipos de clientes, gastos recuperables, movimientos bancarios y el saldo de cada caso. Cada monto se calcula en Python determinista con Decimal, nunca floats; la IA solo clasifica, sugiere matches y explica. En producción para un cliente pago.

Agentic Cash Rec dashboard: per-case balances with OK, Attention, Risk and Blocked statuses across case files.
Live demo, cash control by case file (expediente).Demo en vivo, control de caja por expediente.
ClientCliente
Notarial firm · paid engagementNegocio notarial · cliente pago
RoleRol
Design, build, deployDiseño, build, deploy
Stack
Python · Decimal · SQLite / Turso · Streamlit
StatusEstado
In productionEn producción
01

How it runsCómo corre

Suggestions are deterministic, confirmation is human, and every state change lands in the hash chain. Las sugerencias son deterministas, la confirmación es humana y cada cambio de estado queda en la cadena de hashes.

The problemEl problema

A notarial firm needed precise cash management per case: client advances, reimbursable expenses, bank movements and the resulting financial state of every expediente, with zero tolerance for computational error. In accounting, a number that's "almost right" is wrong.Un negocio notarial necesitaba gestión de caja precisa por expediente: anticipos de clientes, gastos reembolsables, movimientos bancarios y el estado financiero resultante de cada caso, con cero tolerancia al error de cálculo. En contabilidad, un número "casi bien" está mal.

The approachEl enfoque

One rule drives the design: the LLM never invents financial numbers. A deterministic Python core does all the math with Decimal arithmetic, and a grounding wall rejects any AI narrative containing a number absent from the computed facts. The AI classifies, suggests and explains; it never calculates.Una regla guía el diseño: el LLM nunca inventa números financieros. Un núcleo de Python determinista hace toda la matemática con aritmética Decimal, y un muro de grounding rechaza cualquier narrativa de la IA que contenga un número que no esté en los hechos calculados. La IA clasifica, sugiere y explica; nunca calcula.

  • Per-case financial model. Received funds, reimbursable costs, cash position, net balance, coverage ratio and financing position, all computed in code, no floats anywhere.Modelo financiero por caso. Fondos recibidos, costos reembolsables, posición de caja, saldo neto, ratio de cobertura y posición de financiamiento, todo calculado en código, sin floats en ningún lado.
  • A suggestion is not a reconciliation. Matching is deterministic (amount anchor + date proximity + text match) and a human confirms every match, match by match.Una sugerencia no es una conciliación. El matching es determinista (ancla de monto + proximidad de fecha + match de texto) y un humano confirma cada match, uno por uno.
  • Four severity states. Every case file lands in Blocked, Risk, Attention or OK, so the team knows exactly where to look first.Cuatro estados de severidad. Cada expediente cae en Bloqueado, Riesgo, Atención u OK, así el equipo sabe exactamente dónde mirar primero.
  • Graceful degradation. Without an API key the system runs fully offline on deterministic heuristics; the AI layer is optional by design.Degradación elegante. Sin API key el sistema corre totalmente offline con heurísticas deterministas; la capa de IA es opcional por diseño.

ArchitectureArquitectura

  • Domain engine: per-case balances, severity classification and reconciliation matching in pure Python, with full test coverage on the domain core plus end-to-end tests.Motor de dominio: saldos por expediente, clasificación de severidad y matching de conciliación en Python puro, con cobertura completa de tests en el núcleo de dominio más tests end-to-end.
  • Hash-chained audit log: every state change recorded via sha256(prev_hash + payload), tamper-evident by construction.Auditoría hash-encadenada: cada cambio de estado registrado vía sha256(prev_hash + payload), a prueba de manipulación por construcción.
  • Flexible ingestion: CSV/Excel import tolerating Argentine (1.234.567,89) and Anglo number formats.Ingesta flexible: import CSV/Excel que tolera formatos numéricos argentinos (1.234.567,89) y anglosajones.
  • Seven UI pages in Streamlit: dashboard, case detail, data load, reconciliation, review, reports and audit.Siete pantallas en Streamlit: dashboard, detalle de caso, carga de datos, conciliación, revisión, reportes y auditoría.
  • Persistence and stack: Python 3.11+, Decimal, SQLite / Turso, Streamlit, and Claude as an optional layer that only classifies, suggests and explains.Persistencia y stack: Python 3.11+, Decimal, SQLite / Turso, Streamlit y Claude como capa opcional que solo clasifica, sugiere y explica.

OutcomeResultado

Full cash control per case file, answering the eight questions that matter about every expediente.Control total de caja por expediente, respondiendo las ocho preguntas que importan de cada caso.

From funds received to pending balance and required reviews, with a tamper-evident audit trail behind every figure.Desde los fondos recibidos hasta el saldo pendiente y las revisiones requeridas, con una auditoría a prueba de manipulación detrás de cada cifra.

Have a process like this one?¿Tenés un proceso como este?

Advances, expenses, bank movements, balances that have to close. Tell us where the manual work hurts and we'll tell you honestly whether agents will pay off. Anticipos, gastos, movimientos de banco, saldos que tienen que cerrar. Contanos dónde duele el trabajo manual y te diremos con honestidad si los agentes van a rendir.