Every line, accounted for.
Match the activity. Hold the exceptions.
Keep a person in charge of the release.
Synthetic workspace. Every record is invented. This local reconciliation example is not connected to a warehouse or accounting system.
Activity review
6 source rows| Selection preview | Activity / customer | Service / reason | Quantity | Rate AUD | Draft AUD |
|---|---|---|---|---|---|
| SYN-001Example ProduceReady for review | storage_pallet_day | 12 | 2.35 | 28.20 | |
| SYN-002Example GrocerReady for review | handling_pallet | 3 | 8.50 | 25.50 | |
| — | SYN-003Source row 4Withheld | Duplicate activity ID: every occurrence withheld | |||
| — | SYN-003Source row 5Withheld | Duplicate activity ID: every occurrence withheld | |||
| — | SYN-004Source row 6Withheld | No agreed rate for this service | |||
| — | SYN-005Source row 7Withheld | Quantity must be positive, finite, <= 1000000 and <= 3 decimal places | |||
↳ Resolve the source data and rebuild. Withheld rows cannot be approved or exported.
What the download demonstrates
Python source, two invented CSV fixtures, instructions and nine checks. No installation or credentials are needed beyond Python 3.12.
The demonstrated approval was simulated by an agent. It was not a person approving a business invoice. The download starts without an approval record so you can see export blocked, then explicitly record a simulated selection to exercise the release checks.
Download the runnable synthetic workflow (ZIP)Evidence and limits
Approval records are local attestations, not authenticated identities. Production access control and audit logging need separate implementation.
Run fingerprint
9b66a5aa137f1f1b101b99e48c5e1d584e2e444caf0d03f80b33ec7eaa3aded6No email sent, payment executed, invoice posted, AI model called or customer data used.