LEARN WITH SYNTHETIC DATA
Three CSV comparisons.
Every finding explained.
Try missing records, duplicate IDs, and amount or date differences before using your own exports. Each example runs the same comparison engine as the free workspace, locally in your browser.
All IDs and records on this page are invented. No sign-in or payment is needed. JavaScript enables the run and download buttons; the full source CSVs, settings and expected findings remain readable below.
EXAMPLE 01 · MISSING RECORDS AND STATUS
Compare a billing export with an access export
Both exports have already been aligned to a common status definition and reporting date. One customer appears only in billing, another only in access, and one status differs.
Workspace settings: match on customer_id; compare status as Text. Amount tolerance is unused.
Billing / A · 3 records
customer_id,status demo_A,active demo_B,canceled demo_C,active
Access / B · 3 records
customer_id,status demo_A,active demo_B,active demo_D,active
Expected: 2 unique IDs matched; 3 exceptions
demo_B: status mismatch,canceledin billing versusactivein access (record 3 on both sides).demo_C: only in billing (record 4).demo_D: only in access (record 4).
What to investigate: check whether cancellation takes effect at the end of a paid term, whether a free plan explains access, or whether the exports cover different accounts. These findings do not establish money owed or unauthorized access.
Run this example to see the actual engine output.
Actual findings from the comparison engine
EXAMPLE 02 · AN AMBIGUOUS MATCH
Find duplicate customer IDs before pairing records
Two billing rows share demo_B. Their statuses conflict. Picking the first or last row would silently make a business decision, so the engine leaves that ID unpaired.
Workspace settings: match on customer_id; compare status as Text. Amount tolerance is unused.
Billing / A · 4 records
customer_id,status demo_A,active demo_B,active demo_B,canceled demo_C,active
Access / B · 3 records
customer_id,status demo_A,active demo_B,active demo_C,active
Expected: 2 unique IDs matched; 1 exception
demo_B: duplicate ID in billing, records 3 and 4. Neither row is compared with the access record.demo_Aanddemo_Cmatch without exceptions. The duplicate is one grouped exception, not two matched customers.
What to investigate: determine whether the export is at customer level or subscription level. Multiple subscriptions may be legitimate. Resolve the source or choose an appropriate shared ID before rerunning; this tool does not merge or delete rows.
Run this example to see the actual engine output.
Actual findings from the comparison engine
EXAMPLE 03 · EXPLICIT TYPES
Compare exact decimals and validate ISO dates
This example assumes the amount uses the same currency and renewal date has the same meaning in both systems. The tool does not infer units, convert currencies or translate date formats.
Workspace settings: match on customer_id; compare amount as Amount and renewal_date as ISO date; set amount tolerance to 0.01.
Billing / A · 4 records
customer_id,amount,renewal_date demo_A,19.990,2026-10-01 demo_B,49.00,2026-10-02 demo_C,15.00,2026-02-30 demo_D,USD 12.00,2026-10-04
Access / B · 4 records
customer_id,amount,renewal_date demo_A,20.00,2026-10-01 demo_B,49.02,2026-10-03 demo_C,15.00,2026-02-28 demo_D,12.00,2026-10-04
Expected: 4 unique IDs matched; 4 exceptions
demo_A: no exception. The amount difference is exactly0.01, which is within the inclusive absolute tolerance. Decimal comparisons are exact.demo_B: two mismatches — amount49.00versus49.02, and date2026-10-02versus2026-10-03(record 3 on both sides).demo_C: invalid billing date2026-02-30(record 4). February has no day 30. The invalid field is not also counted as a mismatch.demo_D: invalid billing amountUSD 12.00(record 5). Currency text is not a decimal value; this field is not also counted as a mismatch.
What to investigate: review the original export format and the significance of each date. Correct invalid source values deliberately. Four matched IDs means four unambiguous pairs, not four passing records.
Run this example to see the actual engine output.
Actual findings from the comparison engine
Try these files in the free workspace
- Download both CSVs from one example.
- Open the free comparison workspace. Choose the billing CSV for Billing / A and the access CSV for Access / B. Selecting these files reads them locally; it does not send their contents to the application server.
- Apply the exact settings listed above that example. Imported columns initially use Text, so explicitly select Amount and ISO date for example 3.
- Select Compare records, review the findings, and download the CSV or JSON report if useful.
Record numbers include the header as record 1. Surrounding whitespace is trimmed; text case and internal whitespace stay significant. Duplicate IDs are not paired automatically. A report without exceptions does not prove the exports are complete.
Do these examples upload files or change my systems?
No. The examples and free workspace compare in your browser and add no analytics or advertising scripts. Nothing changes billing or access. The hosting provider may process normal connection and access information; see the privacy notice.
What should I compare next?
Use comparable export dates and a stable shared ID. Compare only fields with the same meaning. The evaluation guide explains how to investigate exceptions and measure whether the check helps your team.
For saved check history, you can review the planned pilot and record nonbinding interest. Recording interest creates no payment or subscription.