DeskcommCRM: Hoe implementeer je een open-source CRM met AI-agents voor WhatsApp op je eigen server
WhatsApp-verkoop vereist constante betrokkenheid van een manager of het aansluiten van diensten van derden zoals Kommo of Intercom. Naarmate de klantendatabase groeit, worden abonnementskosten en kosten per werkplek een aanzienlijke uitgave. Ontwikkelaar Rafael Melgara uit Brazilië heeft DeskcommCRM op GitHub vrijgegeven. Het is een zelfgehoste verkoopbeheersysteem dat ontworpen is voor AI-agents en messenger-integratie.
Het project is gepositioneerd als een verkoopbeheersysteem voor kleine en middelgrote bedrijven. Aanvankelijk werd het gebouwd voor een online winkel met Nuvemshop-integratie, maar later werd de architectuur herwerkt. Het resultaat is een flexibele oplossing voor klinieken, makelaarskantoren, info-businesses en alle diensten die aanvragen via chats ontvangen.
Technologiestack en architectuur
Architectonisch is DeskcommCRM gebouwd op een vertrouwde stack voor moderne webapplicaties:
- Frontend en backend: Next.js 16 (App Router) met React 19 en TypeScript in strict modus.
- Database en authenticatie: Supabase (PostgreSQL), actief gebruikmakend van het Row Level Security (RLS) mechanisme en de pgvector-extensie voor vectorzoekopdrachten.
- WhatsApp-integratie: WAHA (WhatsApp HTTP API) op de NOWEB-engine, draaiend in een Docker-container.
- AI-laag: Vercel AI SDK v7 met integratie van Anthropic Claude, OpenAI en Google Gemini-modellen.
Het systeem bevat een ingebouwde MCP-server (Model Context Protocol). Dit betekent dat externe AI-agents via een gemeenschappelijk protocol verbinding kunnen maken met de CRM en bewerkingen kunnen uitvoeren met de verkooptrechter.
Slimme agents in plaats van gewone autoresponders
In DeskcommCRM werken AI-agents anders dan traditionele chatbots met starre scenario-boomstructuren. De bot neemt de rol aan van een verantwoordelijke manager: voert dialogen, kwalificeert leads, beweegt ze door trechterkaarten en draagt het gesprek over aan een mens wanneer hij zelf niet kan antwoorden.
Voor elke klant wordt een geïsoleerde kennisbank gecreëerd. Succesvol voltooide dialogen worden teruggevoerd naar de vectoropslag. Op deze manier verzamelt de agent geleidelijk context en wordt hij nauwkeuriger bij het beantwoorden van typische vragen. Tegelijkertijd wordt de overdracht van controle aan mensen beheerst door regels om te voorkomen dat de bot onnodige berichten stuurt.
Webhooks en verwerkingswachtrijen
Voor het ontvangen van aanvragen van externe landingspagina's en formulieren biedt het systeem webhook-toegangspunten. Elke POST-aanvraag met parameters in JSON- of urlencoded-formaat maakt onmiddellijk een lead aan op het vereiste stadium in de trechter.
De interne gebeurtenisverwerking is interessant opgezet. Om PostgreSQL-triggers niet te overbelasten met HTTP-aanvragen, paste de ontwikkelaar een gebeurtenistabelpatroon toe. Alle acties (leadstatuswijziging, tag- verschijning, inkomend bericht) worden geregistreerd in de tabel. Een achtergrondproces haalt gebeurtenissen één keer per minuut uit de wachtrij en voert automatiseringen uit van het type "wanneer/als/dan".
In de praktijk ziet het schema er zo uit:
In de Vercel-cloud activeert deze route een reguliere Cron Job, en bij implementatie op je eigen server wordt opstart opgepikt door het systeem.
Beveiliging en verificatie van gegevensisolatie
Omdat de CRM multi-tenancy ondersteunt, is het cruciaal om ervoor te zorgen dat één bedrijf geen contacten of gesprekken van andere bedrijven ziet. In DeskcommCRM is isolatie gebouwd op RLS-beleid in PostgreSQL.
De repository heeft een CI-pijplijn geconfigureerd die 364 invariantietests uitvoert op een schone database-instantie bij elke pull. Een van de belangrijkste tests genereert twee verschillende organisaties, simuleert gebruiker JWT-tokens en controleert of de database minstens één rij van een ander bedrijf retourneert. Als het beveiligingsbeleid vreemde gegevens lekt, mislukt de build.
Snelle start in lokale omgeving
Om de code te verkennen, kan het project lokaal in een paar minuten worden opgezet. Je hebt Node.js versie 22, pnpm en Docker nodig.
Voor een volledige implementatie op een VPS heeft de auteur een set scripts voorbereid. Het script zelf vraagt om het domein, Supabase-sleutels, neurale netwerk API-sleutels, genereert tokens en brengt een kant-en-klare stack omhoog met HTTPS-certificaten.
Beperkingen en eigenaardigheden van het project
Bij het verkennen van de repository, houd rekening met verschillende nuances:
- Een deel van de code-opmerkingen en documentatie is in het Portugees geschreven, aangezien het project oorspronkelijk gemaakt werd voor de Braziliaanse markt.
- De repository is nog relatief jong, met iets meer dan 300 sterren op GitHub.
- WhatsApp-integratie is afhankelijk van WAHA, dus bij hoge berichtactiviteit is het belangrijk om vertragingen en verzendintervallen te configureren ter bescherming tegen nummerblokkering.
Voor wie is DeskcommCRM nuttig
Het project is nuttig voor webstudios en freelancers die turnkey CRM-systemen bouwen voor kleine bedrijven en niet willen betalen voor maandelijkse abonnementen op diensten van derden. De code is ook waardevol voor ontwikkelaars als kwaliteitsreferentie: je kunt voorbeelden vinden van schone Next.js 16-gebruik, RAG-opstelling met pgvector, MCP-serverimplementatie en RLS-beleidstests in PostgreSQL.
Gerelateerde projecten