enaio® kairos dashlet (Beta)
The enaio® kairos dashlet is not part of a standard installation. It can only be integrated as part of projects. Please get in touch with your point of contact for OPTIMAL SYSTEMS GmbH if you have any questions.
Dashlets are not yet available at this time in enaio® mobile and, in general, are also not available on mobile devices; enaio® webclient is also not yet available on mobile devices.
Functions
The enaio® kairos dashlet enables users to have invoice-specific documents automatically classified and index data extracted.
The documents added to the enaio® kairos dashlet are analyzed using artificial intelligence. enaio® kairos recognizes both the document type using predefined categories (for example, invoice) and basic data that is extracted as index data (for example, sender, IBAN, invoice number). All data can be edited manually. The documents can then be created in enaio®.
enaio® kairos and LLM
A distinction is made between two types of AI enhancement in the dashlet:
-
enaio® kairos: Use of a customer-specific trained model that uses predefined document types.
-
LLM: Use of an untrained, private large language model (no exchange with publicly available AI solutions), which attempts to assign suitable data based on the object definition of enaio®.
You can configure whether users can use both models or just one of them. Users can decide which of the available models they want to use for document classification and index data extraction.
Supported File Formats
In addition to PDF documents, Microsoft Office formats are also supported. All formats that support both 'text rendition' and 'pdf rendition' in the following list can be created with the dashlet: Supported formats
Configuration
enaio® kairos dashlet is configured using the configuration files ai-connector-prod.yml and restdashlet-prod.yml located in the \config directory of enaio® service-manager.
If configuration files are customized, you need to restart the services.
Object Definition
An object definition file, which can be used as a template for configuring the document types in enaio® editor, is available for creating documents via enaio® kairos dashlet.
'ai-connector' service – ai-connector-prod.yml
The configuration data required to access services on kairos AI cloud services is available on request from OPTIMAL SYSTEMS.
Example:
ai-connector:
ai-cloud:
url: url #ai cloud service instance url
username: username #ai cloud service username
password: password #ai cloud service password
tenant: tenant #ai cloud service tenant
object:
type: appAiinvoice:aiDocument #yM object type where we want to save our document
Parameter:
ai-connector.ai-cloud.url | URL used to access kairos AI cloud services |
ai-connector.ai-cloud.username | User name |
ai-connector.ai-cloud.password | Password |
ai-connector.ai-cloud.tenant | Tenant |
ai-connector.ai-cloud.object.type |
Object type for saving in kairos AI cloud services The default value is set to appAiinvoice:aiDocument. |
'restdashlet' service – restdashlet-prod.yml
The enaio® kairos and LLM models are activated by configuring the 'restdashlet' service, and the assignment of document types and data to fields of the document types is configured.
The restdashlet-prod.yml configuration file needs to be created in the \config directory of enaio® service-manager.
The following example shows a configuration file that has been adapted to the object definition provided and it can be used as a template.

ai:
kairos:
llmEnabled: true
kairosEnabled: true
mapping:
llm:
- object-type-internal-name: "Angebot"
classification-class: "Angebot"
- object-type-internal-name: "kairosRechnung"
classification-class: "Rechnung"
- object-type-internal-name: "order"
classification-class: "Bestellung"
- object-type-internal-name: "deliveryNotice"
classification-class: "Lieferschein"
- object-type-internal-name: "Protokoll"
classification-class: "Protokoll"
- object-type-internal-name: "contract"
classification-class: "Vertrag"
- object-type-internal-name: "presentation"
classification-class: "Präsentation"
custom:
"Angebot":
schemaObjectTypeId: "offer"
object-type-internal-name: "Angebot"
field-mapping:
"AngebotsNr": "angebots_nr"
"Strasse": "strasse"
"PLZ": "PLZ"
"Angebotsdatum": "angebotsdatum"
"Ort": "Ort"
"Rechnung":
schemaObjectTypeId: "invoice"
object-type-internal-name: "kairosRechnung"
field-mapping:
"[appAIInvoice:aiReceivingCompanyName]": "receiving_company_name"
"[appAIInvoice:aiIssuingCompanyName]": "IssuingCompanyName"
"[appAIInvoice:aiAmount]": "Amount"
"[appAIInvoice:aiInvoiceNumber]": "InvoiceNumber"
"[appAIInvoice:aiIssuedDate]": "Issueddate"
"[appAIInvoice:aiBaseAmount]": "BaseAmount"
"[appAIInvoice:aiReceivingCompanyTaxNumber]": "ReceivingCompanyTaxNumber"
"[appAIInvoice:aiIssuingCompanyTaxNumber]": "IssuingCompanyTaxNumber"
"[appAIInvoice:aiTaxAmount]": "TaxAmount"
"[appAIInvoice:aiTaxPercentage]": "TaxPercentage"
"[appAIInvoice:aiIban]": "IBAN"
"[appAIInvoice:aiCurrency]": "Currency"
"[appAIInvoice:aiReverseCharge]": "ReverseCharge"
"[appAIInvoice:aiSupplyDate]": "SupplyDate"
"[appAIInvoice:aiTaxExempt]": "TaxExempt"
"[appAIInvoice:aiSteuerNumber]": "SteuerNumber"
"[appAIInvoice:aiSwiftBicNumber]": "SwiftBICNumber"
"Bestellung":
object-type-internal-name: "Bestellung"
schemaObjectTypeId: "order"
field-mapping:
"order_Reference_Number": "enaio_order_Reference_Number"
"order_receiver_address": "enaio_order_receiver_address"
"order_receiver_name": "enaio_order_receiver_name"
"order_issuer_address": "enaio_ORDER_ISSUER_ADRESS"
"order_issuer_name": "enaio_order_issuer_name"
"order_date": "enaio_order_date"
"order_total_amount": "enaio_order_total_amount"
"Lieferschein":
object-type-internal-name: "Lieferschein"
schemaObjectTypeId: "deliveryNotice"
field-mapping:
"Lieferschein_datum": "enaio_Lieferschein_datum"
"Lieferschein_nummer": "enaio_Lieferschein_nummer"
"[Empfänger]": "enaio_Empfaenger"
"Absender": "enaio_Absender"
"Protokoll":
object-type-internal-name: "Protokoll"
"[VE-Vertrag]":
object-type-internal-name: "contract"
schemaObjectTypeId: "contract"
field-mapping:
"Contract_Reference_Number": "enaio_Contract_Reference_Number"
"Contract_Version_Number": "enaio_Contract_Version_Number"
"Contract_Party_1": "enaio_Contract_Party_1"
"Contract_Party_2": "enaio_Contract_Party_2"
"Contract_Start_Date": "enaio_Contract_Start_Date"
"Contract_End_Date": "enaio_Contract_End_Date"
"Contract_Notice_Period": "enaio_Contract_Notice_Period"
"[Präsentation]":
object-type-internal-name: "presentation"
Configuring LLM
The LLM model is activated by setting the value to true via the ai.kairos.llmEnabled parameter.
The document types to which extracted files can be assigned are specified.
Example:
ai:
kairos:
llmEnabled: true
kairosEnabled: true
mapping:
llm:
- object-type-internal-name: "order"
classification-class: "Bestellung"
The internal name of the document types is specified. The classification-class parameter is also used to specify a term that is used in addition to the internal name for classification. Use the neutral or language-specific name of the document type, for example.
Configuring enaio® kairos
The enaio® kairos model is activated by setting the value to true via the ai.kairos.kairosEnabled parameter.
A classification model, an extraction model, and a document type are specified in each case. Data from the extraction model is assigned to the fields of the document type.
Classification models and extraction models can be adapted and extended in the project.
Example:
ai:
kairos:
llmEnabled: true
kairosEnabled: true
mapping:
custom:
"Angebot":
schemaObjectTypeId: "offer"
object-type-internal-name: "Angebot"
field-mapping:
"AngebotsNr": "angebots_nr"
"Strasse": "strasse"
"PLZ": "PLZ"
"Angebotsdatum": "angebotsdatum"
"Ort": "Ort"
Parameter:
Parameter | Value |
---|---|
ai.kairos.mapping.custom |
Classification model Example: "Offer" |
schemaObjectTypeId |
Extraction model Example: "offer" |
object-type-internal-name |
Document type, internal name Example: "Offer" |
field-mapping |
Configuration section for the assignment of extracted data to fields of the document type. Example: "OfferNo": "offer_no" |
enaio® kairos: Classification and Extraction
Classification models and extraction models can be adapted and extended in the project. An extraction model is currently assigned to each classification model.
Classification models | Extraction model |
---|---|
Offer | offer |
Invoice | invoice |
Order | order |
Delivery notice | deliveryNotice |
[VE contract] | contract |
Log | protocol |
[Presentation] | presentation |
Configuration data with umlauts must be enclosed in brackets.
enaio® kairos: Field Mappings
Extraction data is assigned row by row to fields of the document type in the field-mapping configuration section.
The extraction data of the extraction models can be shown via the /api/extraction/properties endpoint of the 'ai-connector' service.
Example of the 'offer' extraction model:
"objectTypeId": "offer",
"properties": [
"AngebotsNr",
"Strasse",
"PLZ",
"Angebotsdatum",
"Ort"
]
Mapping example:
field-mapping:
"OfferNo": "offer_no"
The offer_no document type field is assigned to the OfferNo extraction value. Document type fields are specified via the internal name.
Configuration data with umlauts must be enclosed in brackets.
Integrating the Dashlet
The enaio® kairos dashlet can be integrated in enaio® client, enaio® webclient, and enaio® webclient as a desktop application.
-
enaio® client
You integrate it using enaio® enterprise-manager.
Home URL: http://<service-manager-ip>/restdashlet/kairos?sessionguid={sessionguid}&locale={localename}
-
enaio® webclient and enaio® webclient as a desktop application
You integrate it using the dashlet.json file.
Example:
[
{
"objectTypes": "*",
"platforms": [
"web",
"desktop_app",
],
"uri": "http://<service-manager-ip>/restdashlet/kairos",
"title_EN": "Kairos",
"title_DE": "Kairos",
"title_FR": "Kairos"
}
]