Raw output is a starting point. The value is created in the cleaning, and the difference between a dataset that gets used and one that sits unopened is almost entirely about structure.

Structure first

  • One row per entity, one column per field
  • Consistent headers with units stated explicitly
  • No merged cells and no colour coding used as data
  • No blank spacer rows or repeated header rows inside the data

These feel trivial and are the reason many files get rejected on import.

Normalise the contents

  • Country and city names to a single standard
  • Phone numbers to one international format
  • Dates to an unambiguous format such as ISO
  • Categories mapped to your own list rather than free text
  • Job titles split into title and seniority columns

The seniority split is worth the effort: it lets the sales team filter for decision makers without reading every title by hand.

De-duplicate carefully

Match on the strongest key available: domain first, then email, then phone. Name matching alone produces false merges, and a merged record is often worse than a duplicate because it hides the error.

When two rows conflict, keep the more complete one and note the source. Do not average or blend fields.

Validate before delivery

Check that required fields are present, that emails pass syntax, that websites resolve and that no column is entirely empty by accident. Flag uncertain rows in a separate column rather than deleting them silently.

Deliver two sheets

Clean data in the first sheet, rejected rows with a reason in the second.

Clients trust the second sheet as much as the first, because it shows the work rather than hiding it. It also ends the discussion about whether the list is genuinely verified.

Match the destination

If the file is going into a CRM, export using that system exact import column names. Ten minutes spent matching fields saves the client an afternoon of remapping, and it is the detail that gets a supplier rehired.