Customer Recognition
Customer Identification Process
How Enneo identifies customers and contracts from emails, chats, and phone calls
For every incoming ticket, regardless of the channel, Enneo performs a customer identification. The aim is to find the corresponding contract and customer in your primary data management system (ERP/CRM) and to authenticate the identification according to the rules stored before further processing or automatic processing. Enneo is not the leading system itself but retrieves the data in real time via user code from your source system.
Process for Emails and Letters
Analyzing the message
Enneo analyzes the message text (as well as attachments, if read by OCR).
Deterministic Pre-Identification (optional)
Before the LLM, Enneo tries to find the contract directly using inexpensive, deterministic methods. If such a contractId is found and the ERP APIs provide valid contract and customer data, the LLM-based feature extraction (step 3) is skipped.
Extracting Features with LLM
From the message, the AI extracts all parameters that are configured under Settings → Integration into Systems → Customer and Contract Search → Search Parameters for Customer Identification — e.g., contract number, customer number, name, address, meter number. Only parameters that are explicitly mentioned in the message are passed on.
Tip
The more characteristics you configure here and provide in the source system, the more precise the customer recognition works.
Searching for Contract by feature
The identified parameters are passed to the User-Code for the feature-based search (searchContractByFieldsExecutor).
The user code is allowed to return a maximum of one contract (or none at all). A list with multiple hits is not allowed — the selection of the most likely contract must already be done in the user code.
Reloading Contract and Customer Data
As soon as the feature-based search has returned a contractId and a customerId — both are mandatory —, Enneo reloads the complete master data:
- With the
contractId, thesearchContractByIdExecutorfunction is called. - With the
customerId, thesearchCustomerByIdExecutorfunction is called. Enneo checks that the loaded contract actually belongs to thiscustomerId.
Both calls run in parallel, so the additional latency remains minimal. All fields returned here are subsequently provided to the LLM as context and are therefore available for the service response, AI agents, and the legitimization check.
Tip
The results of these calls are cached. The setting ERP cache duration (in minutes) allows you to control how long contracts and customer data remain in the cache before they are reloaded fresh from the source system. A value of 0 completely disables the cache.
Checking Plausibility & Legitimation
Based on the data reloaded, Enneo checks whether the features mentioned in the message actually match the found contract/customer (e.g., sender email = contract email, postcode matches). The result is the Legitimation Level — Details see Legitimating Customers.
Presentation & Processing
- Legitimized (Level ≥ 20): Enneo displays the contract to the clerk and can — if configured — automatically process the request (automatic execution of AI agents without human approval).
- Identified, but not legitimized (Level 10–19): Enneo displays the contract as a suggestion with a warning notice. Automatic processing does not occur; the clerk checks manually.
- Not recognized (Level 0): No contract is assigned.
Process for Chat and Voicebot
The process is largely identical to email processing. The difference lies in when and how features are collected.
Actively Inquiring About Features
In the Chatbot/Voicebot prompt, it is configured which data the bot actively asks the customer for (e.g., "Please give me your contract number and postcode"). Which parameters are used for identification is defined in the Chatbot/Voicebot configuration (Authentication Instructions).
Search Contract, Load Data, Legitimate
As soon as the necessary features are available, the rest runs exactly like for emails: Steps 4-6 from above — i.e. searchContractByFieldsExecutor, followed by searchContractByIdExecutor and searchCustomerByIdExecutor, then plausibility check and legitimation.
Autonomous execution only from Level ≥ 20
In the chat/voice bot, every customer with a legitimation level < 20 is treated as a non-identified customer. The bot does not execute any customer-related actions, but asks the customer again for the missing features until the threshold is reached.
Manual Search by Clerk
Regardless of the automatic customer identification, clerks can always find contracts manually via the search field in the UI. For this, Enneo calls up the user code for the free-text search, which should support search requests by name, email, or other relevant fields.