ORIGINE

Un projet, deux versions

Après huit ans comme Product Designer, je me forme au Product Building. Apprendre à livrer un produit, pas seulement à le maquetter. Concevoir et coder des écrans, je savais déjà faire.Le vrai gap était ailleurs. Structurer une base de données et automatiser des processus métier avec des outils tiers, hors du champ design, comme Airtable et Make.

Le Mini CRM pour artisans est mon premier vrai projet Product Builder. Un périmètre volontairement simple, un marché réel, faisable seul, pensé justement pour couvrir une app de bout en bout et pas seulement son interface.

Je l'ai construit une première fois en no-code (Airtable, Bubble, Make), la stack de base de ma formation. Une fois ce socle acquis, j'ai voulu tester une deuxième approche sur exactement le même problème.
Je l'ai reconstruit entièrement en code (Supabase, React, Cursor, Claude Code, Vercel, Make), pour comparer les deux méthodes en conditions réelles plutôt que sur la théorie.

Cette comparaison est le vrai sujet de cette page, le détail est dans la section Méthode.

Nom et identité visuelle

Le nom vient du compagnonnage artisan français. Quelqu'un qui reste à tes côtés, discret mais fiable, plutôt qu'un logiciel qu'on subit. Traduit en anglais pour rester court et facile à prononcer, ça donne Mate, le pote qui couvre tes arrières plutôt que le collègue de bureau.
Ce choix marque aussi une différence volontaire avec les CRM du marché (Salesforce, HubSpot), pensés pour des équipes commerciales.

Mate s'adresse à un artisan seul, pas à une organisation.

CONTEXTE

Pourquoi les artisans

Le secteur artisanal français est un marché massif et sous-équipé numériquement. Il représente 3,7 millions d'entreprises, 4,16 millions de salariés et 623 milliards d'euros de chiffre d'affaires (ISM/U2P, Insee).

Contrairement à une idée reçue, ce n'est pas un secteur technophobe. La majorité des artisans a aujourd'hui une présence en ligne. Le vrai problème est ailleurs. 65 % des TPE françaises utilisent encore des outils non adaptés pour gérer leur relation client (Capterra, 2024). Les CRM généralistes (Salesforce, HubSpot) sont pensés pour des équipes commerciales, pas pour un artisan solo qui gère sa quarantaine de clients depuis son atelier.

Problématique

Sans outil de suivi, un artisan perd du chiffre d'affaires sans s'en rendre compte. Un client qui n'a pas recommandé depuis plusieurs mois n'est jamais relancé, il part chez le concurrent. Une commande en cours sort des radars. Aucune visibilité sur qui rapporte le plus, ni sur quoi relancer en priorité.

Ce que le Mini CRM résout

  • Fiche client (contact, historique, notes)

  • Historique des commandes par client, avec statut (En cours / Livré / Payé)

  • Relance automatique quand une facture livrée n'est pas payée (J+15 souple, J+30 ferme)

  • Dashboard : chiffre d'affaires encaissé, commandes en attente, factures à relancer

RECHERCHE

Patterns UX de CRM existants

La majorité des CRM pousse le formulaire de création/édition dans une modal centrée.
Les recommandations UX récentes privilégient plutôt un panneau latéral (drawer) pour ce type d'action. L'utilisateur garde le contexte de la liste en arrière-plan, une modal centrée le lui fait perdre.

J'ai choisi un drawer sur desktop, et un bottom sheet sur mobile pour la même raison. Le drawer s'ouvre systématiquement du même côté que le bouton qui le déclenche, pour limiter le déplacement du curseur entre l'action et la saisie (loi de Fitts).

Accessibilité

Contraste minimum WCAG AA (4.5:1) sur tous les textes. Un statut n'est jamais porté par la seule couleur, toujours accompagné d'un libellé texte. Police Atkinson Hyperlegible, choisie spécifiquement pour sa lisibilité.

Desktop First

Contrairement au réflexe "mobile-first" par défaut, j'ai priorisé le desktop. La prise de commande d'un artisan se fait plus souvent au bureau ou à l'atelier qu'en déplacement. Le contexte d'usage réel a pris le dessus sur la convention.

MÉTHODE : une base, trois constructions

No-code : Airtable → Bubble → Make

En parallèle de ma formation, je construisais le CRM avec les outils du programme au fur et à mesure qu'ils étaient enseignés.

J'ai utilisé Airtable pour la base (une structure relationnelle Clients/Commandes, avec un champ Rollup pour le CA total par client et une formule de date pour repérer les clients inactifs), Bubble pour l'interface (CRUD complet, historique de commandes par client, dashboard, un webhook de relance déclenché manuellement), et Make pour l'automatisation.

Interface Airtable

Make reçoit le webhook envoyé par Bubble au clic sur "Envoyer la relance", récupère les informations du client et de la commande, puis déclenche l'envoi d'un email personnalisé via un module Gmail ou Outlook. C'est la brique qui referme la boucle du problème initial. Sans elle, la fiche client existe mais la relance reste manuelle, exactement ce que le projet devait éviter.

Tester chaque outil au fil de la formation, plutôt que de choisir une stack à l'avance, m'a permis de voir concrètement ce que chacun apportait au projet, plutôt que de le lire en théorie.

Interface Make pour le scénario de relance de mail ​

Le vrai frein n'a pas été la logique métier, c'est la construction d'écran elle-même.

Bubble assemble une interface avec des Groups, des Popups et des Repeating Groups reliés par des expressions du type Current cell's X.
Une gymnastique que Figma ne m'a jamais imposée.

En tant que designer habitué à composer librement, c'est cette rigidité-là qui a coûté le plus de temps, pas la donnée ni l'automatisation.

Interface Bubble

Un détour par Softr

Les lenteurs d'assemblage de Bubble m'ont poussé à tester Softr, découvert dans un autre programme de formation.

Softr se connecte directement à une base Airtable existante, sans duplication de schéma, et construit l'interface à partir de Blocks préfabriqués (liste, fiche détail, formulaire) avec une navigation enregistrement → fiche automatique.
Surprise ! Softr embarque aussi un moteur d'automatisation natif (Workflows), fonctionnellement équivalent à Make.
J'ai reconstruit la relance client sans jamais sortir de l'outil. Donnée, interface et automatisation au même endroit.

Interface de SoftR

Contre mon hypothèse de départ, il est possible d'y faire tout le projet. Mais Softr reste plus rigide visuellement que Bubble. On compose avec des blocs préfabriqués, pas avec des éléments bruts.

Un choix cohérent pour un outil interne ou un portail client à mettre en place vite, pas pour un produit qui doit se différencier visuellement. Pour ça, il fallait revenir au vrai code.

Reconstruire en AI-code

Cœur fonctionnel comparable : avec Cursor et Claude Code, la mise en place de la base (Supabase), de l'authentification et des écrans CRUD (Create, Read, Update, Delete) est allée à une vitesse proche de celle du no-code.
Pendant que le code se générait, je gardais une conversation ouverte avec Claude pour explorer la suite en parallèle, un mode de travail qu'aucun des outils no-code ne permet vraiment.

Le temps total, en revanche, a largement dépassé les quatre jours du no-code. La différence ne vient pas de la vitesse de génération, mais de tout ce que le no-code gère nativement et que le code oblige à construire soi-même. Sécurité des données (Row Level Security), authentification, hébergement, déploiement." devient "Sécurité des données (Row Level Security), authentification, hébergement et déploiement (Vercel), avec un redéploiement automatique à chaque push GitHub.
À quoi s'ajoute une phase de direction artistique poussée, menée directement en prompts plutôt qu'en maquettes Figma, que je n'avais pas menée avec la même profondeur sur les versions no-code.

Make, lui, n'a pas été remplacé.
Le même scénario (webhook → email de relance) tourne toujours, simplement déclenché depuis la nouvelle application plutôt que depuis Bubble.

Passer au code n'a pas voulu dire tout reconstruire.
Seulement reprendre en main les briques qui avaient vraiment besoin de l'être (base de données, interface, sécurité).

DESIGN

Parcours de relance

Le diagramme ci-dessous montre la boucle complète : connexion, repérage d'une facture à relancer sur le Dashboard, clic sur "Envoyer la relance", déclenchement de l'email par Make, réception par le client, règlement, puis mise à jour automatique du statut, qui referme la boucle vers le Dashboard.

Le dernier maillon de cette boucle, c'est ce que le client reçoit réellement.

ÉCRANS CLÉS

Chaque écran a été retravaillé sur plusieurs rounds. Desktop, puis tablette, puis mobile, puis une passe de modernisation visuelle sur les ombres, les arrondis et la typographie.

Tableau de bord

Vue d'ensemble du chiffre d'affaires encaissé et des factures à relancer, avec accès direct à l'envoi d'une relance. Entre la première version et la version finale, la carte CA devient la métrique mise en avant plutôt qu'une carte parmi d'autres, et "livrées" devient "terminées" pour coller au vocabulaire d'un artisan.

Clients

Liste des clients de l'artisan, avec recherche et accès à la fiche de chacun en un clic.

Fiche client

Informations de contact et historique des commandes d'un client sur un seul écran, avec possibilité de changer le statut d'une commande ou d'en ajouter une nouvelle sans quitter la page.

Création commande

Ajout rapide d'une commande à la fiche client. Description, montant, statut initial.

Démonstration

Design system

Logo

Un mark géométrique minimal, dans l'esprit d'outils comme Cursor, mais pas une lettre ni un monogramme.
Le symbole fonctionne dans deux états. Seul, en icône réduite quand le menu latéral est replié, et associé au nom quand le menu est déplié (icône + "Mate" en toutes lettres).

CONCLUSION

L'IA comme compagnon de route

Le SQL de base, je le connaissais déjà.
Tables, colonnes, clés primaires et étrangères, via des formations et expériences passées.
Un bon compagnon de route se reconnaît à ça. Il est surtout utile sur le tronçon que je ne connaissais pas encore, ici les policies de sécurité (Row Level Security) ou les triggers en security definer, propres à Postgres et Supabase. Sur le reste, cette base SQL préexistante m'a surtout permis de lire et de valider ce que l'IA proposait, plutôt que de la suivre les yeux fermés.

Un compagnon de route, aussi bon soit-il, ne choisit pas la destination. Sur les vrais choix produit (drawer ou modal, desktop-first ou mobile-first, à partir de quand relancer un client), l'IA me proposait des chemins, jamais lequel prendre. C'est toujours moi qui tranchais à chaque croisement. Décider de ce que le produit doit être reste entièrement humain.
Elle avance avec moi, elle ne choisit pas pour moi.

Où j'ai dû intervenir

  • Sécurité : une fonction Postgres exposée sans restriction, remontée par l'audit Supabase, corrigée en révoquant les droits d'exécution par défaut.

  • Automatisation silencieuse : le webhook de relance semblait fonctionner en test mais ne se déclenchait jamais en réel. La cause était un réglage caché ("Immediately as data arrives") désactivé par défaut, sans message d'erreur explicite.

  • Itérations de layout : le premier découpage responsive de la fiche client tronquait les boutons d'action à certaines largeurs d'écran. Pas résolu en changeant un seuil, mais en repensant les boutons eux-mêmes (icônes plutôt que texte).

  • Diagnostic avant correctif : sur un bug d'affichage iOS Safari, plusieurs pistes plausibles (safe-area, viewport, cache) ne menaient nulle part. La bonne méthode a été de faire diagnostiquer avant de faire corriger, plutôt que de laisser l'IA corriger à l'aveugle sur une hypothèse non vérifiée.

Développement personnel

Ce projet m'a fait passer d'un Product Designer qui parle code à quelqu'un qui sait en construire un, de bout en bout. Structurer une base de données, poser des règles de sécurité, brancher une automatisation, déployer en production. Ce sont des compétences qui n'existaient pas dans ma pratique il y a encore quelques mois, et qui ne s'apprennent pas en observant, seulement en les pratiquant sur un vrai projet, avec de vrais blocages à résoudre.

La comparaison avec le no-code m'a aussi précisé où se situe la vraie valeur ajoutée de savoir coder, même un peu, en tant que designer. Pas dans la vitesse de production d'un écran, largement comparable avec les bons outils no-code, mais dans le contrôle sur ce qui se passe une fois que l'écran fonctionne. Sécurité, robustesse, déploiement.
C'est ce niveau-là que le no-code masque, en bien comme en mal.

Ce Mini CRM est la preuve que je peux tenir un projet du problème métier jusqu'à la mise en production, pas seulement jusqu'à la maquette.
C'est exactement la compétence que je suis venu chercher en me formant au Product Building.

CE QUE JE FERAIS ENSUITE (V2)

  • Multi-artisans : l'architecture (Row Level Security par propriétaire) est déjà pensée pour plusieurs comptes, mais un seul est actif aujourd'hui. Ouvrir l'inscription et ajouter un onboarding serait la suite logique.

  • Relance par SMS : prévue dans le scope initial (Twilio), pas construite pour ce MVP. Utile pour les artisans qui consultent peu leurs emails sur le terrain.

  • Conformité e-facturation : hors scope aujourd'hui, les clients visés étant des particuliers (exemption B2C). Si Mate s'ouvrait un jour à une clientèle professionnelle, ce point deviendrait obligatoire, pas optionnel.

  • Personnalisation de marque : upload d'un logo propre à chaque artisan, pour que Mate reflète l'identité de son entreprise plutôt que la mienne seule.

  • Prestations prédéfinies : remplacer la description libre d'une commande par une liste déroulante de prestations types, personnalisable par artisan, pour accélérer la saisie et harmoniser les libellés utilisés en relance.