Prompt: clean a contact export without breaking the IDs
Trim names and emails, keep accents and leading zeros (0007 stays 0007), flag malformed addresses for review, and get a change log you can check before importing.
Works with: ChatGPT, Claude, Copilot, Gemini
The task
Prepare a contact list for import: tidy the fields, keep IDs and French names intact, and list every change for review.
Clean these fictional records. Keep every row and preserve id as text, including leading zeros. Preserve accents, apostrophes and letter case in organization names; trim outside whitespace and collapse repeated internal spaces. In email, trim outside whitespace and lowercase only the domain after @. An address with other than one @, an empty part on either side, or internal whitespace is REVIEW_EMAIL; leave its cleaned_email blank. This is a structural check, not proof that an address exists. Do not merge contacts or invent missing values. Return id, original_organization, cleaned_organization, original_email, cleaned_email, status and change log. Use PROPOSE for rows passing the specified structural check. id="0007"; organization=" Équipe du Nord "; email=" Demo@EXAMPLE.INVALID " id="0081"; organization="L'Atelier Bleu"; email="demo2@example.invalid" id="0092"; organization="Exemple"; email="contact@@example.invalid"
How to use it
- Run it with the three fictional records and check that 0007 is still 0007.
- Practise on a synthetic batch shaped like your export; real contact data stays in your company's approved tools.
- Review the change log row by row, fix the REVIEW_EMAIL rows at the source, then import.
What you get
Every row kept, IDs unchanged with their leading zeros, names trimmed with accents and apostrophes intact, domains lowercased, and malformed emails marked REVIEW_EMAIL with a blank cleaned value.
| id | original_organization | cleaned_organization | original_email | cleaned_email | status | change log | |---|---|---|---|---|---|---| | "0007" | " Équipe du Nord " | Équipe du Nord | " Demo@EXAMPLE.INVALID " | Demo@example.invalid | PROPOSE | Organization: removed spaces at the start and end, and collapsed repeated internal spaces to one. Email: removed spaces at the start and end, and lowercased the domain (EXAMPLE.INVALID to example.invalid). The local part "Demo" keeps its case. | | "0081" | "L'Atelier Bleu" | L'Atelier Bleu | "demo2@example.invalid" | demo2@example.invalid | PROPOSE | Organization: collapsed repeated internal spaces to one; the apostrophe and letter case are kept. Email: no change needed. | | "0092" | "Exemple" | Exemple | "contact@@example.invalid" | (blank) | REVIEW_EMAIL | Organization: no change needed. Email: it has two "@" characters instead of one, so it fails the structural check and cleaned_email is left blank. |
Where should you start with AI?
The free assessment gives you, in 4 minutes, the 3 tasks to automate first in your business.