Learning path · 5 lessons
ERP and CRM reconciliation pipeline
Generate a synthetic, deliberately messy enterprise resource planning (ERP) and customer relationship management (CRM) dataset, then reconcile the two divergent exports back into a single source of truth by matching customers, invoices, and payments on name, email, phone, and date and amount proximity, never on ID-format shortcuts.
5 of 5 availableAll lessons are available
Expected outcome
What you will build
A reproducible synthetic ERP and CRM dataset, a reconciliation pipeline run that produces a crosswalk, quarantine log, and Markdown report, and a precision, recall, and F1 score of that run against a ground_truth.json answer key.
Before you begin
Prerequisites
- Python 3.12 or later
uv(the Python package and project manager)- A local clone of the
erp-crm-reconciliation-pipelinerepository with dependencies installed - Docker (optional, only needed for the Postgres lesson)
5 available · 0 upcoming
Lessons in this series
- Lesson 1Generate a synthetic ERP and CRM datasetA synthetic dataset in
data/, an ERP-style flat CSV export and a CRM-style nested JSON export of the same underlying customers, invoices, and payments, plus aground_truth.jsonanswer key, all reproducible from a single seed. - Lesson 2Compare ERP and CRM field mappings and the ground truth answer keyThe ability to find the same underlying customer, invoice, or payment across the ERP CSV export and the CRM JSON export, and to read a
ground_truth.jsonentry to state whether a given record is expected to match, be an orphan, or carry a legitimate amount drift. - Lesson 3Customize messiness and build a reproducible configuration fileA custom generation_config.yaml with tuned messiness ratios, and evidence that regenerating from that file reproduces byte-identical output on every run.
- Lesson 4Reconcile ERP and CRM records with the pipelineA
reconcilerun over a generated dataset that producescrosswalk.json,quarantine_log.json, andRECONCILIATION_REPORT.md, matching customers by fuzzy name and email or phone, invoices by exact date, currency, and amount, and payments by exact date within an already-resolved parent. - Lesson 5Score match quality and load results into PostgresA precision, recall, and F1 score for a
reconcilerun, computed against theground_truth.jsonanswer key generated in Lesson 1, plus an optional Postgres load of the same crosswalk and quarantine data.