ohayo.

WORKED EXAMPLE · V1.0.0

Find the difference.
Keep the originals.

These are the package’s synthetic fixtures, not customer data or accounting advice. Each side contains 3 records.

Two exports, one explicit key

Key: order_id. Compared fields: amount and status. All comparisons are exact text.

# left.csv
order_id,amount,status
0012,19.90,paid
0013,5.00,pending
0014,2.90,paid

# right.csv
order_id,amount,status
0014,2.90,paid
0012,19.90,refunded
0020,4.90,paid

Run locally

python3 scripts/reconcile_csv.py examples/left.csv examples/right.csv --key order_id --json review.json --output review.md

Exit 1 · 3 finding records · 1 unchanged:

JSON omits values, key values and local paths. It retains column names, row locations and each original file’s SHA-256. Schema and locations can still be sensitive.

Verify a manually corrected illustration

The included corrected-right.csv contains the same three records as left.csv in a different order. It is an invented example, not an instruction to replace your real export.

python3 scripts/reconcile_csv.py examples/left.csv examples/corrected-right.csv --key order_id --json matched.json --output matched.md

Exit 0 · 3 unchanged · 0 finding records. Counts reconcile independently: left = unchanged + changed + left-only; right = unchanged + changed + right-only.

Reject ambiguous identity

The duplicate-right.csv example repeats one key. Exit 2 means there is no accepted comparison; no success reports are created. Confirm which records are legitimate with the data owner before rerunning.

Remaining checks

Equal selected fields do not prove both exports are complete, contain the correct time window, have correct amounts or are import-ready. 19.90 and 19.9 differ as text. Choose a separate normalization process only with explicit agreement.

Get CSV Reconciliation Audit · $4.90 ↗