Einen kundenbewussten KI-Agenten über CRM, Support und Billing hinweg bauen (2026)
Kurzfassung: Ein kundenbewusster KI-Agent braucht eine aufgelöste Identität, nicht drei Rohdatensätze aus CRM, Support und Billing. Lösen Sie diese Datensätze bei der Datenaufnahme mit deterministischem, unscharfem und probabilistischem Matching auf und geben Sie dem Agenten anschließend einen einzigen Tool-Call, der zur Abfragezeit die aktuelle aufgelöste Entität samt Konfidenzwert zurückliefert.
Sie möchten das mit Ihren eigenen CRM-, Support- und Billing-Daten aufbauen? Demo buchen oder Tilores Studio kostenlos testen.
Die meisten Teams bauen zuerst den Agenten – und die Identitätsschicht nie. Sie hängen ein Tool an das CRM, ein zweites an den Support-Desk, ein drittes an das Abrechnungssystem und bitten dann das Modell herauszufinden, ob die drei Ergebnisse denselben Kunden beschreiben. In einer Demo mit sauberen Beispieldaten funktioniert das. In der Produktion bricht es in der ersten Woche, wenn dieselbe Person unter drei verschiedenen E-Mail-Adressen auftaucht, weil sie ein Ticket aus ihrem privaten Postfach eröffnet hat, während im CRM ihre dienstliche Adresse steht. Dieser Leitfaden geht den Aufbau der Reihe nach durch: warum die drei Quellen sich widersprechen, warum Identität aufgelöst wird, bevor der Agent schlussfolgert, und wie Sie die aufgelöste Entität über einen Tool-Call und – zur Entwicklungszeit – über den Tilores-MCP-Server anbinden.
Warum lassen sich CRM, Support und Billing für einen KI-Agenten so schwer zusammenführen?
Jedes System wurde für eine andere Aufgabe gebaut, also hält jedes ein anderes Fragment derselben Person vor und schlüsselt es anders. Das CRM schlüsselt auf das, was ein Vertriebsmitarbeiter ins Kontaktformular getippt hat, meist eine dienstliche E-Mail-Adresse. Der Support-Desk schlüsselt auf die E-Mail-Adresse, die der Kunde ins Ticketformular eingetragen hat – oft eine private, wenn das Ticket vom Handy kam. Das Abrechnungssystem schlüsselt auf eine Abonnenten-ID, die ein Zahlungsdienstleister erzeugt hat, verknüpft mit einer Rechnungs-E-Mail-Adresse, die die Buchhaltung unabhängig von den beiden anderen angelegt hat. Keines der drei Systeme liegt falsch. Keines wurde je gebeten, mit den anderen übereinzustimmen.
So sieht das bei einer echten Kundin aus, einer Beratungskundin, die wir Sara Thompson nennen:
| System | Name im Datensatz | E-Mail im Datensatz | Verwendete Kennung |
|---|---|---|---|
| CRM | Sara Thompson | sara.thompson@northlakeconsulting.com | Kontakt CRM-58201 |
| Support-Desk | Sarah Thompson | sthompson@gmail.com | Ticket #48213 |
| Billing | Thompson, S. | billing@northlakeconsulting.com | Abonnent BILL-77410 |
Drei Schreibweisen eines Namens, drei E-Mail-Adressen, drei Kennungen, eine Person. Ein Agent, der diese Systeme unabhängig voneinander abfragt und dem Modell die Rohzeilen übergibt, verlangt von ihm zu erkennen, dass „Thompson, S.” in einem gemeinsam genutzten Rechnungspostfach dieselbe Person ist wie „Sarah Thompson”, die ein Ticket über ein privates Gmail-Konto eröffnet. Manchmal liegt das Modell richtig. Manchmal behandelt es sie als drei Kunden – oder führt die falschen zwei Personen zusammen, weil deren Namen sich zufällig ähneln.
Warum sollte Identität aufgelöst werden, bevor der Agent schlussfolgert – und nicht danach?
Die Aufgabe des Modells ist es, über Absichten zu schlussfolgern: zu verstehen, wonach der Kunde fragt, und zu entscheiden, was zu tun ist. Zu entscheiden, ob drei fragmentierte Datensätze dieselbe Person beschreiben, ist eine andere Aufgabe – ein Matching-Problem mit einer richtigen Antwort, und die sollte nicht an die Vorhersage des nächsten Tokens delegiert werden. Ein Sprachmodell hat keinen Zugriff auf die deterministische Regel, dass eine gemeinsame Steuernummer entscheidend ist, oder auf die probabilistische Gewichtung, dass eine übereinstimmende Telefonvorwahl plus ein ähnlicher Name mehr zählen sollte als ein ähnlicher Name allein. Es kann nur Muster im vorliegenden Text abgleichen – und genau so werden am Ende die falschen beiden Thompsons zusammengeführt.
Die Identität vor dem Schlussfolgern aufzulösen schließt außerdem eine Sicherheitslücke. Ein Agent, der raten darf, dass zwei Abrechnungsdatensätze zum selben Konto gehören, kann genauso gut falsch raten und die Rechnung eines Kunden im Support-Thread eines anderen anzeigen. Verlagern Sie die Match-Entscheidung in eine eigene Auflösungsschicht, die läuft, bevor der Agent die Daten sieht, dann besteht die Aufgabe des Agenten darin, eine bereits geprüfte Antwort abzurufen.
Was sollte der Agent tatsächlich erhalten: eine aufgelöste Entität statt Rohzeilen?
Der Unterschied zwischen einem kundenbewussten und einem fragilen Agenten liegt in einer einzigen Designentscheidung: Was gibt der Tool-Call zurück? Ein Tool, das drei Rohzeilen zurückgibt – eine je Quellsystem –, verlangt weiterhin vom Modell, das Matching selbst zu erledigen. Ein Tool, das eine aufgelöste Entität zurückgibt, bestehend aus den verknüpften Datensätzen, einem Konfidenzwert und den Verbindungen dazwischen, hat es bereits erledigt.
In Tilores entsteht diese aufgelöste Entität bei der Datenaufnahme, also wenn ein CRM-, Support- oder Billing-Datensatz erstmals eintrifft oder sich ändert – nicht erst, wenn der Agent eine Frage stellt. Der Tool-Call des Agenten ruft den aktuellen aufgelösten Kontext zur Abfragezeit über eine einzige GraphQL-API-Anfrage ab: Abruf einer bereits aufgelösten Antwort, nicht deren Zusammenbau im Moment der Anfrage – und durchgehend GraphQL, nie REST.
Wie binden Sie die aufgelöste Entität in den Agenten ein?
Sobald die aufgelöste Entität existiert, ist ihre Einbindung in einen Agenten ein Standardmuster für Tool-Calling: Sie definieren eine Funktion, die das Modell aufrufen kann, mit Schema und Beschreibung, und überlassen dem Modell die Entscheidung, wann es sie aufruft. Die Modellanbieter dokumentieren dieses Muster direkt, und die Funktionsbeschreibung entscheidet darüber, ob das Modell sie im richtigen Moment aufruft.
Der Zugriffsweg teilt sich in zwei Pfade. Zur Entwicklungszeit liefert Ihnen der Tilores-MCP-Server einen durchsuchbaren Tool-Katalog für den Entwurf der Abfrage auf die aufgelöste Entität, ohne dass Kundendaten durch ihn laufen – MCP ist eine offene Spezifikation zur Anbindung eines Modells an Tools und mittlerweile weit verbreitet. Zur Laufzeit ruft der produktive Agent für einen echten Kunden direkt die autorisierte GraphQL-API auf. Nutzen Sie MCP während des Entwurfs der Integration und die direkte API, sobald der Agent produktiv ist.
Schritt für Schritt: den kundenbewussten Agenten bauen
Schritt 1: Die drei Quellen registrieren und je eine Kennung wählen
Verbinden Sie CRM, Support-Desk und Abrechnungssystem mit Ihrer Ingestion-Pipeline – über einen geplanten Export, einen Webhook oder einen direkten API-Abruf. Halten Sie fest, welche Kennung jede Quelle heute tatsächlich anbietet. Warten Sie nicht darauf, dass sie sich auf einen gemeinsamen Schlüssel einigen. Das werden sie nicht, und genau für diesen Widerspruch gibt es die Auflösung:
| Quellsystem | Was es enthält | Seine Kennung | Fehlerbild ohne Auflösung |
|---|---|---|---|
| CRM | Deal-Historie, Account-Verantwortlicher, Firmendaten | Vom Vertrieb erfasste Kontakt-ID oder dienstliche E-Mail | Übersieht, ob der Kunde ein offenes Ticket oder ein Abrechnungsproblem hat |
| Support-Desk | Ticket-Verläufe, Problemhistorie, Zufriedenheitswerte | Die E-Mail-Adresse, die der Kunde im Formular dieser Sitzung eingetragen hat | Begrüßt einen bekannten Kunden als Fremden oder übersieht Tickets unter einer anderen Adresse |
| Billing | Abo-Status, Rechnungen, Zahlungsmittel | Abonnenten-ID des Zahlungsdienstleisters und eine unabhängig angelegte Rechnungs-E-Mail | Kann nicht bestätigen, ob das Konto hinter einem Ticket überfällig ist, oder zeigt Zahlungsdaten dem falschen Kontakt |
Schritt 2: Drei Matching-Verfahren konfigurieren, nicht eines
Richten Sie deterministisches Matching, Fuzzy Matching und probabilistisches Matching als drei eigenständige Verfahren ein, denn jedes erfasst eine andere Art von Überschneidung. Deterministisches Matching verknüpft Datensätze über eine exakte, verifizierte Kennung wie eine gemeinsame Steuernummer oder eine bestätigte E-Mail-Adresse. Fuzzy Matching vergleicht, wie ähnlich zwei Werte sind, sodass „Sara Thompson” und „Sarah Thompson” verknüpft werden können, obwohl die Zeichenketten voneinander abweichen. Probabilistisches Matching gewichtet partielle Hinweise über mehrere Felder hinweg, sodass eine übereinstimmende Firmendomain, ein ähnlicher Name und eine gemeinsame Telefonvorwahl zusammen mehr wiegen können als jedes einzelne Feld für sich. Eine Pipeline, die nur eines der drei Verfahren nutzt, übersieht Übereinstimmungen, die die anderen finden würden – oder zwingt alles durch eine spröde Exact-Match-Regel, die schon am ersten Tippfehler scheitert.
Schritt 3: Bei der Datenaufnahme auflösen und den Originaldatensatz behalten
Schicken Sie jeden neuen oder geänderten Datensatz durch die drei Matching-Verfahren, sobald er eintrifft, und verknüpfen Sie ihn sofort zu einer aufgelösten Entität – lange bevor ein Agent danach fragt. Die Datenaufnahme normalisiert für das Matching eine Arbeitskopie der Daten und bereinigt Unterschiede bei Groß- und Kleinschreibung, Zeichensetzung und Formatierung, doch der Originaldatensatz in der übermittelten Form bleibt stets daneben erhalten. Sie bauen eine eigene, aktuelle Sicht darauf, zu wem jedes Fragment gehört – Sie schreiben nicht das führende System eines anderen um.
Schritt 4: Die aufgelöste Entität über eine GraphQL-Abfrage bereitstellen
Entwerfen Sie eine einzige GraphQL-Abfrage, die die aufgelöste Entität zurückgibt: ihre verknüpften Datensätze, einen Entity-Score, einen Hit-Score als Maß für die Match-Stärke sowie die Kanten zwischen den Datensätzen. Genau diese Abfrage ruft das Tool Ihres Agenten zur Laufzeit auf; sie liefert den aktuellen aufgelösten Zustand und verlangt vom Aufrufer nie, die Matching-Logik selbst erneut auszuführen.
Schritt 5: Das Tool-Schema des Agenten um die aufgelöste Entität herum definieren
Schreiben Sie die Funktionsdefinition, die Ihr Modell aufrufen wird, so, dass sie eine unscharfe Kennung akzeptiert – einen Namen, ein E-Mail-Fragment, eine Ticketnummer – und das Objekt der aufgelösten Entität zurückgibt, nicht Rohzeilen aus drei Quellsystemen. Die Beschreibung im Schema sollte dem Modell unmissverständlich sagen, was es zurückbekommt: einen Kunden, dessen Konfidenzwert und die Systeme, die dazu beigetragen haben. Eine gut geschriebene Beschreibung sorgt dafür, dass das Modell das Tool im richtigen Moment aufruft, statt aus dem Gedächtnis oder aus einer veralteten Zeile im Kontext zu antworten.
Schritt 6: Das Tool in die Agenten-Laufzeit einbinden
Verbinden Sie das Tool über die Standard-Tool-Calling-Schnittstelle des Anbieters mit Ihrem Agenten-Framework. Nutzen Sie während der Entwicklung den MCP-Server, um das Schema zu erkunden und die Form Ihrer Abfrage zu validieren, ohne echte Kundendaten anzufassen. Richten Sie den produktiven Agenten für den Live-Traffic auf die autorisierte GraphQL-API, wo jeder Aufruf gegen den aktuellen Stand Ihrer CRM-, Support- und Billing-Daten aufgelöst wird.
Schritt 7: Mehrdeutigkeiten und Treffer mit geringer Konfidenz zur Laufzeit behandeln
Legen Sie einen expliziten Schwellenwert für die Konfidenz fest und entscheiden Sie vorab, was der Agent tut, wenn eine aufgelöste Entität darunter liegt. Die Latte für „Wie ist der Status meines letzten Tickets?” ist nicht dieselbe wie für „Dieses Konto schließen.” Unterhalb des Schwellenwerts sollte der Agent nicht raten: Lassen Sie ihn eine klärende Rückfrage stellen, etwa nach den letzten vier Ziffern einer Telefonnummer, an einen Menschen eskalieren oder nur mit dem antworten, was er der einen Quelle mit der höchsten Konfidenz zuordnen kann – statt eine zusammengeführte Sicht zu präsentieren, für die er nicht einstehen kann.
Schritt 8: Den Agenten so absichern, dass er nie selbst Datensätze zusammenführt
Egal wie überzeugt das Modell klingt: Es darf nie ein Tool bekommen, das eine Merge-Entscheidung ins CRM, den Support-Desk oder das Abrechnungssystem zurückschreibt. Das Zusammenführen ist eine Auflösungsentscheidung, getroffen von der deterministischen, unscharfen und probabilistischen Pipeline anhand definierter Regeln und Schwellenwerte – kein Ermessensspielraum für ein Sprachmodell mitten im Gespräch. Wenn zwei Kandidaten mit geringer Konfidenz so aussehen, als gehörten sie zusammen, leiten Sie diese Entscheidung stattdessen in eine Warteschlange zur menschlichen Prüfung.
Schritt 9: Gegen bekannte Duplikat-Fixtures testen und jede Entscheidung für das Audit protokollieren
Bauen Sie ein Fixture-Set aus Datensatzpaaren, von denen Sie bereits wissen, ob sie verknüpft werden sollen oder nicht, gewonnen aus echten historischen Support-Eskalationen, und lassen Sie es durch die Pipeline laufen, bevor Sie das Tool live schalten – mit Precision und Recall als Regressionshürde bei jeder Änderung. Eine Pipeline, die auf synthetischen Daten gut abschneidet, kann an den unordentlichen Duplikaten scheitern, die Ihr Unternehmen tatsächlich angesammelt hat; genau deshalb müssen die Fixtures echt sein. Protokollieren Sie im Livebetrieb, welche Datensätze in jede aufgelöste Entität eingeflossen sind, welches Verfahren gegriffen hat, welchen Konfidenzwert es gab und ob ein Mensch geprüft hat – getrennt vom Gesprächsverlauf. Schwellenwertbänder und Auditnachweise behandeln wir in Konfidenzwerte, Schwellenwerte und Audit-Trails.
Wo steht das neben Ihrem CRM, MDM und Data Warehouse?
Die Identitätsschicht eines kundenbewussten Agenten ersetzt weder Ihr CRM noch Ihre MDM-Plattform, Ihre CDP oder Ihr Data Warehouse. Sie steht daneben, löst fragmentierte Datensätze zu einer aktuellen Entität auf und liefert diesen Kontext an alles, was sie aufruft: einen KI-Agenten, eine Support-Konsole oder einen Reporting-Job. Ihr CRM verantwortet weiterhin die Vertriebsbeziehung, Ihr MDM weiterhin den Golden Record. Die Aufgabe der Auflösungsschicht ist enger gefasst: jedem Aufrufer, auch einem Agenten mitten im Gespräch, eine schnelle, mit einem Konfidenzwert versehene Antwort auf die Frage zu geben, welche Datensätze zu dieser Person gehören. Sie wägen stattdessen zwischen einer Vektordatenbank und MDM ab? Wir vergleichen die Optionen in Entity-Resolution-API vs. Vektordatenbank, MDM und CDP.
Was ist die Erkenntnis für die Umsetzung?
Bauen Sie die Identitätsschicht vor dem Agenten. Lösen Sie CRM-, Support- und Billing-Datensätze bei der Datenaufnahme mit drei eigenständigen Matching-Verfahren auf, stellen Sie das Ergebnis über eine GraphQL-Abfrage bereit, die der Agent zur Abfragezeit aufruft, und halten Sie die Merge-Entscheidung aus den Händen des Modells. Testen Sie gegen Fixtures, denen Sie vertrauen, protokollieren Sie jede Entscheidung und binden Sie dann das Tool in die Laufzeit ein. So gebaut, beantwortet der Agent die Frage „Hat dieser Kunde eine offene Rechnung?” schon beim ersten Mal richtig – selbst wenn sie von einer E-Mail-Adresse kommt, die das CRM noch nie gesehen hat.
FAQ
Was ist ein kundenbewusster KI-Agent?
Ein Agent, der auf Basis einer einzigen aufgelösten Kundensicht über alle Systeme hinweg handelt, mit denen er arbeitet, statt einen CRM-Datensatz, ein Support-Ticket und ein Abrechnungskonto als drei unzusammenhängende Kontextfragmente zu behandeln, die er selbst in Einklang bringen muss.
Brauche ich deterministisches, unscharfes und probabilistisches Matching, oder reicht ein Verfahren?
Alle drei. Sie erfassen unterschiedliche Überschneidungen: deterministisch über exakte, verifizierte Kennungen; unscharf über ähnliche Werte wie Namensvarianten; probabilistisch über partielle Hinweise mehrerer Felder, wenn keines allein entscheidend ist. Ein Verfahren allein übersieht Übereinstimmungen, die die anderen finden würden.
Sollte die Identity Resolution im Agenten oder davor stattfinden?
Davor. Lösen Sie Datensätze bei der Datenaufnahme auf und lassen Sie den Agenten die aktuelle aufgelöste Entität zur Abfragezeit über einen einzigen GraphQL-Aufruf abrufen. Identität mitten im Gespräch aufzulösen macht aus einem Matching-Problem mit belastbarer Antwort eine Vermutung.
Was ist hier der Unterschied zwischen dem MCP-Server und der GraphQL-API?
Nutzen Sie MCP zur Entwicklungszeit, um das Schema zu erkunden und Ihre Abfrage zu entwerfen, ohne dass Kundendaten durch ihn laufen. Nutzen Sie die autorisierte GraphQL-API zur Laufzeit, wenn der produktive Agent die aufgelöste Entität für ein echtes Gespräch braucht.
Was sollte der Agent bei geringer Konfidenz tun?
Das hängt vom Risiko ab. Bei einer risikoarmen Frage kann er allein auf Basis der Quelle mit der höchsten Konfidenz antworten und das auch sagen. Bei allem, was ein Konto verändert oder sensible Daten offenlegt, sollte er eine klärende Rückfrage stellen oder an einen Menschen eskalieren.
Ersetzt das mein CRM oder meine MDM-Plattform?
Nein. Die Auflösungsschicht steht neben Ihrem CRM, Ihrem MDM, Ihrer CDP und Ihrem Data Warehouse und versorgt sie mit aufgelöstem Kontext. Sie übernimmt nicht die Eigentümer- oder Governance-Rolle, die diese Systeme bereits innehaben.
Wie teste ich einen kundenbewussten Agenten vor dem Start, und ist die Schnittstelle REST oder GraphQL?
Bauen Sie ein Fixture-Set aus Datensatzpaaren, von denen Sie bereits wissen, ob sie verknüpft werden sollen oder nicht, und lassen Sie es durch die Pipeline laufen, bevor Sie das Tool live schalten – mit Precision und Recall als Regressionshürde. Die Schnittstelle ist durchgehend GraphQL; einen REST-Endpunkt gibt es nicht.
Sehen Sie, was aufgelöste Entitätsdaten für Ihr Unternehmen — und Ihre KI — leisten.