1,093 messy rows → 815 clean, deduplicated companies
A typical B2B lead list merged from expo lists, directories, Google Maps and an old CRM. Cleaned with a reproducible Python script: every change is logged, nothing is silently deleted.
Before → after
Real rows from the run. Red is what came in, green is what goes into the clean sheet.
| Company | Country | Phone | Website | |
|---|---|---|---|---|
| GREENFIELD PRINT LLCGreenfield Print LLC | USAUS | 0013232129833+13232129833 | officegreenfield-print32.exampleoffice@greenfield-print32.example | www.greenfield-print32.examplehttps://greenfield-print32.example |
| SOLVEX TEXTILES SP. Z O.O.Solvex Textiles Sp. z o.o. | polandPL | +48 201 080 181+48201080181 | office @solvex-textiles80.exampleoffice@solvex-textiles80.example | http://solvex-textiles80.example/https://solvex-textiles80.example |
| Nordwind Foods llcNordwind Foods LLC | americaUS | 77895— | INFO@NORDWIND-FOODS74.EXAMPLEinfo@nordwind-foods74.example | www.nordwind-foods74.examplehttps://nordwind-foods74.example |
| RIVERSTONE DENTAL LTD Riverstone Dental Ltd | United KingdomGB | 00442715605879+442715605879 | inforiverstone-dental88.exampleinfo@riverstone-dental88.example | https://www.riverstone-dental88.example/contacthttps://riverstone-dental88.example |
| TATRA DENTAL SP. Z O.O.Tatra Dental Sp. z o.o. | polandPL | +48 802 955 963+48802955963 | MAX@TATRA-DENTAL35.EXAMPLEmax@tatra-dental35.example | TATRA-DENTAL35.EXAMPLEhttps://tatra-dental35.example |
Rules applied
- Company names — trimmed, consistent case, one form of the legal suffix (GmbH, Sp. z o.o., Ltd, LLC, TOV).
- Countries — 25 different spellings (Deutschland, u.k., america…) mapped to ISO codes: PL 168 · GB 164 · DE 162 · US 161 · UA 160.
- Phones — any format (00…, (…) …-…, spaces) converted to +E.164; wrong length flagged, not invented.
- Emails — lowercased, spaces and commas fixed, a missing “@” restored when the domain is known from the website.
- Websites — one canonical form https://domain, paths and “www.” removed; domain recovered from email when the site is empty.
- Duplicates — matched by domain (or name + country + phone), the most complete record is kept and empty fields are filled from its copies; sources are merged.
Flags for review
559 rows carry at least one note. Grey is informational.
What you receive
One Excel file with filters and frozen headers, plus the script, so the same cleanup runs again on next month’s list.
815 companies, one row each, ready for CRM import.
Rows that need a human look, with the reason next to each.
Which original rows were merged into which — easy to audit.
3,961 cell-level edits: row, field, before, after.
All companies, domains (.example) and phone numbers on this page are fictional and generated for the demo.