Skip to content

Data flow: Where does a request go?

  1. Data is stored in Germany. Processing by a model takes place at the respective model provider.
  2. The organization controls which models are available. Administrators decide which providers and models may be used. Users can only select from these models.
  3. Model processing remains in Germany or the EU. Models provided through Microsoft Azure and AWS also run exclusively in EU regions. Content is not transferred to the USA.
flowchart TB
    user["User<br/>in the browser"]

    subgraph germany["German data center"]
        core["Ayunis Core<br/>application"]
        anonymization["Anonymization<br/>local model"]
        database[("Database<br/>chats, accounts, documents<br/>and settings")]
        approval{"Admin approval"}

        core <--> |"mask and restore"| anonymization
        core <--> |"store and retrieve"| database
        core <--> approval
    end

    subgraph eu["Model providers in Germany or the EU"]
        model["Approved model<br/>processes without storage"]
        examples["e.g. StackIT, Mistral,<br/>Microsoft Azure or AWS"]
        model --- examples
    end

    user <--> |"request and response<br/>encrypted"| core
    approval <--> |"chat history and response"| model

    style germany fill:#f0f7f3,stroke:#1c6049,color:#17211f,stroke-width:2px;
    style eu fill:#fff7e8,stroke:#a8681a,color:#17211f,stroke-width:2px;
    classDef local fill:#e2ede7,stroke:#1c6049,color:#17211f,stroke-width:2px;
    classDef external fill:#f6ecdb,stroke:#a8681a,color:#17211f,stroke-width:2px;
    classDef neutral fill:#f7f8f5,stroke:#94a29b,color:#17211f;
    class core,anonymization,database,approval local;
    class model,examples external;
    class user neutral;

Green means that the data is held on Ayunis infrastructure in Germany. Yellow means that a model provider temporarily processes data in Germany or the EU.

flowchart TB
    input["User<br/>asks a question"]
    core["Ayunis Core<br/>stores the chat and<br/>checks model approval"]
    provider["Model provider<br/>generates the response<br/>without storage"]
    result["Ayunis Core<br/>stores and displays<br/>the response"]
    output["User<br/>reads or edits<br/>the response"]

    input --> |"question"| core
    core --> |"existing chat history"| provider
    provider --> |"response"| result
    result --> |"display"| output

    classDef local fill:#e2ede7,stroke:#1c6049,color:#17211f,stroke-width:2px;
    classDef external fill:#f6ecdb,stroke:#a8681a,color:#17211f,stroke-width:2px;
    classDef neutral fill:#f7f8f5,stroke:#94a29b,color:#17211f;
    class core,result local;
    class provider external;
    class input,output neutral;

With every new message, the language model receives the existing chat history, not just the latest sentence. This enables it to understand the context of the conversation. The chat itself remains stored at Ayunis in Germany; the model provider only processes the history to generate the response.

flowchart TB
    input["User<br/>enters personal data"]
    anonymization["Local anonymization<br/>detects and replaces<br/>personal data"]
    core["Ayunis Core<br/>sends only the<br/>masked text"]
    provider["Model provider<br/>sees placeholders only"]
    restore["Ayunis Core<br/>restores the<br/>original values"]
    output["User<br/>reads the response"]

    input --> |"plain text"| anonymization
    anonymization --> |"masked text"| core
    core --> |"placeholders"| provider
    provider --> |"response"| restore
    restore --> |"readable response"| output

    classDef local fill:#e2ede7,stroke:#1c6049,color:#17211f,stroke-width:2px;
    classDef external fill:#f6ecdb,stroke:#a8681a,color:#17211f,stroke-width:2px;
    classDef neutral fill:#f7f8f5,stroke:#94a29b,color:#17211f;
    class anonymization,core,restore local;
    class provider external;
    class input,output neutral;

Anonymization runs entirely on Ayunis servers. A local model detects information such as names, addresses, telephone numbers, email addresses, dates of birth and reference numbers, and replaces it with placeholders before transmission. The original values are restored in the response and highlighted in color.

Anonymous mode is selected when starting a new chat and remains active for that chat. Administrators can enforce it for individual models and define exceptions for certain data types.

flowchart TB
    subgraph upload["Once when a document is added"]
        document["Document or website"]
        extraction["Ayunis Core<br/>stores the content<br/>and extracts the text"]
        embedding["Embedding model<br/>prepares the text<br/>for search"]
        index[("Search index<br/>stored in Germany")]

        document --> extraction
        extraction --> |"text"| embedding
        embedding --> |"search data"| index
    end

    subgraph question["For every question"]
        query["User's question"]
        search["Embedding model<br/>prepares the question<br/>for search"]
        matches["Ayunis Core<br/>finds relevant<br/>passages"]
        language["Language model<br/>sees the question and<br/>relevant excerpts"]
        answer["Referenced answer<br/>from the organization's<br/>own documents"]

        query --> |"question text"| search
        search --> matches
        matches --> |"relevant excerpts only"| language
        language --> answer
    end

    index -.-> matches

    style upload fill:#f7f8f5,stroke:#94a29b,color:#17211f;
    style question fill:#f7f8f5,stroke:#94a29b,color:#17211f;
    classDef local fill:#e2ede7,stroke:#1c6049,color:#17211f,stroke-width:2px;
    classDef external fill:#f6ecdb,stroke:#a8681a,color:#17211f,stroke-width:2px;
    classDef neutral fill:#f7f8f5,stroke:#94a29b,color:#17211f;
    class extraction,index,matches local;
    class embedding,search,language external;
    class document,query,answer neutral;

The complete document is not sent to the language model. Ayunis Core first finds the passages relevant to the question. Only those excerpts and the question are then transmitted to the language model.

The embedding model is required both when a document is added and for each subsequent question. This means the question text is also transmitted to the approved embedding model when searching. Document uploads and document analysis are unavailable without an approved embedding model.

SettingWho controls it?Effect
Model approvalAdministratorsNo model is active immediately after setup. A provider and individual models only become available after approval. Chat requires a language model, while document analysis requires an embedding model. If a model is disabled, existing conversations use another approved model.
Anonymous modeUsers when starting a chat; enforceable by administratorsPersonal data is detected on Ayunis infrastructure and replaced with placeholders before the model call.
Knowledge collectionTeam or skillDocuments and websites are prepared for search at Ayunis. Only relevant passages are sent to the language model; the question text is also processed by the embedding model.
External integration (MCP)AdministratorsConnected specialist systems, such as document management or council information systems, receive the data required for the respective call. This creates an additional data flow to the connected system.

For more answers, see the data protection FAQ.

  • Storage in Germany does not mean that every processing step takes place only in Germany. Some models operate in other EU countries, such as Mistral in France.
  • Anonymous mode cannot guarantee detection of every piece of personal information. It substantially reduces risk but does not replace organizational rules or careful review.
  • Data flows from external integrations must be assessed individually. The data transmitted to a specialist system depends on the respective integration and its purpose.