Prepare your data¶
Start with two explicit lists. Give every row a stable id; use the same
field name in both lists where possible.
left = [{"id": "left-1", "name": "Karfi Health Post", "lat": 11.62, "lon": 8.49}]
right = [{"id": "right-7", "name": "Karfi Health Post", "lat": 11.62, "lon": 8.49}]
Include evidence, not just a name¶
A name alone is rarely enough. Include the fields that can distinguish one entity from another.
| Entity | Useful fields |
|---|---|
| Person | name, verified identifier, date of birth, phone, email |
| Place | name, coordinates, address, administrative area, facility type |
| Organisation | name, registration number, address, phone, website |
| Product | brand, model code, GTIN or MPN, variant attributes |
Use only fields you are permitted to process. A field should be accurate enough to support a decision and traceable back to its source.
Choose the relation before matching¶
For alpha, crosswalk() asks a narrow question: should these two records be
treated as the same entity? Do not use it to represent related but distinct
relationships such as supplier and brand, product family and product variant,
or compatible products.
Those distinctions are particularly important for future product matching. An exact variant match, a family match, a substitute, and a bundle relationship need different labels, evidence, and evaluation.
Start with a labelled sample¶
Before processing a full dataset:
- Sample likely matches and likely non-matches.
- Have domain reviewers label them independently.
- Measure false merges separately from missed matches.
- Set the review process and its capacity before automation.
Accuracy only transfers when the target data, decision rule, and review process are comparable to the evaluation data.