| Most financial reconciliation fails silently. A stale Excel filter. A CSV export with reordered rows. A tolerance mismatch that looks “close enough” until it isn’t. By the time a number looks wrong, the mistake is already baked into downstream reports. VisiGrid CLI is a local-first tool that treats reconciliation like Git diff: deterministic, auditable, and safe to run in CI. The recurring failure mode in financial models isn’t bad math — it’s undetected drift. Spreadsheets rarely fail loudly. This tool is designed to make drift explicit. The core primitive visigrid-cli diff answers one question reliably: What matches, what differs, and what’s missing — with numeric tolerance handled explicitly. Think Git diff, but for datasets: - Schema-aware row matching (--key)
- Tolerance-aware numeric comparison
- Deterministic output (no hidden state or background recalculation)
- CI-grade exit codes * 0 = reconciled
* 1 = material drift detected
Example:textvisigrid-cli diff vendor.csv internal.csv \
--key invoice_id \
--tolerance 0.01 \
--out json The output is a versioned JSON contract (contract_version = 1) meant for machines, not eyeballing.
Supporting tools The CLI also includes focused primitives that support reconciliation workflows: - convert — pipeable XLSX / CSV / TSV / JSON conversion (stdin/stdout)
- calc — evaluate spreadsheet formulas headlessly
- replay — record structural spreadsheet edits as Lua, replay and verify with deterministic fingerprints Everything runs locally. No accounts. No network. Why it’s different Deterministic by design — same inputs, same outputs, every time
Machine-checkable contract — stable schema and explicit exit semantics
Built for automation — CI, cron jobs, and reconciliation checks If a reconciliation passes today, it will pass tomorrow for the same inputs. The GUI
VisiGrid started as a native spreadsheet GUI (built with GPUI/Zed). Over time, it became clear the GUI shouldn’t do reconciliation — it should explain it. When the CLI flags drift, the GUI acts as a debugger: visualize dependencies, trace formulas, and see exactly where a number came from. CLI finds the problem. GUI explains it. I’m pre-v1.0 and would love feedback from people dealing with: - financial reconciliation
- audit trails
- data pipelines where correctness matters more than convenience GitHub: https://github.com/VisiGrid/VisiGrid Docs & downloads: https://visigrid.app Happy to answer questions about diff semantics, tolerance handling, or the Rust internals. |
A quick clarification on intent, since “Git diff for reconciliation” can sound broader than it is:
VisiGrid CLI is deliberately narrow. It’s not a BI tool, not a data warehouse, and not trying to replace Excel or pandas. It’s a deterministic comparison primitive: given two datasets, it answers what matches, what differs, and what’s missing, with explicit numeric tolerance and machine-checkable output.
The main design constraints were:
same inputs → same outputs (no ambient recalculation)
explicit exit codes so it can run in CI
stable JSON output for downstream automation
runs fully local (no accounts, no network)
I’m pre-v1.0 and very interested in feedback on diff semantics, tolerance handling, or edge cases you’ve hit in reconciliation workflows.
Happy to answer questions or go deep on implementation details.