Instead of asking you to take our word for it, here is a reproducible run you can inspect end to end — no customer case study required. A boutique HubSpot/Salesforce implementation agency migrating a legacy CRM handed us a white-label data-QA slice: clean the export, build an import-ready staging file from their mappings, compare pre/post import, and reconcile against a billing export — without touching their CRM. This run is simulated on generated data so you can inspect the exact outputs before sending anything real. Every number below is machine-generated, not written for the page.
Five simulated cases, one pipeline. Nothing below hides a bad result — a FAIL prints exactly like a PASS, with the same accounting, just with non-zero rows.
Pre-import and post-import contact exports, compared cell by cell on a declared key.
# IMPORT_QA_VERDICT.txt — case_a
pre-import rows : 3 post-import rows: 3
row-count invariant (3 == 3): HOLDS
missing: 0 extra: 0 changed: 0 duplicates: 0
totals[annual_revenue]: pre=46000.0 post=46000.0 -> RECONCILES
VERDICT: PASS
A different pre/post pair. The importer created duplicates and left a blank key. The verdict fails loudly instead of averaging the problem away.
# IMPORT_QA_VERDICT.txt — case_c
pre-import rows : 4 post-import rows: 6
row-count invariant (6 == 4): VIOLATED
missing: 1 extra: 1 changed: 1 duplicates_in_post: 2
blank_declared_keys: post=1 ambiguous_identity_keys: 1
totals[annual_revenue]: pre=68000.0 post=100011.0 -> UNEXPLAINED DELTA
VERDICT: FAIL — INCONCLUSIVE (ambiguous keys must be disambiguated first)
Client-supplied mappings, mechanical prep only — the sandbox dry-run stays on their side.
# PREP_REPORT.txt — case_b
COUNT IDENTITY: input(7) = staged(3) + excluded(3) + merged_exact_dups(1) -> OK
dropped source columns (inventoried, not migrated): ['Internal Owner']
DQ issues: 0
SANDBOX NOTE: local conformance only — your sandbox import is the final proof.
Exact-key join only — CRM email against the billing export's declared email column.
# CROSS_SOURCE_VERDICT.txt — case_d
rule: exact_normalized_email · crm.email ↔ billing."Billing Email"
matched pairs: 2 unmatched in CRM only: 1 unmatched in billing only: 1
AMBIGUOUS keys quarantined (multi-occurrence, your decision): 1
Only exact normalized matches were joined — similar-but-not-equal
records were NOT merged.
The same case D dataset also carried a rule asking for fuzzy_name_or_email
matching. That is outside current capability, so the run refuses it explicitly rather than
approximating a join it cannot prove.
Requested: match_type: "fuzzy_name_or_email" →
refused. Only exact, declared keys are supported today.
Raw files never get edited in place — SHA-256 is taken first, so you can prove later that nothing was altered before processing began.
# FILE_MANIFEST_SHA256.json (excerpt)
"case_a_pre_contacts.csv": "6ccd80180bf00a6b63476981269e822783f903c6df1a0dd833e133cd060eb5a3"
"case_b_dirty_source.csv": "57365436c567223416f7a88bdce5e57173a9130a0a4742c6d2e41955612bbc5e"
"case_d_crm_contacts.csv": "b6a7af5e9eef9f2f360b3d69b03a4f26a58727703ff2bbd867b85bab2dbc33c5"
Want the same accounting on your own anonymized export? Scope the $750 pilot or write directly.