Ce que coûte un fichier sale
Il ne coûte pas en lui-même. Il coûte à chaque usage.
Une campagne de relance dont un quart des adresses n’existe plus. Un client contacté deux fois par deux commerciaux parce qu’il figure sous deux fiches. Un chiffre d’affaires par client faux parce que les commandes sont réparties entre trois doublons. Un courrier envoyé à une entreprise en liquidation depuis deux ans.
Et un effet plus insidieux : plus personne ne fait confiance au fichier, donc chacun tient sa propre liste à côté. C’est à ce moment que le problème devient structurel.
Les cinq opérations
Normaliser. Casse, accents, espaces multiples, formes juridiques, numéros de téléphone au format international, codes postaux, pays.
Valider. Syntaxe des adresses e-mail, existence du domaine, plausibilité des numéros, cohérence code postal / ville.
Rapprocher. Pour les entreprises, interroger les registres publics pour obtenir la dénomination exacte, l’adresse du siège et l’état de l’établissement.
Dédoublonner. Clés fortes d’abord, similitude ensuite, avec un seuil.
Décider. Fusionner ce qui est certain, proposer le reste, ne jamais supprimer.
Comment ça marche techniquement — pour qui veut le détail
La normalisation. En Python : unicodedata pour retirer les diacritiques de façon propre, une table de suppression des formes juridiques (SARL, SAS, EURL, SA…), phonenumbers pour les téléphones — qui gère correctement les indicatifs, les zéros initiaux et les formats régionaux.
Les clés de blocage. Comparer toutes les paires d’un fichier de 50 000 lignes représenterait plus d’un milliard de comparaisons. On regroupe donc d’abord par une clé grossière — code postal, première lettre du nom normalisé, domaine de l’adresse e-mail — et on ne compare qu’à l’intérieur de chaque groupe. C’est ce qui rend l’opération faisable en secondes plutôt qu’en heures.
La similitude. rapidfuzz pour la distance entre chaînes ; le ratio par jetons triés gère bien l’inversion des mots. Un score au-delà d’un seuil haut déclenche une proposition, au-delà d’un seuil très haut avec clé forte concordante déclenche une fusion. Les deux seuils se calibrent sur un échantillon vérifié à la main — jamais sur des valeurs par défaut.
La validation des e-mails. Syntaxe, puis existence d’un enregistrement MX sur le domaine. On ne va pas au-delà : la vérification par connexion au serveur de destination est peu fiable et mal vue.
Le rapprochement entreprises. L’API publique de l’annuaire des entreprises (données INSEE et INPI) permet une recherche par raison sociale et localité, ou une résolution directe par SIRET. On y récupère la dénomination exacte, l’état administratif et le code d’activité. À appeler avec une temporisation raisonnable et un cache local : c’est un service public gratuit, pas une ressource à saturer.
La traçabilité. Chaque valeur modifiée est enregistrée avec sa valeur d’origine, la règle appliquée et l’horodatage. C’est ce qui permet de revenir en arrière — et un nettoyage sans possibilité de retour arrière ne devrait jamais être lancé sur un fichier de production.
Le contrôle en amont. Le vrai livrable. Les mêmes règles appliquées au moment de la saisie ou de l’import : on refuse une adresse invalide, on signale un doublon probable avant création, on résout le SIRET à la volée. Sans cela, le fichier se re-salit en quelques mois et l’opération est à refaire.