ExportCheck

QUICK START / VERSION 0.1.0 · BUILD 2

Your first check.
A result you can explain.

ExportCheck is available. This guide explains how to use your download. The free sample pack contains invented inputs and generated reports, not the paid CLI. You can inspect its result now without running or buying anything.

1. Check the requirements

You need a terminal and Python 3.11 or later. There are no third-party Python packages to install, no server and no online activation. The current build has been tested on macOS/Python 3.14 and Ubuntu 24.04 x86_64/Python 3.12.3. Windows and other combinations remain unverified.

python3 --version

These commands use a macOS/Linux shell. If Python is missing or older than 3.11, the tool is not ready to run on that machine. Do not upload your data to an online converter to work around a local setup problem.

2. Run the included synthetic example

With the full product ZIP extracted, open a terminal in the folder containing exportcheck.py. Run this command once, with a new output directory:

python3 exportcheck.py examples/before.csv examples/after.csv \
  --profile examples/profile.json --out demo-report --demo

The expected verdict is FAIL, with exit status 1. The invented example contains one added record and one changed record. Two records are unchanged under the chosen rules. Row reordering and an amount difference of 0.005 within the allowed 0.01 tolerance do not fail the check.

Open demo-report/report.html in your browser. The same folder contains report.json and differences.csv. An acceptance failure is a useful result; it does not mean the program crashed.

ExitMeaningNext step
0PASS: the comparison met the profile's rules.Review whether those rules are appropriate. PASS does not certify the data.
1FAIL: differences or ambiguity failed acceptance.Inspect the report, including duplicate keys and schema differences.
2The check could not finish because of input, configuration or file access.Read the terminal error. Do not treat a previous report as the new result.

3. Choose a stable key for your own exports

Use a column that identifies a record in both files, such as order_id. If one order has multiple lines, use a composite key such as ["order_id", "line"]. Physical row number is not a stable identifier when exports are reordered.

Copy examples/profile.json to a new file and edit it. For example:

{
  "version": 1,
  "keys": ["order_id", "line"],
  "numeric_tolerance": {"amount": "0.01"},
  "ignore_columns": [],
  "max_added": 0,
  "max_removed": 0,
  "max_changed": 0
}

Column names must match your headers. The amount tolerance is an absolute difference, not a percentage. Keep decimal tolerances as quoted strings. Do not copy the example tolerance into a real workflow without deciding that it is acceptable.

Leading zeros and letter case in keys are preserved. Trimming keys, trimming values and ignoring case are off by default. Missing or duplicate keys fail acceptance; duplicates are not silently removed.

4. Keep each comparison separate

python3 exportcheck.py before.csv after.csv \
  --profile profile.json --out review-001

Use a fresh output directory for each run. If review-001 already exists, choose another name. Existing results are protected from accidental overwrite. The tool does not modify either input file.

Keep both original inputs, the profile and all three reports together. Input SHA-256 fingerprints are recorded in the report. HTML limits some large detail sections for readability; consult JSON and CSV for the full comparison.

If something is wrong

Protect the results, too

The program runs offline and makes no network or AI calls. Its reports can still contain your source data. Keep real inputs and reports private, and share them only with authorized recipients. Formula-like CSV output is protected with an apostrophe; removing that protection can make spreadsheet software interpret a value as a formula. JSON preserves raw strings.

For help, contact support with the error text after removing private values, or a few invented rows. Never send confidential customer files, payment details or credentials. For a separate service that formats a small non-sensitive product CSV, see CatalogOps.