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.

The Test ModuleSelf test

CSV, TSV or Excel, up to 5 MB. Read in memory, never stored.

Seven stages

  1. Finding the tableWaiting
  2. Understanding the columnsWaiting
  3. Reading numbers and datesWaiting
  4. Assembling the periodsWaiting
  5. Checking for duplicatesWaiting
  6. Settling contradictionsWaiting
  7. 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.

  1. Tally ledger: Ledger export, CR and DR suffixes, Indian number format
  2. SAP Business One: Structured export, its own column naming
  3. Zoho Books: Titled sheet with a header block
  4. Odoo: Flat table, ISO dates
  5. Zoho CRM: Transaction list, one row per deal
  6. HubSpot: Deal export, different period grain
  7. Google Sheet: Titled, two row header, merged cells
  8. CSV upload: Whatever the client last saved
  9. Excel workbook: Multiple sheets, a totals row, cached errors
Nine doors. One number.
SourceShape it arrives in
Tally ledgerLedger export, CR and DR suffixes, Indian number format
SAP Business OneStructured export, its own column naming
Zoho BooksTitled sheet with a header block
OdooFlat table, ISO dates
Zoho CRMTransaction list, one row per deal
HubSpotDeal export, different period grain
Google SheetTitled, two row header, merged cells
CSV uploadWhatever the client last saved
Excel workbookMultiple 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.