Die Aufgabe
SHIFT>_CRM ist ein CRM-System für Unternehmen jeder Branche mit einer separaten Installation für jeden Kunden.
Universelle CRM-Systeme passen allen ein bisschen, aber keinem vollständig. Sie sind für ein „durchschnittliches" Unternehmen gedacht, deshalb müssen Firmen ihre Prozesse an eine fremde Logik anpassen, überflüssige Funktionen in Kauf nehmen und auf benötigte verzichten, während die Daten aller Kunden bei einem einzigen Anbieter liegen. Ziel des Projekts war ein CRM, das genau so funktioniert, wie das Geschäft eines bestimmten Unternehmens aufgebaut ist. Jedes Unternehmen erhält eine eigene, unabhängige Instanz auf einem separaten Server mit eigener Datenbank und eigener Adresse, die auf seine Prozesse zugeschnitten wird: Mitarbeiter, Zugriffsrechte, Phasen der Kundenarbeit, Stammdaten, eigene Felder und sogar die Begriffe, an die das Team gewöhnt ist. So erhält das Unternehmen ein System, mit dem kein großes Standard-CRM mithalten kann, weil keines davon für dieses Unternehmen entwickelt wurde.
Im CRM läuft die gesamte Kundenarbeit: eine Kundenkarte mit mehreren Ansprechpartnern, Kommentaren und Dateien, Statuswechsel direkt in der Karte, Zahlungen in verschiedenen Währungen, eine Vertriebspipeline, Erinnerungen und Benachrichtigungen. Die Statistik zeigt das Bild sowohl für Kunden als auch für jeden einzelnen Mitarbeiter: Deals, Konversion, Zahlungen, Anrufe und überfällige Aufgaben. Anfragen von der Website und aus Facebook Lead Ads werden automatisch zu neuen Kunden, wiederholte Anfragen werden erkannt. Mit dem integrierten Telefon lässt sich direkt im Browser telefonieren, und jedes Gespräch landet in der Kundenhistorie. Für die Kommunikation im Team gibt es einen Messenger mit Einzelchats, Sprachnachrichten, Antworten auf Nachrichten und sofortiger Zustellung.
Ein eigener Bereich des Systems ist künstliche Intelligenz. Der KI-Assistent beantwortet Fragen der Vertriebsmitarbeiter zur Datenbank, etwa wen sie heute anrufen sollten, sieht dabei nur die Daten, auf die der Mitarbeiter Zugriff hat, und ändert selbst nichts. Ein Unternehmen kann ein eigenes Qwen-Modell auf seinem Server betreiben oder ChatGPT, Claude, Gemini und DeepSeek per API-Schlüssel anbinden; der Administrator legt den Hauptdienst fest und entscheidet, wer welchen Dienst nutzen darf. Eine Unternehmensbeschreibung für die KI lässt sich aus einer Word- oder PDF-Datei hochladen, und im Lernmodus sammelt die KI selbstständig allgemeine Notizen über das Unternehmen, ohne personenbezogene Kundendaten zu speichern. Jede Nacht wertet die KI die Änderungen bei den Kunden aus und erstellt bis sechs Uhr morgens für jeden Mitarbeiter einen Tagesplan. Kommentare lassen sich per Sprache diktieren und werden automatisch in Text umgewandelt.
Besonderes Augenmerk lag auf der Sicherheit. Passwörter werden als Argon2id-Hashes gespeichert, Sitzungen in geschützten Cookies, und eine Zwei-Faktor-Authentifizierung per Authenticator-App steht zur Verfügung. Berechtigungen prüft der Server, die Daten sind zusätzlich durch Row-Level Security in der Datenbank geschützt, und alle Aktionen werden in ein unveränderliches Audit-Log geschrieben. Es gibt eine automatische Abmeldung bei Inaktivität und eine tägliche Abmeldung aller Mitarbeiter zu einer festgelegten Uhrzeit, Schlüssel externer Dienste werden verschlüsselt, Backups werden automatisch erstellt und ebenfalls verschlüsselt, und die Website läuft ausschließlich über HTTPS. Die Oberfläche ist in 11 Sprachen übersetzt, es gibt mehrere Farbthemen und eine Demoversion mit einem fiktiven Unternehmen für Kundenpräsentationen.
Das Projekt ist vollständig in TypeScript geschrieben. Die Oberfläche basiert auf React 19 und React Router mit einem eigenen Designsystem, der Server auf Node.js und Fastify mit einer PostgreSQL-Datenbank, Abfragen über Kysely und Datenvalidierung mit Zod. Live-Updates kommen über Server-Sent Events und den Benachrichtigungsmechanismus von PostgreSQL, die Telefonie läuft über WebRTC und JsSIP und wurde mit Asterisk getestet. Für die KI-Funktionen werden die OpenAI API, das Anthropic SDK und Ollama eingesetzt. Das System wird per Docker Compose auf einem Ubuntu-VPS bereitgestellt, und Caddy stellt HTTPS-Zertifikate automatisch aus. Die wichtigsten Abläufe sind durch automatisierte Tests abgedeckt.
Das Ergebnis ist ein Produkt, an das sich niemand anpassen muss: ein CRM mit Telefonie, Messenger und KI-Assistent, das auf dem eigenen Server des Kunden läuft und vom ersten Tag an so funktioniert, wie sein Geschäft funktioniert.








