DeskcommCRM : Comment déployer un CRM open source avec des agents IA pour WhatsApp sur votre propre serveur
Les ventes sur WhatsApp nécessitent généralement une implication constante du responsable ou le recours à des services tiers comme Kommo ou Intercom. À mesure que la base client s'agrandit, les frais d'abonnement et les charges par utilisateur deviennent une dépense considérable. Le développeur Rafael Melgara du Brésil a publié DeskcommCRM sur GitHub. Il s'agit d'un système de gestion des ventes auto-hébergé, conçu pour les agents IA et l'intégration de messagerie.
Le projet se positionne comme un système de gestion des ventes pour les petites et moyennes entreprises. Initialement construit pour une boutique en ligne avec l'intégration Nuvemshop, l'architecture a ensuite été retravaillée. Le résultat est une solution flexible pour les cliniques, les agences immobilières, les activités d'information et tout service recevant des demandes via les messageries.
Stack technologique et architecture
D'un point de vue architectural, DeskcommCRM repose sur une stack familière aux applications web modernes :
- Frontend et backend : Next.js 16 (App Router) avec React 19 et TypeScript en mode strict.
- Base de données et authentification : Supabase (PostgreSQL), utilisant activement le mécanisme Row Level Security (RLS) et l'extension pgvector pour la recherche vectorielle.
- Intégration WhatsApp : WAHA (WhatsApp HTTP API) sur le moteur NOWEB, fonctionnant dans un conteneur Docker.
- Couche IA : Vercel AI SDK v7 avec intégration des modèles Anthropic Claude, OpenAI et Google Gemini.
Le système contient un serveur MCP (Model Context Protocol) intégré. Cela signifie que des agents IA externes peuvent se connecter au CRM via un protocole commun et effectuer des opérations sur l'entonnoir de ventes.
Agents intelligents au lieu des autorespondeurs classiques
Dans DeskcommCRM, les agents IA fonctionnent différemment des chatbots traditionnels avec des arbres de scénarios rigides. Le bot endosse le rôle d'un responsable impliqué : il mène le dialogue, qualifie les leads, les fait avancer dans les cartes de l'entonnoir et transfère la conversation à un humain lorsqu'il ne peut pas répondre de manière autonome.
Pour chaque client, une base de connaissances isolée est créée. Les dialogues menés avec succès sont réinjectés dans le stockage vectoriel. Ainsi, l'agent accumule progressivement du contexte et devient plus précis dans ses réponses aux questions typiques. Parallèlement, le transfert de contrôle aux humains est régi par des règles pour éviter que le bot n'envoie des messages inutiles.
Webhooks et files de traitement
Pour recevoir les demandes provenant de landing pages et formulaires externes, le système fournit des points d'entrée webhook. Toute requête POST avec des paramètres au format JSON ou urlencoded crée immédiatement un lead au stade souhaité dans l'entonnoir.
Le traitement interne des événements est configuré de manière intéressante. Pour éviter de surcharger les triggers PostgreSQL avec des requêtes HTTP, le développeur a appliqué un pattern de table d'événements. Toutes les actions (changement de statut du lead, apparition d'un tag, message entrant) sont enregistrées dans la table. Un processus en arrière-plan récupère les événements de la file une fois par minute et exécute des automatisations de type « quand/si/alors ».
En pratique, le schéma se présente comme suit :
Dans le cloud Vercel, cette route déclenche un Cron Job régulier, et lors du déploiement sur votre propre serveur, le démarrage est pris en charge par le système .
Sécurité et vérification de l'isolation des données
Comme le CRM prend en charge le multi-tenant, il est crucial de s'assurer qu'une entreprise ne puisse pas voir les contacts ou conversations d'autres entreprises. Dans DeskcommCRM, l'isolation repose sur les politiques RLS dans PostgreSQL.
Le dépôt dispose d'une pipeline CI configurée qui exécute 364 tests invariants sur une instance de base de données propre à chaque pull request. L'un des tests clés génère deux organisations différentes, simule des jetons JWT utilisateur et vérifie si la base de données retourne au moins une ligne d'une autre entreprise. Si la politique de sécurité laisse fuir des données étrangères, le build échoue.
Démarrage rapide en environnement local
Pour explorer le code, le projet peut être lancé localement en quelques minutes. Vous aurez besoin de Node.js version 22, pnpm et Docker.
Pour un déploiement complet sur un VPS, l'auteur a préparé un ensemble de scripts . Le script demande le domaine, les clés Supabase, les clés API des réseaux neuronaux, génère les jetons et met en place une stack prête à l'emploi avec les certificats HTTPS.
Limitations et particularités du projet
Lors de l'exploration du dépôt, gardez à l'esprit plusieurs nuances :
- Une partie des commentaires de code et de la documentation est en portugais, car le projet a été initialement créé pour le marché brésilien.
- Le dépôt est encore relativement récent, avec un peu plus de 300 étoiles sur GitHub.
- L'intégration WhatsApp repose sur WAHA ; avec une activité de messages élevée, il est important de configurer les délais et les intervalles d'envoi pour se protéger contre le blocage du numéro.
À qui DeskcommCRM sera utile
Le projet sera utile aux studios web et freelances qui construisent des systèmes CRM clés en main pour les petites entreprises et qui ne souhaitent pas payer d'abonnements mensuels à des services tiers. Le code sera également précieux pour les développeurs comme référence de qualité : vous pouvez y trouver des exemples d'utilisation propre de Next.js 16, de configuration RAG avec pgvector, d'implémentation de serveur MCP et de tests de politiques RLS dans PostgreSQL.
Projets similaires