THE PROOF
Bring the messiest file you have.
The module below is the same road our clients' data travels. Put your own export through it. It will either read correctly, or tell you exactly what to change.
No account. Nothing is stored. CSV, TSV or Excel.
What you are about to use is not a demo of the product. It is the product's front door, running.
CSV, TSV or Excel, up to 5 MB. Read in memory, never stored.
Seven stages
- Finding the tableWaiting
- Understanding the columnsWaiting
- Reading numbers and datesWaiting
- Assembling the periodsWaiting
- Checking for duplicatesWaiting
- Settling contradictionsWaiting
- Producing readingsWaiting
Ledger
Each stage writes what it found here.
What just happened. Your file went through seven stages: finding the table, understanding the columns, reading the numbers and dates, assembling the periods, checking for the same data arriving twice, and settling contradictions. Every stage kept a ledger, which is what you can see above.
If something was refused, the refusal names what to change. That is deliberate. A system that guesses at an ambiguous column is a system that will hand you a confident wrong number six weeks later.
IT TESTS ITSELF FIRST
Thirty ways a file can lie to you, and it checks for all of them before it checks yours.
Every time the module opens, it runs a self test first: thirty deliberately broken files, each carrying a different failure, planted on purpose.
- failure classes caught when planted alone
- 30 of 30
- false accusations against a clean file
- 0
- the scoreboard does not show at all while the self test is red
- Withheld
Self test record, Open item: <date>. The module reruns it every time it opens, and shows you the live result above.
The last one matters most. A checker that cries wolf is worse than no checker, because you stop reading it. If our own self test is failing, you do not get a score at all, because a score from a broken instrument is not a score.
THE SHAPE TEST
Nine doors. One number.
We put the same business through nine completely different source systems and checked whether the figure that came out was the same.
- Tally ledger: Ledger export, CR and DR suffixes, Indian number format
- SAP Business One: Structured export, its own column naming
- Zoho Books: Titled sheet with a header block
- Odoo: Flat table, ISO dates
- Zoho CRM: Transaction list, one row per deal
- HubSpot: Deal export, different period grain
- Google Sheet: Titled, two row header, merged cells
- CSV upload: Whatever the client last saved
- Excel workbook: Multiple sheets, a totals row, cached errors
| Source | Shape it arrives in |
|---|---|
| Tally ledger | Ledger export, CR and DR suffixes, Indian number format |
| SAP Business One | Structured export, its own column naming |
| Zoho Books | Titled sheet with a header block |
| Odoo | Flat table, ISO dates |
| Zoho CRM | Transaction list, one row per deal |
| HubSpot | Deal export, different period grain |
| Google Sheet | Titled, two row header, merged cells |
| CSV upload | Whatever the client last saved |
| Excel workbook | Multiple sheets, a totals row, cached errors |
Same annual revenue, to four decimal places. Measured Open item: <date>.
Where a shape could not be settled, it was refused rather than guessed. That is the number nobody else publishes, and it is the one an operations head will ask about.
TRY IT ON YOUR OWN DATA
Bring the messiest file you have.
Put it through the same road our clients' data travels. It will either read correctly, or tell you exactly what to change. Nothing is stored, and you do not need an account.