Pilier

Migrer des données clients désordonnées sans le cauchemar

Il existe une angoisse bien particulière à ouvrir un export clients vieux de cinq ans. La moitié des numéros de téléphone ont un préfixe +386, l’autre moitié non. Une colonne appelée « Notes » mélange trois types d’informations différents selon qui était pressé ce jour-là. Le nom d’une entreprise est orthographié de deux façons différentes sur deux lignes différentes, et vous ne savez vraiment pas s’il s’agit du même client.

Ne serait-ce pas agréable de pouvoir simplement téléverser ce bazar tel quel, sans passe de nettoyage préalable, sans reformatage, et que le système vous dise honnêtement ce qu’il a trouvé, ce qu’il a deviné et ce qu’il n’a pas pu compléter ? Maintenant, c’est possible. Nous avons conçu Craft11 pour s’adapter à la façon dont les entreprises réelles tiennent réellement leurs registres, pas l’inverse.

Comment ça marche vraiment

Quand vous téléversez un fichier (CSV, Excel, PDF, même une liste de prix scannée), il part vers Neo, la partie de Craft11 qui lit les documents. Neo n’essaie pas de faire correspondre votre tableur à un schéma rigide. Il lit le contenu réel et propose des fiches structurées : ceci ressemble à un nom, ceci ressemble à un e-mail, ceci ressemble à un secteur ou une catégorie. Chaque proposition porte un niveau de confiance (élevé, moyen, faible), donc vous n’avez jamais à deviner quels champs sont certains et lesquels relèvent d’une estimation raisonnable.

Rien n’est encore créé. Vous voyez d’abord un tableau de vérification. Des points de confiance à côté de chaque ligne, une édition en ligne si quelque chose ne va pas, un décompte clair de ce qui est complet et de ce qui ne l’est pas. Vous validez ce qui est bon. Vous pouvez corriger une faute de frappe sur place si vous voulez, ou simplement la laisser et la corriger plus tard. Les deux conviennent.

Voici la partie qui surprend les gens : il ne vous bloque jamais à cause de données imparfaites. Si 47 de vos 300 contacts n’ont pas de numéro de téléphone, les 253 autres sont quand même importés proprement, et vous obtenez une liste honnête et précise de ces 47, pas un vague avertissement du genre « certaines fiches peuvent être incomplètes », mais un décompte réel qui ne disparaît que lorsqu’il est effectivement résolu. Stark peut vous aider à les retrouver de façon conversationnelle dès que vous avez quelques minutes. Le manque est informatif, pas un blocage.

Le problème des doublons dont personne ne parle

Voici quelque chose qui n’apparaît pas dans la plupart des présentations d’outils d’import : que se passe-t-il quand vous téléversez la même liste deux fois ? Ou quand un collègue a déjà à moitié saisi un client manuellement, et que l’import en masse est sur le point de créer une deuxième copie de la même personne sous une orthographe légèrement différente ?

Nous gérons cela avec une règle délibérément simple, appliquée automatiquement avant même que vous voyiez l’écran de vérification. Pour les imports de clients, c’est une correspondance d’e-mail insensible à la casse avec vos fiches existantes. Pour un catalogue de ressources, c’est une correspondance de nom insensible à la casse. Toute ligne qui ressemble à un doublon probable est signalée et décochée par défaut dans le tableau de vérification : pas bloquée, pas fusionnée automatiquement, simplement décochée. Vous pouvez toujours cocher la case et l’importer quand même si c’était réellement votre intention. Le système ne peut pas décider ça à votre place. Il empêche simplement qu’un accident passe inaperçu.

Nous avons testé cela directement : nous avons téléversé un fichier contenant un contact dont l’e-mail correspondait exactement à un client existant, à côté d’un contact réellement nouveau. Le doublon a été signalé et est resté décoché. Le nouveau contact a été importé proprement. Relancer le même fichier une deuxième fois n’a rien créé de plus. C’est tout l’intérêt : retéléverser un fichier ne devrait pas être quelque chose qui exige de la prudence.

Un vrai bug, trouvé honnêtement

Je veux vous parler de quelque chose qui a réellement mal tourné pendant que nous construisions cela, parce que l’alternative, prétendre que tout a fonctionné parfaitement dès le départ, serait exactement le genre de malhonnêteté marketing que nous essayons d’éviter.

L’importateur de catalogue de ressources a un champ de taux de TVA. Notre base de données l’exige. Sa valeur par défaut est de 25%, le taux standard, donc une ressource sans taux explicite devrait automatiquement retomber sur cette valeur par défaut. Sauf que ce n’était pas le cas. Si vous téléversiez une liste de prix sans aucune colonne de TVA (ce qui est extrêmement courant, beaucoup de listes de prix n’en ont tout simplement pas), l’import plantait avec une erreur serveur brute au moment où vous essayiez de l’activer.

La raison était subtile : la valeur par défaut de la base de données ne se déclenche que lorsqu’un champ est entièrement omis de l’insertion. Notre code écrivait explicitement null dans ce champ au lieu de le laisser de côté, ce qui signifiait que le filet de sécurité de la base de données n’avait jamais eu l’occasion de rattraper le coup. Nous ne l’avons découvert qu’en exécutant un vrai test de bout en bout, avec un fichier réaliste qui n’avait vraiment pas de colonne de TVA (pas une hypothèse, un import réel), et en observant l’échec. Le correctif tenait en une ligne : valeur par défaut de 25% dans le code, le même chiffre que la base de données documente elle-même comme standard, appliquée uniquement quand le fichier source est réellement muet sur la question.

Je vous raconte ça non pas parce que c’est une histoire flatteuse, mais parce que c’est la texture réelle de ce que signifie construire quelque chose comme ça honnêtement. L’instinct de trouver ce bug en testant réellement un fichier réel désordonné, plutôt qu’en supposant le chemin idéal, est le même instinct qui sous-tend toute la fonctionnalité. Un logiciel confiant sur des données qu’il n’a en réalité jamais vues est exactement le genre de logiciel que nous essayons de ne pas construire.

Nous avons testé le tout sur une entreprise qui n’existe pas encore

Avant que cela ne soit mis en ligne, nous avons fait tourner un mois entier d’utilisation simulée pour une équipe de conseil de quatre personnes : de vraies demandes qui arrivent, de vraies conversations avec des clients, de vrais imports de catalogue, sur un tenant de test dédié, en utilisant un vrai modèle d’IA de bout en bout, pas un script. Nous avons pu le faire aussi minutieusement parce que nous avions déjà injecté, dès le premier jour, une grande quantité de données réalistes, et construit Velvet, notre propre simulateur de test, précisément pour ne pas être limités à vérifier un seul cas limite à la fois. Plusieurs scénarios désordonnés se sont déroulés ensemble le même mois : un CSV avec un contact déjà existant mélangé à d’authentiques nouveaux, en plus de tout ce que ce mois-là a jeté au système.

Le coût total d’IA pour tout ce mois simulé, pour quatre personnes, était de moins d’un dollar. Nous le mentionnons parce que les outils d’import « propulsés par l’IA » ont une réputation, parfois méritée, de devenir un abonnement coûteux caché derrière l’abonnement. À cette échelle, cette crainte ne tient tout simplement pas.

Ce que ça ne fait pas

Dans l’esprit de ne pas trop vendre la chose : ce n’est pas de la magie OCR pour des scans réellement illisibles, et ça ne devinera pas un champ qui n’a jamais existé dans le fichier source. Les PDF structurés et les tableurs propres fonctionnent bien ; une facture manuscrite de 2019 prise en photo demande plus de vérification humaine, et le système le dit honnêtement plutôt que d’inventer une supposition.

Il ne fusionne pas non plus les doublons automatiquement, et ce, délibérément. Ça reste une décision humaine, pas celle du logiciel. Signaler clairement et laisser par défaut « ne pas importer ceci deux fois » est exactement la bonne dose d’aide.

Si vous êtes en train de regarder votre propre export en désordre

La réponse honnête à « combien de temps cela va-t-il prendre » est : probablement un après-midi, pas une semaine. Téléversez le fichier. Vérifiez ce que Neo a trouvé. Validez ce qui est correct, corrigez ce qui ne l’est pas, laissez les manques pour plus tard si vous voulez. Ils seront toujours là, clairement comptabilisés, quand vous serez prêt. Le but n’a jamais été de rendre vos données parfaites avant de commencer. C’était d’empêcher que des données parfaites soient le prix d’entrée.


Le Migration Engine de Craft11 gère à la fois les imports de Clients et de Ressources avec la même architecture décrite ci-dessus : extraction notée par niveau de confiance, détection de doublons et suivi honnête des manques. Voyez-le dans la visite guidée du produit →

Questions que les gens posent vraiment

Passer à Craft11 signifie-t-il que je dois ressaisir manuellement toutes mes données clients ?

Non. Téléchargez le fichier que vous avez déjà (un tableur, un export CRM, même une liste de prix PDF d'un fournisseur), et Neo (l'agent d'import de Craft11) en propose des fiches structurées. Vous vérifiez et validez ; rien n'est créé sans que vous l'ayez vu au préalable.

Que deviennent les champs qu'il n'arrive pas à identifier ?

Ils restent vides et sont clairement signalés, jamais devinés. Vous obtenez une liste précise, '47 contacts sans numéro de téléphone', pas un avertissement vague, et vous pouvez les corriger dès que vous avez cinq minutes, pas avant d'être autorisé à commencer à utiliser le système.

Et si je télécharge accidentellement la même liste deux fois ?

Craft11 vérifie les doublons probables par rapport à vos fiches existantes (par e-mail pour les clients, par nom pour les articles du catalogue) et laisse ces lignes décochées par défaut. C'est vous qui décidez de les importer quand même. Il ne crée jamais silencieusement une seconde copie de quelqu'un que vous avez déjà.

Rejoindre l'Early Crew →← Retour à tous les articles

Recorded on a live database and a live screen, but run by automated scripts standing in for a human's clicks and typing, not performed live. When Stark answers faster than the script expects, the screen can hold still for a beat before the next step starts. That's left in on purpose. The goal was never a polished demo reel, it was proof the feature actually works. Dejan's own verdict, after watching the raw footage: rough, but the best demo video we've made.