# About Lumi AI

## Introduction <a href="#what-is-lumi-ai" id="what-is-lumi-ai"></a>

Lumi is an enterprise analytics platform that uses a network of AI agents to empower users with the ability to instantly extract insights and generate custom reports using plain language.

By eliminating manual analytical processes, Lumi allows organizations to:

* **Boost productivity.** Make better, faster data-driven decisions.
* **Uncover hidden value.** Pinpoint operational inefficiencies and untapped potential within seconds.
* **Free up technical teams.** Redirect focus from ad-hoc requests to strategic initiatives.

{% embed url="<https://youtu.be/bfe4EY_9o7k>" %}

## How it Works <a href="#how-does-it-work" id="how-does-it-work"></a>

In short, Lumi instantly converts plain language prompts into the code (SQL/ Python) needed to extract desired insights.

1. User asks question in plain language.
2. The most relevant context needed to answer the question is retrieved from the knowledge base.
3. Lumi is asked to generate the code needed to answer the question.
4. The generated code is executed in the client's network and rendered results are sent back to the user.

<figure><img src="/files/xhAGatplMgbdWhE1cdTY" alt=""><figcaption></figcaption></figure>


# Quick Start

Using Lumi AI starts with defining your first Knowledge Base -- the heart and source of truth for your requests throughout the application.

Creating a Knowledge Base involves:

## [1. Defining a connection to a source system](/setting-up/1.-connect)

Lumi AI requires a connection to load definitions and ultimately run queries against a target.

## [2. Configuring relevant context](/setting-up/configure-knowledge-base)

This is where you define tables, their fields, joins/relationships, and all other knowledge like metrics, aliases, and business details related to the Knowledge Base.

## [3. Inviting users and managing access](/setting-up/invite-users)

Once configured, invite others to use the newly built Knowledge Base and ask start asking questions, or to co-contribute/maintain it as it evolves.

***

With your first Knowledge Base complete, you're then ready to ask questions in Chat and build away in Boards! :tada:


# 1. Connect

Lumi AI draws insights from the data it is connected to. This can be a source system storing the current live record-of-fact serving operations, or a data warehouse housing a managed collection of data for business intelligence. Lumi AI can connect to a variety of such systems to support visibility as needed. For a full list and details, see [Source System Integrations](/product-features/source-system-integrations).

## Setting up a Direct Connection

The simplest method of connection is a direct connection, which provides a means of communication directly between Lumi AI and your source system.

Defining the connection involves selecting the appropriate system and then entering the required properties. These will vary by system but typically include details such as `host`, `port`, `username`, `password`, and `database`.

<figure><img src="/files/m3g7cOuPjFYhuJQgxt0K" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
For advanced configuration for your network or connection, please see [Network Configuration](/using-lumi/network-configuration).\
\
The Direct Connection method is the simplest approach to connecting to a source system, but if more advanced controls and precision over access and security are required, please review documentation on Lumi AI's [Data Gateway](/product-features/data-gateway).
{% endhint %}


# 2. Configure

Once a connection is successfully established, the next step is to define the semantic layer or map that provides context for prompts and queries.

The [Knowledge Base](/product-features/knowledge-base) contains useful information about:

* Schemas, in the form of tables and fields, and their abstraction (see further notes)
* Data model definitions, as relationships between the tables defined
* Business terminology and its details
* Business metrics/KPIs and their calculations
* ... and more...

See our additional guides for help getting started:

{% content-ref url="/pages/xtyz0rxIKVY7VHYVP24b" %}
[Configuration Tips](/setting-up/configure-knowledge-base/configuration-tips)
{% endcontent-ref %}

{% content-ref url="/pages/aL24tY0p3HSuI3JFY5SM" %}
[Add Tables & Fields](/setting-up/configure-knowledge-base/add-tables-and-fields)
{% endcontent-ref %}

{% content-ref url="/pages/BXAOFniaXj3yFRxZAtBp" %}
[Add Business Context](/setting-up/configure-knowledge-base/add-business-context)
{% endcontent-ref %}

{% content-ref url="/pages/oaObDkl1XQ78a2erbRX2" %}
[Advanced Configuration](/setting-up/configure-knowledge-base/advanced-configuration)
{% endcontent-ref %}


# Configuration Tips

## Recommended Approach to Configure Knowledge Base

#### Incremental Development

The best, most proven approach is to take an incremental development approach where only necessary fields are added for specific insight group, context is applied, tested and iterated upon.

<mark style="background-color:yellow;">Add Fields -> Contextualize -> Test -> Validate -> Iterate</mark>

This top down approach is superior to the bottom up, "add all and prune" approach as it leads to unused artifacts, confusion, and degraded performance.

We recommend making small incremental context changes, testing and tweaking as needed. This incremental approach ensures greater confidence in the context that you're deploying into production.

## Overall Knowledge Base Best Practices

{% hint style="danger" %}
Enterprise customers can connect multiple tables to the knowledge base, but we recommend limiting it to **no more than 10 tables** for optimal performance.
{% endhint %}

1. **Clarity and Precision:**
   * **Clear Definitions:** Use clear, concise language to define terms and explain methods. Avoid ambiguity to ensure users can easily understand and use the knowledge base.
   * **Avoid Ambiguity:** Ensure that instructions and explanations are precise and unambiguous to avoid misinterpretation when giving Lumi context.
   * **Relevant Terminology:** Add business context for domain-specific terms that are familiar to your audience, ensuring the knowledge base is relevant.
   * **Avoid SQL Keywords:** Ensure that table names and other elements do not use reserved SQL keywords or database-specific terms to avoid technical issues.
2. **Consistency:**
   * **Uniform Terminology:** Use consistent terminology and definitions across all entries in the knowledge base to prevent confusion.
   * **Consistent Naming Conventions:** Decide on naming conventions early (e.g., snake\_case) and apply them uniformly.
   * **Descriptive Names:** Use descriptive names for fields that clearly reflect the content and purpose. This provides more context for Lumi
   * **Avoid Abbreviations:** Unless universally understood, avoid abbreviations and acronyms to prevent confusion.
3. **Validation and Testing:**
   * **Test for Accuracy:** After adding new information, test it to ensure it is accurately understood and applied by users. Adjust based on feedback and outcomes.


# Add Tables & Fields

## Define Semantic Layer <a href="#id-1-define-semantic-layer" id="id-1-define-semantic-layer"></a>

Select and define the tables and fields users can query.

{% hint style="warning" %}
Lumi can only formulate queries that pull from selected tables and fields.
{% endhint %}

{% embed url="<https://www.youtube.com/watch?v=fmEIyLhazzM>" %}

### Step-by-Step Guide <a href="#step-by-step-guide" id="step-by-step-guide"></a>

1. Navigate to the 'Tables' tab
2. Ensure you are in Edit Mode
3. Select the tables you wish to expose to Lumi from the dropdown list.
4. Once a table is selected, provide a table name and add context describing what the table is about. Most databases tend to use an unusual table naming convention. We highly recommend you re-name the table into a more human-readable format. This will drastically improve Lumi’s ability to generate accurate code. For more details, refer to the best practices below.
5. For each selected table, use the drop down to select the fields you wish to expose to Lumi.
6. Once a field is selected, provide a semantic name and add context describing what the field is about. Most databases tend to use an unusual field naming convention. We highly recommend you re-name the field into a more human-readable format. This will drastically improve Lumi’s ability to generate accurate code. For more details, refer to the best practices below.

<figure><img src="/files/SsVxyfwWC4vM80xbOBIQ" alt=""><figcaption></figcaption></figure>

### Table Descriptions Best Practices <a href="#table-descriptions-best-practices" id="table-descriptions-best-practices"></a>

* **Use Intuitive Names.** Names should clearly reflect the table's content and purpose. Use descriptive names that convey the table's function or the type of data it holds, making it intuitive for users to understand what data they will find in each table.
* **Be Consistent**. Consistency in naming conventions is key. Decide on specific naming conventions early in the design process and apply them uniformly across all tables. We recommend following `snake_case` naming convention.
* **Plural vs. Singular Names.** Decide whether to use singular or plural names for your tables and remain consistent. There's debate over which is best, but the most important thing is to choose one approach and stick with it throughout your schema.
* **Use Domain-Specific Terms.** Leverage domain-specific terminology when naming tables, especially in the semantic layer. This ensures that the names are relevant and recognizable to the end-users, who are often domain experts but not necessarily tech-savvy.
* **Avoid Abbreviations and Acronyms.** Unless an abbreviation or acronym is well-known and universally understood by all potential users, it's best to avoid them. They can create confusion and reduce the readability of your schema.
* **Avoid Using Reserved Keywords**. Stay away from reserved SQL keywords (e.g., `user`) and database-specific terms for table names.
* **Prioritize Clarity Over Brevity.** While it's important to avoid unnecessarily long names, clarity should never be sacrificed for the sake of brevity. The name should be as long as necessary to ensure it is understandable.

### Field Descriptions Best Practices <a href="#field-descriptions-best-practices" id="field-descriptions-best-practices"></a>

* **Use Intuitive Names.** Field names should clearly indicate what data they contain. Use complete words that accurately describe the data in each field, ensuring that the name is understandable on its own without needing additional context.

| Table           | Field Name in Source | Semantic Name     |
| --------------- | -------------------- | ----------------- |
| Item Master     | id                   | item\_id          |
| Item Master     | desc                 | item\_description |
| Sales Header    | id                   | sales\_header\_id |
| Sales Header    | sell\_to\_customer   | customer\_id      |
| Purchase Header | card\_code           | vendor\_id        |
| Purchase Header | BPLId                | branch\_id        |

* **Prioritize Clarity Over Brevity.** Field names should be as long as necessary to ensure they are clearly understood. Avoid sacrificing clarity for the sake of keeping names short.
* **Consider End-User Perspective.** Always consider the perspective of the end-user or non-technical stakeholders when naming fields. Use terminology and naming conventions that will be most intuitive to them, even if it means deviating slightly from technical norms or preferences.
* **Follow a Consistent Naming Convention.** Use consistent names for fields found across tables. This will help Lumi better infer implicit join conditions.

| Good Semantic Layer                                                                                                        | Poor Semantic Layer                                                                                                                  |
| -------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------ |
| item\_id is consistently defined across all relevant tables: item master, sales line, purchase line, and inventory tables. | item\_id is used in item master, item\_no is used sales line, product\_id is used in purchase line, sku\_id is used inventory table. |

* **Prefer Verbose Names Over Abbreviations.** While it might be tempting to use abbreviations to keep field names short, they can obscure meaning and make the schema less accessible. Always prefer verbose, descriptive names over abbreviations, unless the abbreviation is widely understood and accepted.
* **Include Units of Measurement Where Applicable.** If a field represents a measurable quantity, include the unit of measurement in the field name. For example, **`temperature_celsius`** or **`length_cm`** make it clear what unit the data is measured in, reducing confusion and the need for additional documentation.
* **Avoid Using Reserved Keywords.** Like with table names, avoid using reserved SQL keywords and database-specific terms for field names to prevent conflicts and errors.
* **Attribute Value Clarification.** For fields with a predefined set of values, explicitly define each possible option.

<table><thead><tr><th width="252">Semantic Name</th><th width="254">Good Context</th><th>Poor Context</th></tr></thead><tbody><tr><td>order_status</td><td>Integer field that represents the order status; 1 = Pending, 2 = Active, 3 = Declined,<br>4 = Closed, 5 = Returned.</td><td>Represents the order status</td></tr><tr><td>inventory_adjustment_type</td><td>Integer field that represents the type of inventory adjustment transaction;<br>1 = Sales, 2 = Purchase,<br>3 = Positive adjustment.,<br>4 = Negative Adjustment,<br>5 = Transfer, 6 = Consumption</td><td>Represents the inventory adjustment type</td></tr><tr><td>invoice_status</td><td>represents "O" for opened and "C" for closed</td><td>Represents the invoice status</td></tr><tr><td>sales_order_canceled_flag</td><td>represents "N" for not canceled and "Y" (and others) for canceled</td><td>Flag to represent if order is canceled or not.</td></tr></tbody></table>


# Add Business Context

## Define Business Terminology <a href="#id-2-add-business-context" id="id-2-add-business-context"></a>

Define specific business terminology and instructions on how key business metrics should be calculated.

{% embed url="<https://youtu.be/6Mf1epMhwSg?si=QFr-PvJILNXFbq0->" %}

### Step-by-Step Guide <a href="#step-by-step-guide-1" id="step-by-step-guide-1"></a>

1. Navigate to the 'Business context' tab in your Knowledge Base.
2. Ensure you are in Edit Mode.
3. Add in specific business terminology you would like Lumi to know about.
4. Add in context on how Lumi should calculate key metrics when prompted.

### Business Context Types <a href="#sample-examples-for-reference" id="sample-examples-for-reference"></a>

* An **Alias** is an alternate name, abbreviation, shorthand, or business term that Lumi should recognize as referring to a specific entity, field, value, or concept in the data.
* A **KPI** is a business metric that Lumi should calculate in a specific way when users ask analytical questions. KPI definitions should explain the logic, filters, formulas, or conditions Lumi should apply to produce the correct metric.
* A **Detail** is supporting business context that helps Lumi interpret the data correctly, but is not necessarily a metric calculation. Details usually explain business rules, time periods, classifications, or conditions that affect how Lumi should understand the data.

### Sample Examples For Reference <a href="#sample-examples-for-reference" id="sample-examples-for-reference"></a>

To help guide your input, consider these examples illustrating how to define business terminology and key metrics calculation instructions:

### **Business Terminology**

| Alias | Content                                                                                     |
| ----- | ------------------------------------------------------------------------------------------- |
| CP    | ‘CP' is the short abbreviation for customer name 'Custom Parts Unlimited LLC' (ID = C0522). |

### **Key Metrics**

| KPI             | Content                                                                                                                                                                                       |
| --------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Obsolete SKUs   | Obsolete SKUs are SKUs where sum of consumption over the past 12 months is equal to zero.                                                                                                     |
| Net Order Count | To calculate net order count, subtract the distinct count of returned orders (where order\_status = ‘Returned’) from the distinct count of closed orders (where order\_status = ‘Completed’). |

### Details <a href="#business-context-best-practices" id="business-context-best-practices"></a>

| Detail                  | Content                                                                                                        |
| ----------------------- | -------------------------------------------------------------------------------------------------------------- |
| Fiscal Year             | Our fiscal year starts on May 1st.                                                                             |
| Multi-Channel Customers | Multi-channel customers are customers that have made purchases both online and in-store in the last 12 months. |

### Business Context Best Practices <a href="#business-context-best-practices" id="business-context-best-practices"></a>

* **Clarity Is Key.** Use clear, concise language to describe terms and calculation methods. Avoid ambiguity to ensure Lumi accurately interprets your instructions.
* **Consistency Matters.** Ensure consistency in terminology and metrics definitions across your inputs to prevent confusion and ensure reliable analytics outputs.
* **Validate Through Testing.** After inputting your business context, run test prompts to verify that Lumi correctly understands and applies the provided information. Adjust as necessary based on the outcomes.
* **Regular Updates.** Business operations and metrics can evolve. Regularly review and update your context inputs to keep Lumi's outputs relevant and accurate.

<figure><img src="/files/0tKEPzvxMZ9YG9Sdn1Gl" alt=""><figcaption></figcaption></figure>


# Advanced Configuration

{% hint style="info" %}
To maximize Lumi AI's performance and accuracy, consider implementing the following advanced configurations.
{% endhint %}

## **Add Curated Prompts \[Recommended]**

Curated prompts guide Lumi users with predefined questions and commands, providing a starting point for data exploration. Read more about [Curated Prompts](/using-lumi/knowledge-base-utility/curated-prompts).

#### **Step-by-Step Guide**

1. Identify common queries or analytical use cases used within your organization.
2. Craft specific, clear prompts that users can easily understand and use.
3. Test the prompt in 'Chat' and ensure it yields the desired results.
4. Navigate to the Overview tab within the Knowledge Base.
5. Go into 'Edit Mode' and click '+ Add conversation starters'.
6. Save changes.

<figure><img src="/files/ddjyXIO7xj8HveE3e5hN" alt=""><figcaption></figcaption></figure>

## **Reinforce Lumi's Behavior with Memories \[Recommended]**

"Memories" allows users to provide feedback on Lumi’s responses, which helps improve accuracy and consistency. Read more about [Memories](/using-lumi/knowledge-base-utility/leveraging-memories).

{% hint style="info" %}
Memories is an advanced feature, which requires a [proposal ](/using-lumi/knowledge-base-utility/leveraging-memories)and then an [endorsement](/using-lumi/knowledge-base-utility/leveraging-memories) to be classified as an "existing" memory that would influence Lumi's responses. Please review [Memories.](/using-lumi/knowledge-base-utility/leveraging-memories)
{% endhint %}

#### **Step-by-Step Guide**

* Ask questions in the chat interface and provide feedback via the thumbs up or down mechanism.

<figure><img src="/files/W6zowygk3DOV3VpB0sid" alt=""><figcaption></figcaption></figure>

* Commit the memory proposal to the knowledge base for the memory to take effect and to influence similar queries.

<figure><img src="/files/JoWIzWuoav96vJThoMhA" alt=""><figcaption></figcaption></figure>

## **Define Explicit Joins \[Optional]**

Lumi can infer implicit join conditions based on the semantic field name. Admins and contributors have the option to define explicit join conditions that reinforce Lumi's understanding of how two tables can be joined to one another.

{% hint style="success" %}
By default, Lumi infers implicit join conditions based on the semantic field names. A clearer and more intuitive data model improves accuracy and consistency.
{% endhint %}

#### **Step-by-Step Guide**

1. Navigate to the Models tab within the Knowledge Base.
2. Enter 'Edit Mode' and click '+ Add join'.
3. Define the join condition(s), specifying the exact fields.
4. Save changes.

<figure><img src="/files/UKZlX79gncesxHL5vUXq" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/objPmne0cervJRO4KLgZ" alt=""><figcaption></figcaption></figure>

## **Add Table Details \[Optional]**

Admins and contributors have the option to define table specific nuances to help Lumi better understand the structure and purpose of the data.

#### **Step-by-Step Guide**

1. Navigate to the Tables tab within the Knowledge Base.
2. Click on the table you wish and navigate to the "Details' tab.
3. Add the context you wish Lumi to know about.
4. Save changes.

<figure><img src="/files/sJk9hHMsio3kJG76bxZu" alt=""><figcaption></figcaption></figure>

## **Define Custom Fields \[Optional]**

Custom fields allow admins and contributors to create fields that are not found in the underlying source tables. Read more about [Custom Fields](/product-features/knowledge-base/tables/custom-fields).

#### **Step-by-Step Guide**

1. Navigate to the Tables tab within the Knowledge Base.
2. Click on "+ Add Field" and the select "+ Custom Field".
3. Define the logic and confirm it is working as intended.
4. Save changes.

Click [here](/product-features/knowledge-base/tables/custom-fields#how-to-create-a-custom-field) for a more in-depth walkthrough on how to create custom fields.

<figure><img src="/files/Fre6cS8mzAeThPQBL42k" alt=""><figcaption></figcaption></figure>

## **Default Query Row Limit \[Optional]**

To ensure unnecessary computation resources do not occur, **a default limit is enabled to 25 records.** In some cases this might cause some expected information not to be shown due to this limit. To modify these settings (to 50 or 100 record limit), review [Organizational Query Row Limit Settings.](/product-features/organization-settings/organization-profile#query-row-limit)

{% hint style="info" %}
Note: The query row limit settings can only be changed by organization admins.
{% endhint %}


# 3. Distribute

With the connection and definitions established, all that remains to get started is defining access for other users to utilize the Knowledge Base in their prompting/querying.

Here you can invite users who are already part of the organization/workspace and select their permission level:

* **Viewer.** This is the default role, which provides read-only access to all contents of the Knowledge Base; nothing can be modified with this role (*note: sensitive information like passwords remain masked*)
* **Contributor.** This is the collaborator role, and default for the creator of the Knowledge Base, allowing edit/write capabilities to any page
* **(Conditional) Admin.** This is an inherited role from the organization/workspace; it cannot be assigned within a Knowledge Base; it has the same privileges as a Contributor, applied to all Knowledge Bases

<figure><img src="/files/FnSKinZC3XI9BIYz7iwz" alt=""><figcaption></figcaption></figure>


# Getting Started

## Platform Walkthrough

Once you’re logged in, you’ll have access to three main modules designed to streamline your experience.

* [**Chat:** ](/product-features/chat)The go-to interface for asking data questions and receiving instant answers.
* [**Boards:**](/product-features/boards) Allow users to pin frequently asked prompts and auto-refresh the insight generation process.
* [**Knowledge Base:** ](/product-features/knowledge-base)Allows admins/ contributors to configure Lumi's understanding about your data and business.

{% hint style="info" %}
Note: To learn more about the types of analysis that can be performed with Lumi, view [Data Analysis with Lumi.](/using-lumi/lumi-use-cases#data-insights-overview)
{% endhint %}

{% hint style="info" %}
Note: To learn more about best practices, view [Best Practices](/using-lumi/best-practices)
{% endhint %}

{% embed url="<https://youtu.be/MRzbRA9HWCI>" %}


# Lumi Use Cases

## Data Analytics Playbook

Lumi can be used to perform a wide variety of essential data analysis operations that are critical for any real world application to uncover business insights that translate to measurable outcomes. These categories are an overview to showcase Lumi capabilities.

### **Data Exploration**

* [**Data Search & Filtering**](/using-lumi/lumi-use-cases/data-exploration#data-search-and-filtering)
* [**Basic Aggregations**](/using-lumi/lumi-use-cases/data-exploration#basic-aggregation)

***

### **Business Metrics**

* [**Advanced KPI Calculation**](/using-lumi/lumi-use-cases/business-metrics#advanced-kpi-calculation)

***

### **Anomaly Detection**

* [**Outlier Detection**](/using-lumi/lumi-use-cases/anomaly-detection#outlier-detection)
* [**Exception Reporting**](/using-lumi/lumi-use-cases/anomaly-detection#exception-reporting)

***

### **Trend Analysis**

* [**Time-Series Analysis**](/using-lumi/lumi-use-cases/trend-analysis#time-series-analysis-seasonality-and-moving-averages)
* [**Comparing Metrics Across Time Periods**](/using-lumi/lumi-use-cases/trend-analysis#comparing-metrics-across-time-periods)

***

### **Root Cause Analysis**

* [**Drill-Down Analysis**](/using-lumi/lumi-use-cases/root-cause-analysis#drill-down-investigation)

***

### **Data Quality**

1. [**Missing Data & Duplicate Detection**](/using-lumi/lumi-use-cases/data-quality#missing-data-and-duplicate-detection)
2. [**Data Validation: Logic & Consistency**](/using-lumi/lumi-use-cases/data-quality#data-validation-logic-and-consistency-checks)

***

### **Proactive Insights**

* [**Proactive Alerting**](https://docs.lumi-ai.com/~/revisions/YMfC3Bihs20j8mruxyTG/using-lumi/lumi-use-cases/proactive-alerting)


# Data Exploration

This category helps users investigate and better understand their datasets through basic statistics, relationships, and visualizations.

## **Data Search & Filtering**

### Retrieving specific details such as categories, descriptions and basic types.

**Purpose**: To provide a high-level summary and quick access to key data points, such as categories, counts, and relationships along with the ability to apply filters, search for specific information, or focus on particular subsets of data.

{% hint style="info" %} <mark style="color:blue;">**Use Case:**</mark> To give users a high-level overview of their available data, helping them quickly understand the structure, types of categories, and key fields for inventory, sales, or product analysis. This is especially useful when beginning data analysis or exploratory data queries.
{% endhint %}

> **Typical Prompts**:
>
> * "List the total number of products in each category."
> * "For customer ABC, show all orders with status 'Not Paid Yet'."
> * "List all products with stock levels below XX units."
>
> **Example Output: What are all the item categories and ids we have?**

<figure><img src="/files/nBdnMdrZdQOr4wIvEAVY" alt=""><figcaption></figcaption></figure>

> **Example Output: Who are all our distinct customers?**

<figure><img src="/files/R4Qmcvta0XHskExDPqy0" alt=""><figcaption></figcaption></figure>

> **Example Output: For CUST002, are there any orders with order status 'Not Paid Yet'? Include relevant details.**

<figure><img src="/files/LXSuGrfk5rZtXR9Nmm4u" alt=""><figcaption></figcaption></figure>

## **Basic Aggregation**

### Provide essential aggregations like average, sum, min, max, and count.

**Purpose:** Lumi AI provides powerful aggregation capabilities, enabling users to calculate essential business statistics such as maximum, minimum, sum, average, profit, revenue, and costs. This allows business users to quickly analyze performance, financial metrics, and operational efficiency without requiring technical expertise in SQL or Python.

{% hint style="info" %} <mark style="color:blue;">Use Case:</mark> A procurement manager at a manufacturing company wants to analyze total procurement costs, average supplier costs, and identify the best and worst-performing suppliers.
{% endhint %}

> **Typical Prompts:**
>
> 1. *"What was the total revenue and average profit for each product category in YTD?"*
> 2. *"What is the highest operational cost category by department for Q1 2024."*
> 3. *"Give me the total procurement costs for all suppliers in 2023, and identify the supplier with the lowest cost."*
> 4. *"What is the average revenue per region in Q2 2024, and which region had the highest revenue?"*
>
> **Example Output: What is the average weekly quantity sold of item 1001 in 2023?**

<figure><img src="/files/NnbrtfO6rVHy4ZFCmdkR" alt=""><figcaption></figcaption></figure>


# Business Metrics

## **Advanced KPI Calculation**

### Lumi enables users to calculate custom, business-specific KPIs tailored to their organization’s performance.

**Purpose**: Lumi can manage advanced, user-defined KPIs that are unique to specific business operations, leveraging tailored business context.

View [business context set-up best practices.](/setting-up/configure-knowledge-base/add-business-context)

<figure><img src="/files/YR1tgsaATanXg2oyBfp9" alt=""><figcaption></figcaption></figure>

{% hint style="info" %} <mark style="color:blue;">Use Case:</mark> A supply chain manager wants to understand which products are often purchased together to improve bundling strategies. Additionally, a warehouse needs to calculate the months of supply for each item to ensure stock is maintained at optimal levels. Lumi allows these advanced KPI calculations in real time using simple language.
{% endhint %}

{% hint style="warning" %} <mark style="color:orange;">Note:</mark> These types of calculations often need to be configured and are not "out of the box" like simple aggregations above. Proper setup and business context are necessary.
{% endhint %}

> **Typical Prompts:**
>
> 1. *"Which items are most frequently ordered together over the past 6 months?"*
> 2. *"Calculate the outbound cases per hour for each warehouse in Q2 2024."*
> 3. *"What is the average lead time for deliveries, and which supplier has the longest lead time?"*
>
> **Example Output: Which items have the highest months of supply?**

<figure><img src="/files/jL8VYhamzmrrvDa3hBTA" alt=""><figcaption></figcaption></figure>


# Anomaly Detection

Anomaly detection can be broken down into two categories.

| Aspect      | Outlier Detection                                     | Exception Reporting                                                |
| ----------- | ----------------------------------------------------- | ------------------------------------------------------------------ |
| Focus       | Identifies statistically anomalous data points        | Flags data points that violate predefined business rules           |
| Purpose     | Find unusual or unexpected data based on distribution | Ensure adherence to expected operational or performance benchmarks |
| Methodology | **Statistical Methods**                               | **Rule-based (thresholds, benchmarks)**                            |

## **Outlier Detection**

### Identifying extreme data points to detect operational errors, irregularities, or **data points that deviate significantly** from the majority of the dataset.

**Purpose**: Identifying these outliers helps organizations understand and act on situations where there is typically a larger, more impactful opportunity to reduce costs and increase revenue.

{% hint style="info" %} <mark style="color:blue;">Use Case:</mark> Supply chain manager might use Lumi AI to identify unusually high lead times from specific suppliers, which could indicate bottlenecks or quality issues. By identifying these outliers, businesses can take action to prevent larger disruptions and optimize their workflows.
{% endhint %}

> **Typical Prompts:**
>
> 1. *"Identify sales orders from the last 12 months that deviate more than 1.5 times the interquartile range. Include relevant details."*
> 2. *"Show me any suppliers with delivery times that deviate more than 30% from the average in 2024."*
> 3. *"Find inventory items where the stock level is more than 20% above average."*
>
> **Example Output: What are the items that make up 80% of the total order volume in 2023?**

<figure><img src="/files/LiNqBB4p35bdzOgdxnrF" alt=""><figcaption></figcaption></figure>

> **Example Output: What is the days difference count with buckets of 1 day for payment date to actual payment.**

<figure><img src="/files/i5hjQwRYRhJCcB210d83" alt=""><figcaption></figcaption></figure>

> **Example Output: What are the items in the lowest quartile in terms of gross profit in 2023?**

<figure><img src="/files/PXzo7wteWChcevJTToBi" alt=""><figcaption></figcaption></figure>

## **Exception Reporting**

### Exception reporting refers to **identifying data points or events that fail to meet predefined business rules or thresholds**. It is more focused on rule-based violations rather than statistical anomalies.

**Purpose**: Exception reporting highlights events or data points that violate set business rules or fail to meet operational standards. This helps businesses maintain compliance, ensure quality control, and track performance benchmarks.

{% hint style="info" %} <mark style="color:blue;">Use Case:</mark> A logistics manager can use exception reporting to flag orders that missed delivery deadlines, helping the team analyze potential delays and improve future performance. Similarly, a quality control manager might use Lumi AI to identify production batches that fall below acceptable quality levels. Exception reporting enables teams to quickly spot deviations from business rules, ensuring operational efficiency and compliance.
{% endhint %}

> **Typical Prompts:**
>
> 1. *"Identify all orders from the last 6 months where the shipment was delayed by more than 7 days past the expected delivery date. Include order ID, customer name, and number of days delayed."*
> 2. *"What are all products that were sold below the minimum set price over the last quarter."*
> 3. *"What are the purchase orders from 2024 where the order quantity exceeds the set limit for any item?"*
> 4. "What are the top 3 warehouses with highest variance between the Actual vs Goal for Outbound Cases per Hour KPI".
> 5. What are the top 5 items with the lowest gross profits YTD?

> **Example Output: What top 5 suppliers with the lowest margins that are below 40%? Output should be: Supplier, Item Count, Avg Margin %**

<figure><img src="/files/mJ9oSgKFSztY9i4btaeU" alt=""><figcaption></figcaption></figure>


# Trend Analysis

Analyzing time-series data to identify long-term patterns, seasonality, and trends without forecasting future values.

## **Time-Series Analysis**

### Examine how data evolves over time, focusing on trends, moving averages, and cycles.

**Purpose**: Time-series analysis examines how data evolves over time, allowing businesses to track long-term trends, seasonal cycles, and recurring patterns.

{% hint style="info" %} <mark style="color:blue;">Use Case:</mark> A sales manager might use Lumi to analyze monthly revenue trends over the past three years, identifying periods of high and low demand. Moving averages can help smooth out fluctuations and reveal more reliable insights about sales performance. Similarly, a supply chain analyst could use time-series data to track stock levels and forecast future inventory needs based on past trends, helping to optimize reordering strategies.
{% endhint %}

> **Typical Prompts:**
>
> 1. *"Analyze monthly revenue from January 2020 to June 2023, please include the moving average."*
> 2. *"Show me the 3-month moving average for total orders over the last 24 months."*
> 3. *"What are the quarterly sales for Product X from 2021 to 2023?"*
> 4. *"What is the inventory levels for every month in 2023 along with the 6-month moving average?*
>
> **Example Output: For item 1001, what is the total sales for each month in 2023, along with the moving average?**

<figure><img src="/files/qA0vVhsaCddKJlY2b5js" alt=""><figcaption></figcaption></figure>

## **Comparing Metrics Across Time Periods**

### Comparing metrics across two distinct time periods to highlight deltas or changing rates is particularly useful for spotting emerging trends, declines, or improvements over time.

**Purpose**: Comparing across time periods allows businesses to detect second-order trends by comparing changes in metrics over time, such as variance or delta of delta (the rate of change of changes). This approach helps businesses understand deeper shifts in performance, identifying trends not immediately visible through first-order differences alone.

{% hint style="info" %} <mark style="color:blue;">Use Case:</mark> A supply chain manager may want to analyze the rate of decline in product sales by not only looking at the difference in quantities sold between two quarters, but also examining changes in the rate of decline itself (delta of delta). This allows for the detection of accelerating or decelerating trends
{% endhint %}

> **Typical Prompts:**
>
> 1. *"What are the items that experienced the largest decline in gross profit when comparing the last 3 months to the previous 3 months? Show the delta in gross profit as well as the delta of delta for each item."*
> 2. *"What is the variance in shipping costs between Q1 2023 and Q2 2023, and how has that variance changed compared to the previous year?"*
>
> **Example Output:** **What is the top items that had the largest delta between quantity sold vs average quantity in the last 2 months, also what is the largest difference between the delta of previous to past month (delta of delta). Output: Item, Previous Month Quantity Sold, Past Month Quantity Sold, Average Quantity Sold, Delta of Previous Month, Delta of Past month, Delta of Delta.**

<figure><img src="/files/zHmF4LO3Cr535CZiCQTQ" alt=""><figcaption></figcaption></figure>

> **Example Output: Which products have shown the highest year-over-year growth in sales from 2022 to 2023?**

<figure><img src="/files/DcvZNhwKAdv7ObwLnUs2" alt=""><figcaption></figcaption></figure>


# Root Cause Analysis

This category investigates the underlying causes of performance issues, helping teams make data-driven decisions by identifying what drives trends and anomalies.

{% hint style="success" %} <mark style="color:green;">Hint:</mark> Drill-down analysis typically follows anomaly detection. Once an anomaly or outlier is identified, drill-down techniques help determine its root cause.
{% endhint %}

## **Drill-Down Investigation**

### Digging into specific causes behind patterns or performance issues.

**Purpose**: Lumi AI allows users to dig deeper into specific causes behind patterns using historical chats. Users first identify performance issues or inefficiencies and analyze the contributing data points.

{% hint style="info" %} <mark style="color:blue;">Use Case:</mark> A supply chain analyst can examine declines in purchase quantities, breaking the issue down by warehouse, region, or supplier to uncover the root causes of stock discrepancies. Leveraging historical data and past inquiries, teams can address recurring challenges and drive continuous improvements.
{% endhint %}

> **Typical Prompts:**
>
> 1. **Isolate Issues:**\
>    *"Identify the top 5 suppliers with the highest number of late deliveries over the past 6 months. Include relevant details like average delay time and regions affected."*\
>    **Follow-up :**\
>    *"What is the number of late deliveries for XYZ supplier over the last 12 months?"*
> 2. **Isolate Issues:**\
>    *"Identify the products with the highest rate of out of stocks in Q2 2023. Include details such as warehouse locations and supplier names."*
>
>    **Follow-up:**\
>    *"Show me the historical out of stocks rates for these ABC product over the past 12 months, broken down by warehouse."*
>
> ***Isolate Issue:*****&#x20;What items have experienced the largest decline in gross profit when comparing the past 3 months to the previous 3 months.**

<figure><img src="/files/4SAg3JAapVIxrUpnQwdb" alt=""><figcaption></figcaption></figure>

> **Follow Up:** **For item LR-E0059, what is the gross profit for every month in the last 12 months along with the moving average?**

<figure><img src="/files/OW0ZMBrJmzoebHB0SiBJ" alt=""><figcaption></figcaption></figure>

> ***Isolate Issue:*****&#x20;Can you show me total sales revenues for every day in May?**

<figure><img src="/files/GvPVWgbPyd5sGX8rz2oj" alt=""><figcaption></figcaption></figure>

> **Follow Up: Investigate the reasons behind the negative revenues on May 10 and May 24.**

<div align="center" data-full-width="false"><figure><img src="/files/JULLXghbN7bHYk5ZN2Y6" alt=""><figcaption></figcaption></figure></div>


# Data Quality

Ensuring clean and consistent data is critical for reliable analysis. This category focuses on data validation, consistency checks, and cleaning.

## **Missing Data & Duplicate Detection**

### Identifying gaps and ensuring data completeness

**Purpose:** Lumi helps users ensure data quality by detecting missing values and identifying duplicates within datasets. By identifying gaps or incomplete data, businesses can prevent operational errors and maintain the integrity of their analytics.

{% hint style="info" %} <mark style="color:blue;">Use Case:</mark> An inventory manager might use Lumi AI to identify missing stock quantities in their warehouse data, ensuring that all products have accurate counts. Lumi enables users to check for missing data and duplicates, ensuring all records are complete and accurate.
{% endhint %}

> **Typical Prompts:**
>
> 1. *"Identify any products in the inventory that are missing stock quantities or SKU numbers."*
> 2. *"Find all duplicate customer records in the CRM system based on customer name and email."*
> 3. *"Check the sales orders from the last 12 months for missing shipping addresses or incomplete payment information."*
> 4. *"Which suppliers are missing contact details in the vendor database? Include the vendor ID and company name."*
>
> **Example Output:&#x20;*****Are there any actual pick up dates with null values with trip status completed?***

<figure><img src="/files/eammw9bB2IFEfoZ4n7F7" alt=""><figcaption></figcaption></figure>

## **Data Validation: Logic & Consistency Checks**

### Ensuring the data has logical consistency

**Purpose:** Lumi helps users validate data for logical consistency across datasets. This ensures that values within a dataset adhere to expected rules or relationships, such as dates being in the correct range or quantities not being negative.

{% hint style="info" %} <mark style="color:blue;">Use Case:</mark> A warehouse manager can use Lumi AI to ensure that all shipment dates are after order dates, preventing reporting errors. Similarly, inventory records showing zero stock but a positive inventory value would result in inaccurate reporting.
{% endhint %}

> **Typical Prompts:**
>
> 1. *"Find any products where the sale date is earlier than the manufacture date."*
> 2. *"Check all purchase orders to ensure that the unit price is greater than 0 for each item."*
> 3. *"*&#x41;re there any items with negative inventory?"
>
> **Example Output: Do we have any items where the inventory quantity is greater than 0 but the stock value is = 0**

<figure><img src="/files/bUQecA1UYdb9BOieLtC5" alt=""><figcaption></figcaption></figure>

> **Example Output:** **Are there any components that have itself as the BOM?**

<figure><img src="/files/J9ZinuF91r64F67B8A8t" alt=""><figcaption></figcaption></figure>


# Quick Look: Example Prompt Repository

The following list the various prompting examples that showcase different data analysis techniques discussed above. Below are sample prompts that combine use case categories to give a quick overview of how Lumi can be prompted.

{% hint style="info" %}
The output quality is correlated to the quality of the prompt. Learn more about [prompting best practices](/using-lumi/best-practices/prompting-best-practices).
{% endhint %}

<details>

<summary><mark style="color:blue;"><strong>Performance Metrics Analysis</strong>:</mark> Evaluate various business metrics across dimensions.</summary>

<mark style="color:green;">**Example Prompt:**</mark> *Show me total purchase quantity and total purchase cost for every item in 2023. Also, list the number of distinct suppliers we bought from. Output: item\_id, description, Total Purchase Quantity, Total Purchase Cost, Currency Code, Distinct Supplier Count. Sort by total purchase cost.*

<mark style="color:red;">**Bad Prompt Example:**</mark> *Show me purchases for 2023.*

</details>

<details>

<summary><mark style="color:blue;"><strong>Time Series Analysis</strong>:</mark> Analyze and track trends over time.</summary>

<mark style="color:green;">**Example Prompt:**</mark> *Can you show me gross profit for every month over the past 12 months for customer C000322?*

<mark style="color:red;">**Bad Prompt Example:**</mark> *Tell me how much money xyz customer paid every month.*

</details>

<details>

<summary><mark style="color:blue;"><strong>Comparative Analysis</strong>:</mark> Compare metrics across different time periods.</summary>

<mark style="color:green;">**Example Prompt:**</mark> *Which customers have experienced the largest decline in gross profit when comparing the last 3 months to the previous 3 months? Output: Customer, Customer Name, Currency Code, Last 3 Months, Previous 3 Months.*

<mark style="color:red;">**Bad Prompt Example:**</mark> *Which customers lost money?*

</details>

<details>

<summary><mark style="color:blue;"><strong>Cumulative Analysis:</strong></mark> Calculate cumulative totals or running sums.</summary>

<mark style="color:green;">**Example Prompt:**</mark> *Calculate gross profit in 2024 YTD for each customer.*

<mark style="color:red;">**Bad Prompt Example:**</mark> *What are the profits this year?*

</details>

<details>

<summary><mark style="color:blue;"><strong>Segmentation</strong>:</mark> Divide data into meaningful segments based on common characteristics.</summary>

<mark style="color:green;">**Example Prompt:**</mark> *What are the top purchased items in April 2024 that were bought from multiple suppliers? Include relevant details*

<mark style="color:red;">**Bad Prompt Example:**</mark> *What were the top items in April?*

</details>

<details>

<summary><mark style="color:blue;"><strong>Correlations</strong>:</mark> Explore relationships between two variables.</summary>

<mark style="color:green;">**Example Prompt:**</mark> *What is the marketing spend and sales revenue, by month in 2023. Include relevant details.*

<mark style="color:red;">**Bad Prompt Example:**</mark> *Show me marketing and sales numbers.*

</details>

<details>

<summary><mark style="color:blue;"><strong>Anomaly Detection</strong>:</mark> Detect unusual data patterns or outliers.</summary>

<mark style="color:green;">**Example Prompt:**</mark> *What are the top 5 orders with the lowest margin percentage.*

<mark style="color:red;">**Bad Prompt Example:**</mark> *Are there any weird orders?*

</details>

<details>

<summary><mark style="color:blue;"><strong>Market Basket Analysis</strong>:</mark> Analyze purchasing patterns.</summary>

<mark style="color:green;">**Example Prompt:**</mark> *What are the finished goods with the highest average sales volume in July (across all years) that are currently out of stock?*

<mark style="color:red;">**Bad Prompt Example:**</mark> *What sold the most in July that's out of stock?*

</details>


# Proactive Alerting

## Monitor Metrics with Alerts

Use Lumi to proactively monitor important business metrics and notify your team when something needs attention.

### When to use alerts

Use alerts when you want Lumi to monitor a recurring question or metric, such as:

* Revenue drops below target
* Inventory falls below a threshold
* On-time shipment rate decreases
* Support backlog exceeds a normal range
* A data quality issue appears
* A metric changes more than expected

### How it works

1. Ask or build the question you want to monitor.
2. Save the result to a Board.
3. Configure the Board card to refresh on a schedule.
4. Add an alert rule to the card.
5. Choose who should be notified.
6. Use Lumi to investigate when the alert fires.

### Example

You want to know when on-time shipment drops below 75%.

First, create an insight that tracks on-time shipment rate. Save it to a Board, configure the Board to refresh regularly, then add an alert to notify the operations team when the rate falls below 75%.

### Why alerts require Boards

Alerts are tied to Board cards because Boards provide the saved, recurring context Lumi needs to monitor an insight over time. Chat is useful for one-time investigation, while Boards are used for ongoing monitoring.

### Next steps

* [Learn how to create a Board](https://docs.lumi-ai.com/product-features/boards#create-board-1)
* [Learn how to configure a Board card](https://docs.lumi-ai.com/product-features/boards/card-configuration-and-utilization)
* [Learn how to add an alert](https://docs.lumi-ai.com/product-features/boards/card-configuration-and-utilization#setting-alerts)
* [Learn how notifications work](https://docs.lumi-ai.com/product-features/notifications)


# Best Practices

Effective use of Lumi AI relies on clear structure, thoughtful organization, and consistent management. Whether working with prompts, boards, or knowledge bases, maintaining clarity, accuracy, and version control ensures better insights and streamlined workflows. Regular testing, incremental updates, and a structured approach to data improve efficiency and reliability. By following best practices, users can maximize the value of Lumi AI for their unique needs.

## Chat

{% content-ref url="/pages/tyDLn4jDYtp3MwVlXdHg" %}
[Chat Best Practices](/using-lumi/best-practices/prompting-best-practices)
{% endcontent-ref %}

## Boards

{% content-ref url="/pages/GnMnBl6vXWJTOVBqTjIs" %}
[Boards Best Practices](/using-lumi/best-practices/boards-best-practices)
{% endcontent-ref %}

## Knowledge Bases

{% content-ref url="/pages/ZppKUEaoyj6dzT7k0owa" %}
[Versioning Best Practices](/using-lumi/best-practices/versioning-best-practices)
{% endcontent-ref %}

## Chat Limitations

{% content-ref url="/pages/PGEOG9KQaHDETaCV3kQn" %}
[Chat Limitations](/using-lumi/best-practices/chat-limitations)
{% endcontent-ref %}


# Chat Best Practices

{% hint style="info" %}
Effective prompting has a learning curve. Crafting clear, concise prompts can significantly enhance the quality of the results you receive from Lumi.
{% endhint %}

Getting the most out of Lumi starts with crafting strong, clear prompts. The quality of your prompts directly affects the relevance, accuracy, and completeness of the insights you receive. This guide outlines five essential best practices, grounded in real-world usage and training sessions.

### Lumi Best Practices Overview

| Best Practice Category                                                        | Understanding the Rationale                                                                                      |
| ----------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- |
| [Understand What Data is Available](#id-1.-understand-what-data-is-available) | You need to know both what data exists and how to ask for it effectively.                                        |
| [Use Clear and Specific Language](#id-2.-use-clear-and-specific-language)     | Specificity drives quality; vague requests often lead to irrelevant or incomplete results.                       |
| [If Required, Specify Columns](#id-3.-if-required-specify-columns)            | When applicable, naming the exact columns helps Lumi retrieve more accurate and relevant outputs.                |
| [Leverage Multi-Prompt Approach](#id-4.-leverage-a-multi-prompt-approach)     | Use a two-prompt strategy: first locate the values or identifiers, then use them in your second analysis prompt. |
| [Validate Assumptions & Approach](#id-5.-validate-assumptions-and-approach)   | Check explanation and assumptions to ensure accuracy.                                                            |

***

### 1. Understand What Data is Available

Before diving into complex analysis, begin by exploring your data. Lumi can help you preview tables, inspect distinct values, check ranges, and understand distributions.

**Why this matters:** Prompts grounded in data context produce better results. If you’re unsure about the data structure, you're more likely to get irrelevant or incomplete responses.

<figure><img src="/files/YiCWEFOGhuCwlx186jLr" alt=""><figcaption></figcaption></figure>

**Example prompts:**

* `Show me 100 random records from the sales header table.`
* `What are the distinct customer IDs in the customer_details table?`
* `What is the count of distinct product categories in the sales header table?`
* `What is the earliest and latest order date in the sales header table?`

***

### 2. Use Clear and Specific Language

Avoid shorthand or vague phrasing. Be as specific and descriptive as possible.

**Why this matters:** Specificity improves Lumi’s ability to interpret and return relevant answers. General prompts create room for incorrect assumptions.

<figure><img src="/files/j3kp748ZYRnF4Qk3Tjq4" alt=""><figcaption></figcaption></figure>

**Example:**

* <mark style="color:red;">Vague prompt:</mark> `Top products 2023?`
* <mark style="color:green;">Specific prompt:</mark> `What are the top 25 products by revenue in 2023? Sort descending.`

***

### 3. If Required, Specify Columns

When requesting comparisons or multi-metric outputs, include the exact fields you want to see. This gives Lumi guidance to structure the query appropriately.

**Why this matters:** When Lumi knows what output format you want, it's more likely to return usable and correctly scoped results.

<figure><img src="/files/50zwbTfAyxJET7tF2Px0" alt=""><figcaption></figcaption></figure>

**Example:**

* <mark style="color:orange;">Unspecified prompt:</mark> `Top 10 brands by revenue growth in Jan 2024`
* <mark style="color:green;">Specific Column Prompt:</mark> ` Top 10 brands by revenue growth in Jan 2024.`` `` `*`Output should include brand, January 2024 revenue, January 2023 revenue, and the delta.`*

{% hint style="warning" %}
**Tip:** You can also ask Lumi to include “relevant details” if you're unsure which supplemental columns might be helpful.
{% endhint %}

***

### 4. Leverage a Multi-Prompt Approach

Break more complex tasks into multiple steps. Use initial prompts to gather identifiers or filters, then follow up with specific analysis using those values.

**Why this matters:** Lumi does not retain prompt memory. Each question should include all necessary context.

<figure><img src="/files/SowKjxk9i9HBGmkM9IaJ" alt=""><figcaption></figcaption></figure>

**Example prompt strategy:**

> * **Prompt 1:** List the top 5 customer segments by revenue in Q1 2025.
>
>   **Customer Segments Return:** Churned, <mark style="color:purple;">New</mark>, Returning, VIP, <mark style="color:green;">Loyal</mark>, <mark style="color:orange;">High Value.</mark>
> * **Prompt 2:** Compare monthly transaction trends for segments: <mark style="color:green;">Loyal</mark>, <mark style="color:orange;">High Value</mark>, and <mark style="color:purple;">New</mark>.

***

### 5. Validate Assumptions and Approach

Review the explanations, logic, and SQL that Lumi provides. Ensure that the metrics, filters, and joins used align with your intended analysis.

**Why this matters:** Lumi may make assumptions, especially around calculations nuances (timelines, type of comparisons, filters etc). You can review to understand if this was the correct logic on the output.

<figure><img src="/files/7Jzc973YtjnIbzULSiJr" alt=""><figcaption></figcaption></figure>

**Checklist:**

* Read the assumptions and explanation tab.
* Confirm filters and logic are appropriate.
* Use thumbs up/down to provide feedback and help refine future responses.

***

#### Known Limitations

Lumi is designed for structured, insight-driven analysis. However, there are several limitations to be aware of when crafting prompts see [chat limitations](/using-lumi/best-practices/chat-limitations) for more information:

* **Data Availability:** Lumi can only query data that is connected and defined in the Knowledge Base. If a field or table doesn’t exist in the model, Lumi won’t be able to retrieve insights; even if the prompt is well-written.
* **Data Returned From Query:** Lumi cannot see the actual table output from prior prompts. It only remembers the previous question and a summary. You must restate any specific values or identifiers in your follow-up questions.
* **Follow Up Questions:** While Lumi may generate follow-up suggestions, these are not always schema-aware. They can include filters or fields that don’t exist in your data model. Manual rephrasing is often necessary.
* **Row Limitations:** Lumi enforces a 100-row maximum per query to maintain performance and resource efficiency. Large result sets should be filtered, limited, or aggregated before requesting.
* **Latency:** Lumi’s query speed is directly influenced by your database's performance. Slow queries typically result from limited compute capacity.

***

### Summary

Prompting well is about clarity, specificity, and structure. Understand your data, ask precise questions, and always verify assumptions. With these practices, you’ll unlock more valuable and accurate insights using Lumi.

{% hint style="success" %}
**Clarity = Better Output**
{% endhint %}


# Boards Best Practices

## Overview

Boards are a powerful tool within Lumi designed to address frequently asked questions and monitor critical metrics. They enable users to organize, visualize, and share key data insights across an organization, ensuring everyone has access to the most current information.

Learn more about [Boards](/product-features/boards).

<figure><img src="/files/L4aZ8I7AIJHEiBXBzV0L" alt=""><figcaption></figcaption></figure>

## When to use Boards?

* [x] **Automate Frequently Asked Questions:** Use boards to display answers to commonly asked questions that need regular updating, such as sales figures, open orders, and trending products.
* [x] **Monitor Critical Metrics:** Use boards to track important metrics, identify trends, and detect outliers. Boards help visualize data efficiently, making it easier to monitor performance.
* [x] **Share Insights:** Use boards to facilitate the sharing of insights within an organization, ensuring all team members have access to consistent and up-to-date information.
* [x] **Support Data-Driven Decisions:** Use boards to analyze trends and insights from monitored data to make informed strategic decisions and improve business outcomes.

## Best Practices

* [x] **Lock in and Refresh Insights:** Regularly refresh the data on boards to ensure the most current information is available. This keeps the insights relevant and reliable for decision-making.
* [x] **Visualize Key Data:** Use different types of visualizations to highlight important information and detect outliers. Tailor the board layout to meet your team's needs.
* [x] **Organize Content Effectively:** Resize cards to fit rows or columns. Expanded cards display more properties and adapt to the data type for better visualization and understanding.
* [x] **Ensure Data Accuracy:** Review the data sources and queries used in your boards to maintain accuracy. This helps prevent stale or incorrect data from affecting decisions.
* [x] **Incorporate Feedback:** Gather input from board users to continuously improve the boards' relevance and usability. Adjust content and layout based on user feedback.
* [x] **Maintain Board Relevance:** Regularly update boards to reflect current business priorities and metrics. Remove outdated cards and add new ones to align with organizational goals.
* [x] **Make Sure the Board Tells a Story:** Structure your board to present a clear narrative. This helps ensure insights are easily understood and actionable, aiding in informed decision-making.

## Board Feature Highlights

For a functional guide to boards please review [here](/product-features/boards).

* **Create Board:** Boards can be created through chat or on the board menu.
* **Add Cards:** Add content directly to boards or through chat, with chat offering more controls for complex responses and refined interactions.
* **Expand Card:** Drill into more details and uncover a deeper understanding by expanding cards.
* **Publish Boards:** Creators can publish and share the board with all users with access to the knowledge base.
* **Refresh Insights:** Refresh the board on command, ensuring accurate and comprehensive analysis.
* **View Summary:** A report summary highlights the key insights from each card.

> #### <mark style="color:red;">Debugging</mark>
>
> A status symbol will indicate if a card failed to refresh. Hovering over the symbol displays how outdated the last successful state is. Refresh failures typically occur due to changes in the knowledge base. If done accidentally, the KB can be adjusted back. If the change is permanent, the card must be removed and regenerated in chat or directly on the board.


# Versioning Best Practices

​Effective management of knowledge base (KB) versions is essential to ensure the accuracy and reliability of knowledge bases. The following guidelines provide best practices for implementing version control strategies.

## **Versioning Best Practices**

Consider the following strategies to maintain and implement robust version control:

* **Single Editor Policy**: Allow only one individual to edit a KB at any given time to prevent saving conflicts and lost progress.​
* **Incremental Changes**: Make small, manageable updates to facilitate easier tracking and reduce the risk of errors.​ Implement change-check-test, development process. See [configuration tips](/setting-up/configure-knowledge-base/configuration-tips) for more information.
* **Frequent Saves**: Regularly save changes to minimize data loss and maintain an up-to-date record of modifications.​
* **Regular Testing**: Consistently test the KB after updates to verify functionality and accuracy.​
* **A/B Testing**: Implement A/B testing methodologies to evaluate the effectiveness of different KB versions and identify the most user-friendly formats.
* **Consistent Naming Conventions**: Adopt a standardized naming system for KB versions to streamline organization and retrieval. For example, use the format: `<Knowledge_Base_Name>_<Version_Number>`.​ For example "Demo Procurement KB V2.1"

<figure><img src="/files/bLRGDCeuVbpzLxUim2o4" alt=""><figcaption></figcaption></figure>


# Chat Limitations

{% hint style="info" %}
We're continuously working to improve the quality of the responses. Here are the current limitations.
{% endhint %}

Lumi is designed to generate instant insights from structured data. But like any tool, it has boundaries. Understanding these limitations ensures you can design better prompts, avoid confusion, and troubleshoot issues effectively. This guide covers the key limitations of Lumi Chat and how to work within them.

### Lumi Chat Limitations Guide

| Category                                                        | Recommended Practice                                                                                 |
| --------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- |
| [**Data Availability**](#id-1.-data-availability)               | Use Table Preview to verify what’s accessible before prompting.                                      |
| [**Data Returned From Query**](#id-2.-data-returned-from-query) | Always restate specific values or filters in follow-up questions.                                    |
| [**Follow Up Questions**](#id-3.-follow-up-questions)           | Use reasonable judgment to ensure follow-ups match the dataset context and reference available data. |
| [**Row Limitations**](#id-4.-row-limitations)                   | Use filters, limits, or aggregation to focus results and avoid truncation.                           |
| [**Latency**](#id-5.-latency)                                   | Simplify queries and collaborate with your data team to optimize performance.                        |

***

### Detailed Limitations

### 1. Data Availability

Lumi can only generate insights from data that is connected and defined in the Knowledge Base. If a field or table isn’t present within the KB, Lumi cannot access the data.

**Why this matters**: Lumi can't infer data that doesn't exist in the connected data set.

**Best Practices**:

* Use Table Preview to inspect available fields.
* Check the Knowledge Base for table names, relationships, and renamed fields.
* Validate your assumptions before writing prompts.

<figure><img src="/files/sngxB7E8nMERWgUZ5dQG" alt=""><figcaption></figcaption></figure>

**Example**:

* Prompt: “Show sales by region”
* Problem: `region` isn’t a valid column → Lumi will not be able to access that column.

***

### 2. Data Returned From Query

Lumi does not retain or access the visual results of previous queries result. It can only reference the prior prompt text and a summary, not the full table output.

**Why this matters**: Prompts like “Why did the top row drop?” are not understood because Lumi can't see what was in that row.

<figure><img src="/files/197rt2vf4YgHvjCn8ZGr" alt=""><figcaption></figcaption></figure>

**Avoid**:

* “What about the second row?”
* “Why did the top item drop?”

**Use instead**:

* “What was the revenue for item 1003 in 2023?”
* “Investigate the reasons behind the decline in sales for item 1003.”

**Tips**:

* Always include full identifiers in follow-up prompts.
* Don’t rely on positional language like “this,” “that,” or “above.”
* Manually extract values from prior outputs and reinsert them into the next prompt.

***

### 3. Follow Up Questions

Lumi may suggest follow-up questions, but these are not always guaranteed to work. Suggested prompts are generated heuristically and may include invalid columns or filters based on your schema. Additionally, Lumi is not connected to the internet or has access to non-structured data sources such as sharepoint or google drive equivalent.

**Why this matters**: Clicking follow-up suggestions without checking may result in impossible prompts.

<figure><img src="/files/OfmFnksc5wq92RQAxA1w" alt=""><figcaption></figcaption></figure>

**Best Practices**:

* Manually review and rewrite follow-up prompts.
* Verify column and table availability before reusing suggestions.

***

### 4. Row Limitations

Each Lumi query can return a maximum of 100 rows. This limitation is set to ensure consistent performance and cost control across enterprise environments.

**Why this matters**: Broad queries without limits may be cut off, resulting in partial or incomplete outputs.

<figure><img src="/files/H2UySwMPYuTdexZdNb8l" alt=""><figcaption></figcaption></figure>

**Tips**:

* Use filters such as `Sort by`, `Group by`, and `Filter by`.
* Avoid trying to export large tables via Lumi. Focus on summarizing insights.

**Example**:

* <mark style="color:red;">Avoid:</mark> “Show all transactions in 2024”
* <mark style="color:green;">Use:</mark> “Show the top 10 SKUs by total revenue in 2024”

***

### 5. Latency

Lumi’s speed depends entirely on your data warehouse. Queries are executed live, and delays are often caused by limited compute resources.

**Why this matters**: Lumi does not control backend infrastructure. Performance is tied to your environment.

<figure><img src="/files/uMSB0vm2o2oCJh8KBiCy" alt=""><figcaption></figcaption></figure>

**Tips**:

* Coordinate with your data team if performance is consistently slow.
* Allocate more compute resources to source system.


# Monitoring and Alerting Best Practices

### When to use monitoring and alerts?

Use monitoring and alerts when you want Lumi to proactively track recurring business conditions, such as:

* A metric crosses a business-critical threshold
* A KPI changes more than expected
* A recurring report needs to stay current without manual reruns
* A team needs to know when operational performance changes
* A data quality issue appears in a trusted workflow
* A stakeholder needs a consistent view of important metrics over time

Examples:

| Use case          | Business condition to monitor                            |
| ----------------- | -------------------------------------------------------- |
| Sales performance | Weekly revenue falls below target                        |
| Operations        | On-time shipment rate falls below an acceptable level    |
| Support           | Open ticket volume exceeds the team’s operating capacity |
| Finance           | Gross margin falls below an approved threshold           |
| Data quality      | A data quality check returns failed results              |

<figure><img src="/files/89MNbup0JuiiT3AQ7WBY" alt=""><figcaption></figcaption></figure>

### 1. Start with an actionable business question

Before creating an alert, define the business question the alert is meant to monitor.

Why this matters: Alerts are most useful when they tell a user that something requires attention. If the business question is vague, it may be difficult to translate into a clear logical statement.

Less useful business question:

* Are sales changing?

More useful business question:

* Has weekly net revenue for the Northeast region dropped more than 15% compared to the previous 4-week average?

Why the second question is better:

* It identifies the metric: weekly net revenue
* It identifies the segment: Northeast region
* It defines the condition: dropped more than 15%
* It defines the comparison period: previous 4-week average
* It suggests a clear reason for follow-up

Before creating the alert, confirm:

* What metric should be monitored?
* What condition should trigger the alert?
* What comparison value should be used?
* Does the condition require a time period, segment, or filter?
* Who needs to be notified?
* What should the recipient do after the alert fires?

### 2. Translate the question into clear alert logic

Alerts are created by selecting structured conditions from dropdowns. Before configuring an alert, translate the business question into a logical statement that Lumi can evaluate.

A typical alert condition should define:

* The metric or field being monitored
* The operator or condition
* The comparison value
* Any relevant filters, segments, or time periods
* The users who should be notified

| Business intent                        | Example alert logic                              |
| -------------------------------------- | ------------------------------------------------ |
| Monitor declining shipment performance | On-time shipment rate is less than 75%           |
| Monitor low inventory                  | Inventory quantity is less than reorder point    |
| Monitor support backlog                | Open ticket count is greater than target backlog |
| Monitor revenue risk                   | Weekly revenue is less than target               |
| Monitor data quality                   | Data quality status equals failed                |

Use the clearest available dropdown options to express the condition. If the condition you need is more complex than the available alert logic supports, consider creating or validating the underlying metric in Query Builder before adding it to a Board.

### 2. Validate the metric before alerting on it

Use Chat, Query Builder, or an existing Board card to confirm that the metric returns the expected result before configuring an alert.

Why this matters: An alert is only as reliable as the metric behind it. If the query uses the wrong table, filter, join, date range, or aggregation, users may receive misleading alerts.

Validate the following before using a metric for monitoring:

* The correct Knowledge Base is selected
* The metric uses the right source tables
* The date range and time grain are correct
* Filters match the intended business scope
* The result matches known benchmarks or stakeholder expectations
* The metric appears in a format that can be used in the alert condition
* The available dropdown condition accurately represents the business rule

For analyst-owned or high-stakes metrics, use Query Builder to define and test the logic before publishing the result to a Board.

### 3. Use Boards for recurring monitoring, not one-time exploration

Use Chat to explore a question. Use Boards when the insight should be saved, refreshed, shared, or monitored over time.

Why this matters: Alerts need a stable insight to monitor. Boards provide the recurring context for saved metrics, refreshed results, and shared visibility.

Use Chat for:

* Why did revenue drop last week?
* Which customers drove the largest change?
* Show me the top products by margin this month.

Use monitoring and alerts for structured conditions such as:

* Weekly revenue is less than target
* On-time shipment rate is less than 75%
* Open order count is greater than the expected operating range
* Data quality status equals failed

### 4. Choose a refresh cadence that matches the business workflow

Set the refresh cadence based on how often the data changes and how quickly the team can respond.

Why this matters: Refreshing too infrequently can delay action. Refreshing too often can create unnecessary noise, especially when the underlying data does not update as frequently.

| Monitoring scenario              | Recommended refresh pattern                                |
| -------------------------------- | ---------------------------------------------------------- |
| Executive KPI review             | Daily, weekly, or aligned to business review cycles        |
| Operational exception monitoring | As often as the source data is meaningfully updated        |
| Financial or month-end reporting | Aligned to close, reconciliation, or reporting cadence     |
| Data quality monitoring          | Aligned to data load or pipeline refresh timing            |
| Low-volatility metrics           | Less frequent refreshes to avoid unnecessary notifications |

If a Board card fails to refresh, review the card and Knowledge Base logic before relying on the alert.

### 6. Set specific conditions that are stable and actionable

Choose alert conditions that clearly indicate when someone should investigate or act.

Why this matters: Conditions that are too broad, too sensitive, or disconnected from business action can create alert fatigue.

Less useful condition design:

* Revenue changed
* Inventory changed
* Orders look unusual

More useful condition design:

* Weekly revenue is less than target
* Inventory quantity is less than reorder point
* Open order count is greater than the expected operating range
* On-time shipment rate is less than 75%
* Data quality status equals failed

When setting conditions, consider:

* Metric: What value should Lumi monitor?
* Operator: What comparison should trigger the alert?
* Value: What threshold or status should be used?
* Time period: What date range or refresh period should apply?
* Segment: Should the rule apply to a specific region, customer group, product, or team?
* Stability: Will normal variation cause too many alerts?
* Actionability: Does the condition clearly imply follow-up?

### 6. Send alerts to the right owners

Choose recipients based on who can investigate or respond to the alert.

Why this matters: Alerts are less effective when they are sent to too many people, sent to the wrong team, or sent without a clear owner.

Before adding recipients, confirm:

* Who owns the metric?
* Who can investigate the root cause?
* Who needs to be informed but does not need to act?
* Should the alert go to an individual, a team, or a shared workflow?
* What should the recipient do after receiving the alert?

Example:

If an on-time shipment alert fires, the Operations team may need to investigate immediately, while leadership may only need to review the trend during a weekly business review.

### 8. Provide enough context for investigation

Make sure the Board card, title, description, visualization, and surrounding Board context help users understand what the alert means.

Why this matters: Because alert conditions are configured as structured logical statements, the surrounding Board context is important. When an alert fires, users should be able to quickly understand what changed, why it matters, and where to investigate next.

To make alerts easier to investigate:

* Use clear Board card titles
* Include the metric, segment, and time period in the card title or description
* Choose a visualization that makes the monitored value easy to interpret
* Group related metrics together on the same Board
* Keep the Board focused on a clear business workflow
* Use Chat or Query Builder to investigate the underlying drivers

### 9. Review and maintain alerts over time

Review alerts regularly to make sure they still reflect current business priorities, trusted data logic, and the right ownership model.

Why this matters: Business definitions, Knowledge Base logic, source data, Board cards, and team responsibilities can change. Alerts that are not maintained can become noisy, stale, or misleading.

Review alerts when:

* A Knowledge Base is updated
* Source tables, joins, or business definitions change
* A Board card fails to refresh
* The monitored metric is renamed, removed, or redefined
* The selected alert condition no longer reflects the intended business rule
* The monitored metric is no longer a priority
* Alert recipients or ownership changes
* Users report that an alert is too noisy or not useful

> Debugging
>
> If an alert does not behave as expected, first check whether the Board card refreshed successfully. Then confirm that the selected metric, dropdown condition, comparison value, and recipients still match the intended business rule.


# Knowledge Base Utility

Lumi AI’s Knowledge Base includes advanced features to enhance information management and retrieval. These features ensure more accurate, context-aware responses and improve overall system efficiency.

{% content-ref url="/pages/6g2Dep3pPDTqBsPaILAt" %}
[Curated Prompts](/using-lumi/knowledge-base-utility/curated-prompts)
{% endcontent-ref %}

{% content-ref url="/pages/Ao63D5D69qLfpkgkK9wP" %}
[Leveraging Memories](/using-lumi/knowledge-base-utility/leveraging-memories)
{% endcontent-ref %}


# Curated Prompts

Curated Prompts are custom questions designed to guide Lumi users in exploring data efficiently and effectively. These curated prompts provide a starting point for users, helping them to quickly understand the types of queries they can perform and how to interact with the data.

{% hint style="info" %}
Curated prompts or conversation starters are Knowledge Base specific.
{% endhint %}

## **Purpose of Curated Prompts**

Curated prompts serve a couple of important functions:

* **Example & Guidance:** Provide users with examples of how to ask questions or perform tasks, reducing the learning curve for new users.
* **Efficiency & Direction:** Save time by offering ready-made queries that users can modify as needed, rather than starting from scratch.

## Adding Curated Prompts

Contributors can add and edit conversation starters in the 'Overview' section of the Knowledge Base.

<figure><img src="/files/kAOQxpuJBgNfszP4Phox" alt=""><figcaption></figcaption></figure>

Once added, the prompts will appear under 'Curated Prompts' in the Prompt Advisor on the Chat UI.

<figure><img src="/files/uVOFZ2yTj0FfUia7L5Ns" alt=""><figcaption></figcaption></figure>


# Leveraging Memories

Lumi AI offers users the ability to moderate its behaviour in responses as means of real-time "training"/influence by selectively reinforcing positive and negative responses. This moderation is managed by forming what are termed "Memories".

## What are "Memories"?

Each memory is an example instance that Lumi AI will use for a particular Knowledge Base as a reference to either good (positive) or bad (negative) behaviour from a previous response/workflow.

Memories are created by providing "feedback" in chat (see further below on [Generating Memories](#generating-memories)). Here are some example scenarios and why/how a user may choose to provide feedback:

* **Positive Reinforcement Example**
  * Scenario: Lumi AI correctly joined multiple chained tables to apply a complex formula/metric described in the Knowledge Base context.
  * Reason: This will be used to influence the same pattern in future prompts surrounding the metric within the correct contextual application in other cases.
* **Negative Reinforcement Example**
  * Scenario: Lumi AI filtered on a target item id but in the wrong field. Thus the response was "inaccurate" by virtue of incorrect field selection.
  * Reason: It is as valuable to understand what is valid as invalid, thus indicating the wrong field was used will inform future examples of what to avoid doing, promoting the right behaviour instead.

{% hint style="warning" %}
Note that at the moment, memories strictly influence **SQL Code** generation only. Memories will have no effect on the insights, graph formatting, or other aspects of a response.
{% endhint %}

## Generating Memories

Memories go through three phases: proposal, endorsement, and invalidation.

### 1. Proposal

Memories are generated when you provide "feedback" to a response in Chat. This creates a "proposed" memory in the Knowledge Base for Contributors to apply.

A memory will have no effect until it has been reviewed.

### 2. Endorsement

In the Knowledge Base Memories tab, Contributors can view proposed memories and either "commit" or "reject" the memory.

* If the memory correctly identifies a positive or negative example, the Contributor should "commit" the memory, which (on Save of the KB), will make it available for all.
* If the memory proposed incorrectly identifies a positive or negative example (i.e., a false positive or false negative, as in a faulty or inaccurate responsive that has been dubbed positive or an ideal response that has been dubbed negative), the Contributor should "reject" the memory.

Once all proposals have been committed or rejected, the Contributor can save the Knowledge Base and make memories immediately effective in Chat and Boards.

#### 2.1 Special Consideration: Volume of Similar Memories

Each memory will indicate how many "Similar Memories" it has (if any). When reviewing Proposed Memories, it is worthwhile to evaluate this number:

* **0** -- No similar memories means it's a worthwhile candidate for endorsement, subject to all other considerations that may apply.
* **1 to 5** -- Having a few memories is better than 0 or 1, and having a mix of positive and negative or other combinations further improves performance via memories, so a small volume is worthwhile to complement with additional records. Completely redundant records though are likely low value-add.
* **5+** -- Beyond 5 memories (largely an arbitrary suggested limit, it may be worthwhile to have more) it is unlikely that additional endorsement/committal of memories has positive impact. For performance optimization, a subset of memories are only ever applied, with a preference for mixing positive and negative variations, thus only the most relevant memories will be used. In some instances, slightly lower relevance but high distinctiveness in a memory may be more valuable, thus it is recommended to keep the volume low and distinct.

### 3. Invalidation

The final lifecycle stage of a memory is "invalidation". If a dependency changes (see below), this means that the memory may no longer apply. For example, the Knowledge Base may originally indicate that average sales officially refers to the last 3 months of sales when no time period is specified, but the Knowledge Base may update and evolve such that the definition changes to 6 months, in which case positive reinforcement with 3 months are now invalid and should no longer be used.

Once invalidated, a memory will cease being used and cannot be recovered.

{% hint style="warning" %}
Memories have strong influence and are thus highly impactful on responses. For this reason, invalidation is sensitive and absolute, to minimize the complexity in finely addressing compatibility of changes and minimizing overall Contributor effort.
{% endhint %}

## Understanding "Dependencies"

While memories are incredibly powerful for quickly and effectively tuning or dialling-in behaviour for a Knowledge Base, they can also potentially hold back a Knowledge Base as it evolves. For this reason, each memory is associated with its own "Dependencies", as hinted earlier.

A dependency is simply a static/immutable reference to an existing context element in the Knowledge Base. This can be:

* A table or field, its source, and definition
* A model join/relationship
* A metric, detail, or other "business context" element

When any of these items are modified, this causes that particular named dependency to change or be removed, thus causing "invalidation" (see earlier life cycle notes).

{% hint style="warning" %}
Note that in rare examples it is possible for the addition of context and possible future dependencies to adversely affect an otherwise valid, committed memory. In these cases, the existing memory should be reviewed and rejected.
{% endhint %}

## Listing Memories

All Knowledge Base members are free to view memories in all their states -- proposed, committed, rejected, and invalidated -- as well as all their relevant details in the Memories tab.

For more information and how to interact, see the [Memories](/product-features/knowledge-base/memories) section of the Knowledge Base.

## Observing Memories Usage

Memories are observable in our "Blocks" framework, during context isolation. Here you can see the examples (positive and negative) that are selected for influence in parallel with relevant context pulled for the response.

{% hint style="info" %}
"Blocks" are available in private preview only, please stay tuned for the full release!
{% endhint %}

{% hint style="info" %}
Future Functionality: Users will be able to disable or force-select from memories in the future.
{% endhint %}


# Understanding Workflows

Lumi AI is powered by its own proprietary workflows which orchestrate a variety of agents to interpret intent, generate code, provide insights, and everything inbetween.

There are a few concepts that help understanding how Lumi Worklfows processes your request:

[Prompt Rephrasing](/using-lumi/understanding-workflows/prompt-rephrasing)


# Prompt Rephrasing

Prompt Rephrasing is a mechanism whereby the user prompt is cleansed and formatted for better context association and processing by agents in the workflow.

## Key Features

It supports with several functions outlined below.

### 1. Removes Typos & Adds Punctuation

Small formatting and typo issues are addressed to cleanse the prompt. This increases interpretability and success rate for correctly processing the user's prompt. Note that this may not correct items disclosed in quotes or other words or phrases that suggest they are as-intended already.

### 2. Incorporates Chat History

Prompts and responses noted earlier in the chat (thread) that are relevant to the current prompt are incorporated in the Rephrased Prompt. This consolidates context into the prompt used across agents avoiding complications with history and irrelevant actions or context for the other agents to interpret in lieu.

### 3. Restructures for Intent

The main driver is to also add interpretation for very loosely-articulated prompts, so the workflow has a consistent interpretation throughout its run. This aims to minimize ambiguity in the context of different agents and their instructions/scopes.

### 4. Facilitates More Accurate Context Retrieval

By standardizing prompts for consistently and completeness, we improve retrieval-augmented generation (RAG) performance overall and make it more consistent between users and their different prompts, making overall behaviour and performance of the workflows more predictable.

## Other Considerations

While rephrasing has many functions and is a key component of workflows, there are items to consider:

* If the prompt is too ambiguous rephrasing will simply request that the user provides more clarity rather than making excessive assumptions.
* Prompt Rephrasing on occasion may add context in trying to achieve clarity. In these cases it is suggested you reattempt clarifying any ambiguous points or adding quotes on items you do not want changed.


# Limitations

Lumi AI’s performance depends on the clarity and structure of input data. Ambiguous or overly broad queries may lead to less precise results. For highly detailed analyses, structured queries and well-defined context yield better insights. Below are a few areas to be aware of to gain the best results.


# Query Constraints


# Network Configuration

For Lumi AI to effectively respond to requests in Chat or Boards, it requires access to the source system connections defined within each Knowledge Base. Depending on the mode/type of connection, different considerations apply.

## Direct Connections

A direct connection is the simplest connection type, providing a means for communication directly between Lumi AI's servers and the target system. Each system has different requirements for connection properties (see [Source System Integrations](/product-features/source-system-integrations) for more details).

With a direct connection, Lumi AI's servers initiate outbound TCP connections to your database host on its configured port (e.g. 5432 for PostgreSQL, 1433 for SQL Server, 3306 for MySQL). Your database host must have a publicly reachable IP address and accept inbound TCP connections from Lumi AI's IP addresses on that port.

For added security, you can restrict access via IP Whitelisting ([see below](#ip-whitelisting)).

## Data Gateway

A more advanced connection method, where the direct method is insufficient or not applicable, involves the use of Lumi AI's Data Gateway -- a lightweight application for mediating connections between a system in your client network and Lumi AI's backend.

This approach requires downloading, configuring, and running an instance of the Data Gateway somewhere on the network with internet access that can still communicate freely with the source system. To learn more see here [Data Gateway](/product-features/data-gateway).

Data Gateways require no inbound internet access. All communication is outbound-initiated HTTPS (port 443) from the gateway host to Lumi AI. IP whitelisting is generally not required, but can be applied without conflict.

### Enterprise and Firewall Considerations

**Protocol and port:** The Data Gateway communicates exclusively over HTTPS (TLS 1.2+) on port 443. No other ports or protocols are used.

**Hostname-based and SNI filtering:** If your network performs hostname or SNI-based filtering (common in DPI appliances), the following FQDNs must be explicitly allowed:

* `api.lumi-ai.com`
* `broker.lumi-ai.com`

**TLS/SSL inspection:** If your network performs SSL/TLS inspection (sometimes called SSL decryption or MITM interception), the gateway host must be configured to either exclude the above FQDNs from inspection, or trust your organization's inspection CA certificate at the OS level — the gateway uses the system certificate store. Failure to do one of the above will produce certificate validation errors and prevent the gateway from connecting.

**Firewall idle timeout:** The Data Gateway holds HTTPS connections open for up to 60 seconds while polling for work. Firewalls or DPI appliances configured with idle TCP timeouts shorter than this will drop connections prematurely. Set a minimum idle timeout of 90 seconds for connections to Lumi AI endpoints. The gateway handles reconnection automatically, but aggressive timeouts cause unnecessary connection churn.

**HTTP/HTTPS proxy:** The Data Gateway does not currently support routing through a corporate HTTP or HTTPS proxy. The gateway host requires direct outbound HTTPS access to Lumi AI endpoints. If your environment mandates proxy traversal for all outbound traffic, contact support to discuss options.

{% hint style="info" %}
Note that Data Gateways are only available for the Enterprise license tier. Direct connections are available on any tier.
{% endhint %}

## IP Whitelisting

Lumi AI uses several IP addresses for traffic inbound and outbound globally.

<table><thead><tr><th width="136.93359375">IP</th><th width="147.92578125">Region</th><th>Notes</th></tr></thead><tbody><tr><td>15.197.73.100</td><td>Global (anycast)</td><td>Data Gateway destination; <code>api.lumi-ai.com + broker.lumi-ai.com</code></td></tr><tr><td>15.197.95.231</td><td>Global (anycast)</td><td>Data Gateway destination; <code>api.lumi-ai.com + broker.lumi-ai.com</code></td></tr><tr><td>3.22.158.185</td><td>US-East</td><td>Lumi AI server egress (direct connections)</td></tr><tr><td>18.190.93.61</td><td>US-East</td><td>Lumi AI server egress (direct connections)</td></tr><tr><td>18.224.164.162</td><td>US-East</td><td>Lumi AI server egress (direct connections)</td></tr></tbody></table>

When whitelisting, all IP's should be whitelisted (not just regional or global).

For environments using hostname-based filtering, allowlist `api.lumi-ai.com` and `broker.lumi-ai.com` in addition to or in place of the IP addresses above.


# Chat

## Overview[​](http://localhost:3000/docs/product-features/chat#overview) <a href="#overview" id="overview"></a>

The ‘Chat’ module is the primary interface to query your data.

* Simply ask questions in plain language.
* Latency depends on your connection type and query complexity.
  * Simple questions: \~10-15 seconds
  * Complex queries: up to 30-45 second

{% hint style="info" %}
To learn more about the types of questions that can be asked, view [Lumi Use Cases](/using-lumi/lumi-use-cases).
{% endhint %}

{% hint style="info" %}
Learn more about [Prompting Best Practices](/using-lumi/best-practices/prompting-best-practices).
{% endhint %}

{% embed url="<https://youtu.be/nAHdDgPXG2U>" %}

## Start Chat[​](http://localhost:3000/docs/product-features/chat#start-chat) <a href="#start-chat" id="start-chat"></a>

To start a chat, you must first select the knowledge base.

<figure><img src="/files/c4WDpeg98VYiyvgmrXLE" alt=""><figcaption></figcaption></figure>

### Analysis​ and Contextualization

A key capability Lumi provides is transparency into how it performs structured, data-driven decision-making. It begins by translating your question into a form the LLM can interpret, then identifies and isolates the exact data needed to run the analysis.

<figure><img src="/files/G7uJylAfCcx6wq7gIOxJ" alt=""><figcaption></figcaption></figure>

### Explained Overview

Explanation is a very helpful view of the steps that Lumi took to generate the returned data. This is useful to check overall logic.

<figure><img src="/files/LGIl0lzREAnFtF8IsU3B" alt=""><figcaption></figcaption></figure>

### SQL Code

Local Code defines the query that was run to generate the returned data. This is critical for technical understanding and validating the returned data.

<figure><img src="/files/tPVeTL6tZpf14QJ5hZD6" alt=""><figcaption></figcaption></figure>

## Data Display (Tables and Charts) <a href="#start-chat" id="start-chat"></a>

Upon returning data from a given query, an interactive display is available to understand returned data. Data can be viewed in both a Table or Chart form. Data can also be downloaded for full accessibility as well as copied to clipboard.

<figure><img src="/files/te1uWPhGkvWY7JcpZIQM" alt=""><figcaption></figcaption></figure>

<br>


# Managing Chats

Managing your conversations is simple and flexible. With a few quick actions, you can organize, rename, or delete chats to keep your workspace clean and easy to navigate.

## Organize Chats[​](http://localhost:3000/docs/product-features/chat#organize-chats) <a href="#organize-chats" id="organize-chats"></a>

The sidebar allows you to filter between chats you created and chats shared by others.

You can also sort chats by knowledge base or by the most recent activity. You can also filter chats through key words.

<figure><img src="/files/8tXBKJUUdZLyxW6Kti0S" alt=""><figcaption></figcaption></figure>

## Rename Chat[​](http://localhost:3000/docs/product-features/chat#rename-chat) <a href="#rename-chat" id="rename-chat"></a>

To rename a chat, click on the chat title, make the necessary edits, and then save.

<figure><img src="/files/3MXyQRXII2AOtgL8Wr1k" alt=""><figcaption></figcaption></figure>

## Delete Chat[​](http://localhost:3000/docs/product-features/chat#delete-chat) <a href="#delete-chat" id="delete-chat"></a>

There are multiple ways to delete chat:

* Click on the 3 dots next to share OR Expand the side bar, hover over the chat, and click on the trash icon

<figure><img src="/files/cHnNkdy9HrY1moJbWtqb" alt=""><figcaption></figcaption></figure>


# Prompt Helper

The Prompt Helper is built for data analysts at any level — from beginners exploring data for the first time to seasoned professionals with a refined approach to problem-solving.

### Table Preview

For seasoned users, developing a strong grasp of the underlying data is even more critical. ***Table preview*** provides you visibility to the shape, quality and relationships within your data. Coupled with years of domain expertise, Analysts can now surface previously overlooked drivers, validate hypotheses, and ensure the right actions are taken to address inefficiencies and unlock oppprtunities.\
[​](http://localhost:3000/docs/product-features/chat#curated-prompts)

<figure><img src="/files/HomDh0Xz9k6WGBj5BbpT" alt=""><figcaption></figcaption></figure>

### Curated Prompts

Leveraging its proprietary inference engine, LumiAI detects and surfaces **context-aware prompts** to guide deeper investigation and informed decision-making.\
\
Curated prompts give a starting point to begin analysis, offering sample queries that help you explore your data, uncover insights, and learn how to interact with LumiAI effectively. Whether you’re performing high-level exploration or conducting a deep dive into specific issues, Curated Prompts guide you toward meaningful questions and actionable insights.

{% hint style="success" %}
Lumi is designed to extract actionable ***insights*** from operational data using plain language. It is not intended as a database query tool or SQL generation platform.
{% endhint %}

**Curated prompts** can be accessed in two ways. First, at the start of every chat, you’ll see a set of recommended prompts to help kick off your data and insight exploration.

<figure><img src="/files/TBegeeYsu4AeeVLoCR4O" alt=""><figcaption></figcaption></figure>

The second method surfaces curated prompts directly within an ongoing chat, helping you pivot directions seamlessly as new questions or insights arise.

<figure><img src="/files/Y2wkG1rCbY7licgf9RHE" alt=""><figcaption></figcaption></figure>

### Playbook

Playbook is industry and business function specific curated prompts to give a starting point to uncover insights and real business value depending on desired objective. (Increasing Revenue, Reducing Costs, Improving Customer Experience etc.)<br>

<figure><img src="/files/RQtYGU1svvWSGdBuyeg4" alt=""><figcaption></figcaption></figure>

Filter by industry or business function to narrow playbook prompts to suite query objective. Playbooks are designed to drive common insights that are applicable to specific industries.

{% hint style="warning" %}
Depending on business type and knowledge base configuration, not all playbook prompts will be applicable or will have context for accurate responses.
{% endhint %}


# Show Thinking / Hide Thinking

### Show Thinking

**Show Thinking** gives users a **visual cue** of where their request currently sits within LumiAI’s dynamic reasoning loop—without exposing every underlying step. It’s a lightweight way to track progress at a glance.

To enable Show Thinking mode, the user just has to enable the feature as seen in the screenshot below:

<figure><img src="/files/Yi9lPlcawJt7H4yQwqz4" alt=""><figcaption></figcaption></figure>

After entering a specific prompt, The cues will update as Lumi works—no extra action required until the result is delivered.\
![](/files/t5OrdZijV3ow5YMbn3uh)<br>

### Hide Thinking

By toggling Hide Thinking, you can peek into the mind of LumiAI and see how it works through a particular problem in more detail.

<figure><img src="/files/Ix0f9bughbfJ377vUSpB" alt=""><figcaption></figcaption></figure>

The iterative problem-solving approach is represented in blocks; below are some aspects to highlight

* **Adaptive, not linear:** The blocks don’t represent a fixed sequence. Lumi may revisit earlier steps — clarifying intent, pulling in new context, or retrying reasoning — before moving forward.

<div data-full-width="true"><figure><img src="/files/xiOSYoJMJn8NYPCsR5YH" alt=""><figcaption></figcaption></figure></div>

* **Transparent:** Each block can expand to reveal more about the reasoning behind Lumi’s decisions.

<figure><img src="/files/n5BJAEKk1JSfSpJwKk4b" alt=""><figcaption></figcaption></figure>

* **Trust-building:** By showing *how* Lumi works through a problem, Hide Thinking builds confidence in the quality of the final result.

\
*Note: Many of LumiAI’s recursive steps—such as error handling, re-checking context, or refining partial answers—happen silently in the background. These adjustments ensure the final response is accurate and complete, without requiring user intervention.*


# Sharing Chats

[​](http://localhost:3000/docs/product-features/chat#sharing-chat)To share a chat, click **Share** and select the users you want to provide access to. Sharing chat history serves multiple purposes:

* **Audit & Compliance** → Maintains a documented record of analyses.
* **Transparency** → Allows others to follow your assumptions, logic, and chain of thinking that led to a specific conclusion.
* **Continuity in Decision-Making** → Enables teammates to pick up where you left off without repeating work, spot potential errors, and strengthen the quality of insights.
* **Knowledge Transfer** → Helps onboard new team members by showing how prior analyses were structured and decisions were reached.
* **Cross-Functional Alignment** → Ensures stakeholders across teams (e.g., product, finance, operations) are working from the same context and insights.

<figure><img src="/files/dBTxtlKTRcX05z1j2pYA" alt=""><figcaption></figcaption></figure>


# Multi-Threading

Our conversational analytics is augmented with what we refer to as **"Multi-Threading"**, which refers to LumiAI's ability to break down complex, vague, or broad-spanning questions into a set of inner prompts that are explored in parallel and summarized at the end. Through this methodology, workflows are executed recursively to find a comprehensive answer to a user's question.\
\
Multi-Threading is invoked automatically based on the nature of the prompt, but users can also direct it by incorporating investigative prompts, such as:

* "Explore...."
* "Explain why..."
* "Breakdown..."

## Benefits for Utilizing Multi-Threading

* <mark style="color:$success;">**Increases Creativity and Diversity**</mark> by starting Wide and Exploring Many Angles
* <mark style="color:$success;">**Avoids Single-Path Failures**</mark> where one path can lead to a reasoning blind spot or flawed conclusion
* <mark style="color:$success;">**Improves Accuracy**</mark> by evaluating contradictory paths and refining its previous reasoning
* <mark style="color:$success;">**Promotes Visibility and Traceability**</mark> by providing clear insight to how a final output was derived
* <mark style="color:$success;">**Integrates Strongest Ideas**</mark> from all the individual paths into one coherent answer

## How to Trigger Multi-Threading

**Step 1:** Begin by selecting the primary KPI or metric you want to analyze. This establishes the focus for the entire workflow.

<figure><img src="/files/YNfaJNNbPsVz2aHd7tKv" alt=""><figcaption></figcaption></figure>

**Step 2:** When you apply one of the investigative prompts (e.g., “Investigate the root cause…”), Lumi automatically launches multiple reasoning paths in the background. In the screenshot below, you can see five distinct analysis threads generated in response to the prompt.

<div align="left" data-full-width="false" data-with-frame="true"><figure><img src="/files/C9paWmGZAfzba3pj7EqM" alt=""><figcaption></figcaption></figure></div>

**Step 3:** You can drill into the details of any thread by clicking the gray LumiAi icon next to it. For example, in the screenshot below, we expand the “Analyze shipping carrier performance… external logistics issues” thread to understand how carrier behavior influences the higher-order KPI (e.g., On-Time Delivery %).

<div data-with-frame="true"><figure><img src="/files/QZlby3fVr10jyj6qIaSv" alt=""><figcaption></figcaption></figure></div>

**Step 4:** At the end of the workflow, provides a unified summary that synthesizes insights from all reasoning paths into one cohesive output. This consolidated view allows you to quickly understand key findings and consider next steps.

<div data-with-frame="true"><figure><img src="/files/T9wv10A2Oe0VcOqfNlsW" alt=""><figcaption></figcaption></figure></div>


# Chat Filters

Chat Filters are a lightweight, conversation‑scoped way to control how Lumi queries your database during an analysis. Filters apply only to the active conversation, giving you fine‑grained control without affecting other analyses or users.

## Benefits for using Chat Filters

* **Precisely scope analysis** without queries or prompts
* **Refine results in real time** as questions evolve
* **Move seamlessly from exploration to investigation** within a single conversation
* **Preserve analytical context** while adjusting constraints
* **Maintain transparency and trust** by verifying filters directly in the generated SQL

## How to Apply Chat Filters:

**Step 1:** Choose the knowledge base you want to extract insights from

<figure><img src="/files/dkj9KI7GmCH2HQd8EudQ" alt=""><figcaption></figcaption></figure>

**Step 2:** Toggle the "**Filter"** button to view and apply attributes derived from your knowledge base (semantic layer) to the active conversation.

<figure><img src="/files/xNC5Qjb1eReeJDN1GSfI" alt=""><figcaption></figcaption></figure>

**Step 3:** Select one or more fields from your knowledge base and assign specific values to use as filters. For example, you could apply a date filter to focus on records occurring after April 2025.

<figure><img src="/files/TUStQCPSAUFNjwTY0hT7" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/7JbDljoguShN1X69w2ch" alt=""><figcaption></figcaption></figure>

**Step 4:** Visually, we can verify that our prompt generated insights starting May 2025.

<figure><img src="/files/4DgI7Ugn6VZEahNfQdrm" alt=""><figcaption></figcaption></figure>

\*\*For SQL-leaning stakeholders, Lumi makes the generated SQL visible so it can be reviewed and validated.

<figure><img src="/files/GX9plEo03rZ7lIPduJLz" alt=""><figcaption></figcaption></figure>


# File Upload

File Upload lets you attach files directly into a chat so the assistant can use them as additional context when responding to user's queries.

This is especially useful for technical users who want to move quickly by leveraging existing work artifacts (e.g. PDFs, CSV, or text file) to accelerate analysis and decision-making.

## Benefits for Utilizing File Upload

* **Speed to outcome** by providing net-new, high signal context so the assistant can quickly assess impact and generate actionable insights.
* **Leverage existing work** by reusing validated, previously aligned-upon artifacts (e.g., reports, specs, definitions) that are already trusted by technical and management teams.
* **Unlock multi-source synthesis** by combining multiple artifacts to support richer, more complete analysis of real-world technical questions.

## How to Upload a File in Chat

**Step 1:** Open the chat. In the message input area, click **“+ Attach a file”** to upload a file for LumiAI to provide the incremental analysis and insights.

<figure><img src="/files/T6U77xGrsmStu4iqetIw" alt=""><figcaption></figcaption></figure>

**Step 2:** Confirm that the uploaded file (e.g., Service Level Agreement Acacia Foods Co.pdf) is included in the assistant’s analysis.

<figure><img src="/files/i9tegyePiQ357ZDCTPtd" alt=""><figcaption></figcaption></figure>

**Step 3:** Reference the uploaded document in your prompt to guide the results.

<figure><img src="/files/3Minu7FhIwZr9seTlQyZ" alt=""><figcaption></figcaption></figure>


# Boards

## Overview <a href="#overview" id="overview"></a>

**Boards** provide a centralized dashboard for tracking your most important prompts and their latest insights. Pin recurring questions, auto-refresh results, and use Boards as a high-level starting point before drilling into chats for deeper investigation.

{% embed url="<https://youtu.be/pRTk_ziV_8g>" %}

## When to use Boards <a href="#create-board" id="create-board"></a>

* <mark style="color:$success;">**Monitor recurring questions**</mark> over time without rerunning the same prompts manually
* <mark style="color:$success;">**Track key insights at a glance**</mark> before diving into detailed chat analysis
* <mark style="color:$success;">**Create a consistent reporting view**</mark> based on one Knowledge Base
* <mark style="color:$success;">**Share a high-level snapshot**</mark> with stakeholders, then drill down as needed

## Create Board <a href="#create-board" id="create-board"></a>

There are multiple ways to create a board:

* <mark style="color:yellow;">**Option 1 - From a Chat**</mark><mark style="color:yellow;">:</mark> Use "**Add to Board"** to save a chart to an existing Board or create a new one.

<figure><img src="/files/h01ICzNe0v0Ms1cZa55s" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/czJyAUmBJdHIC5JkInAH" alt=""><figcaption></figcaption></figure>

* <mark style="color:yellow;">**Option 2 - From the Boards Page**</mark><mark style="color:yellow;">:</mark> Click + New Board, then select the Knowledge Base you want to use. This ensures all insights on the Board are generated from a consistent data source.

<figure><img src="/files/BTktM2L9NTvQZOdvkuoC" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/rVdw9ZdbPwqMA5sk3nl8" alt=""><figcaption></figcaption></figure>


# Configure Board Settings

Configure a Board to keep it accurate, organized, and aligned to your reporting needs. You can rename, publish, or delete Boards, manage visibility and sorting, and customize layouts by resizing or rearranging cards. Update card fields, titles, and chart settings as needed, and use **Refresh Cards** to auto-update insights—status indicators will flag any refresh failures so you can address outdated or mismatched results.

***

## **Rename Board**

To rename a board, click on the title, make the necessary edits, and then save.

<figure><img src="/files/PoMU9GoSFm93PouFDF8U" alt=""><figcaption></figcaption></figure>

***

## **Layout Customization**

After clicking **Edit** in the top-right, you can reassign and rearrange cards to design boards that match your workflow and reporting needs.

<figure><img src="/files/7sY6q0i6RF4PAoMlgHvc" alt=""><figcaption></figcaption></figure>

***

## **Scheduling Refresh Rates**

Schedule boards to refresh and deliver at set intervals so insights are always current without manual effort.

<figure><img src="/files/126FYLEuCSQMqStUmZVr" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
A status symbol will indicate if a card failed to refresh. Hovering over the symbol will show how outdated the last successful state is. Refresh failures typically occur due to changes in the knowledge base. If done accidentally, the knowledge base can be adjusted back. If the change is permanent, the card must be removed and regenerated in chat or directly on the board.
{% endhint %}

***

## Pinning Board to Favorites

Click the **star** icon to add the Board to your **Favorites** for quicker filtering later.

<figure><img src="/files/fNva46Ve4JVs4p1SUbd5" alt=""><figcaption></figcaption></figure>

***

## Publishing Your Board

To publish a Board, click the **Publish** icon in the top-right. This allows other users in your workspace to view the Board.

<figure><img src="/files/g8RCxPvAwxiDN1EBqQJx" alt=""><figcaption></figcaption></figure>

***

## Delete Board

To delete a board, click on the 3 dots on the top right hand side of interface.

<figure><img src="/files/RMItUqOkS9xkb7M3YtPo" alt=""><figcaption></figcaption></figure>


# Card Configuration and Utilization

Within each Board, you can edit cards to match your reporting needs. Update chart fields, display settings, titles, and descriptions, then drill into chats for deeper investigation.

***

## Update Title

Cards can be customized to clearly communicate the insights you want to share with stakeholders.

<figure><img src="/files/dabruF3ytP6mWiH7NR50" alt=""><figcaption></figcaption></figure>

***

## Update Card Contents <a href="#organize-boards" id="organize-boards"></a>

Chart fields, axis, and sort dimensions can be modified. Click the pencil icon to begin edits.

<figure><img src="/files/IMo6UKPleUJvdXKoFVcv" alt=""><figcaption></figcaption></figure>

User will be provided a variety of options in order to modify the contents of the chart. Click the :white\_check\_mark: icon to ensure changes are saved.

<figure><img src="/files/uq20yp847JKeYGB28XNB" alt=""><figcaption></figcaption></figure>

***

## Setting Alerts

User can create alerts to notify stakeholders of changes when certain criteria are met

<figure><img src="/files/1LLan33FDcE4A7NiReS3" alt=""><figcaption></figcaption></figure>

Click Add Alert to create rules that notify selected users when key metrics change. For example, you can set an alert to notify you when On-Time Shipment drops below 75%.

<figure><img src="/files/xDhFdgCNKJdJuiEFi1XX" alt=""><figcaption></figcaption></figure>

***

## Sharing Charts

Click **Share** to copy a link that gives users direct access to the chart.

<figure><img src="/files/bhwonovXpsoDFo70LNVi" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/uW4DnLD4UP7QC8k6eB4w" alt=""><figcaption></figcaption></figure>

***

## Drilldown Analysis

To dive deeper, click **Drilldown** to open Lumi and explore the data further with follow-up questions.

<figure><img src="/files/FOyjjihgi1wl1IH0917F" alt=""><figcaption></figcaption></figure>

This will open a new chat where you can continue investigating the data. Lumi will suggest follow-up prompts, and you can refine the analysis by asking additional questions, attaching files for more context, or enabling multi-threading to explore multiple lines of reasoning at once.

<figure><img src="/files/J7cBCrwAOsbysiigWGQN" alt=""><figcaption></figcaption></figure>


# Visual Chart Types

Data can answer many kinds of questions, but not all questions are best served by the same visual. Lumi AI offers a wide range of visualization options to help you move from raw data to actionable insights. Each visual type serves a specific analytical purpose — from precision and drilldowns to executive storytelling and KPI monitoring.

***

## Table Chart

A tabular display of raw or aggregated data in rows and columns. It presents exact values, often with sorting, filtering, or highlighting options.

This type of reporting is typically chosen when the user wants to:

* Ensure precision and give stakeholders direct access to the actual numbers.
* Provide a detailed breakdown that complements higher-level visual summaries.
* Explore small datasets or drill down into details after reviewing charts.

<figure><img src="/files/t5MrFfouMdbdCla3VnIF" alt=""><figcaption></figcaption></figure>

**Takeaway:** Tables are valuable because they show **percentages and absolute numbers together**. Percentages highlight *relative importance or proportion*, while absolute values reveal the *scale and real-world impact*.

***

## Line Chart

A chart that connects data points with a continuous line, typically used to show values across time or another ordered dimension.

This chart type is most effective when the goal is to:

* Highlight trends, growth, or decline over time.
* Compare multiple series on the same timeline to spot similarities or differences.
* Emphasize continuity and direction of change rather than individual point values.

<figure><img src="/files/gawzHMuQL3aC2DkxLRJR" alt=""><figcaption></figcaption></figure>

**Takeaway:** Line charts are especially powerful is their ability to reveal both the **magnitude of change** and the **momentum behind it**. Momentum shifts can reflect external influences such as **seasonality** (e.g., holiday spikes) or the impact of **strategic programs** (e.g., product launches, marketing campaigns).

***

## Bar Chart

A **Bar Chart** represents categorical data with rectangular bars, where the length of each bar is proportional to its value. Bars can be displayed vertically (columns) or horizontally.

This chart type is most effective when the goal is to:

* Compare categories side by side to see how they stack against each other.
* Rank values clearly, making it easy to identify leaders and laggards.
* Spot anomalies or outliers that stand out against the rest of the distribution.
* Improve readability when category labels are long (horizontal bars work best).

<figure><img src="/files/PauejaHd8K2fA01VTaKw" alt=""><figcaption></figcaption></figure>

**Takeaway:** Bar charts are powerful because they make **differences, rankings, and outliers instantly visible** — one of the fastest ways to transform raw comparisons into clear, actionable insights.

***

## Area Chart

An **Area Chart** is a variation of the line chart where the space beneath the line is shaded, emphasizing not just the trend but also the **magnitude of contributions** over time.

While a line chart is ideal for showing movement (ups and downs), an area chart adds context by visually representing the amount behind those movements. The shaded region transforms a simple trajectory into a sense of scale, helping viewers instantly grasp how significant a change really is.

Area charts are especially effective when you want to:

* Illustrate the total accumulation or intensity of a metric across time (e.g., total revenue, traffic, or usage).
* Reinforce how much of something has occurred, rather than only how it has changed.
* Create a stronger emotional and visual impact — the filled area draws the eye and conveys depth, making trends feel more tangible

<figure><img src="/files/1kFLsiz6e051bh3yKg3d" alt=""><figcaption></figcaption></figure>

{% hint style="warning" %}
Key Points to Note

Area charts currently support **only single time series data**. Pivoting or subaggregating is currently in development.
{% endhint %}

\
**Takeaway:** Area charts move beyond general time-series analysis by revealing the **composition of change**. They make it easy to see which categories, products, or regions are contributing most to a KPI’s movement.

***

## Scatter Chart

A **Scatter Plot** visualizes data as individual points plotted along two axes, allowing you to see how variables interact with one another. Unlike charts that summarize data into totals or categories, scatter plots preserve the raw distribution, making hidden patterns easier to spot.

This chart type is most effective when the goal is to:

* Instantly uncover relationships between variables without heavy drilldowns.
* Detect positive/negative correlations or the absence of one.
* Identify outliers that stand apart from the pattern.
* Reveal clusters that indicate natural groupings in the data.

<figure><img src="/files/JrOniLE9BloZtU0Ck4W8" alt=""><figcaption></figcaption></figure>

**Takeaway:** Scatter plots let you **skip the drilldowns and surface hidden dynamics instantly** — the fastest way to move from “what happened” to “why did it happened.” For example, in the chart above, you can immediately see anomalies in the 3008 and 3009 promotion programs, prompting deeper investigation into why sales actually dropped during those periods.

***

## Pie Chart

A **Pie Chart** is a circular chart divided into slices, with each slice representing a category’s proportion of the whole.

**When to best use it**

* To show part-to-whole relationships for a small number of categories (ideally ≤ 5).
* When the focus is on proportions and share, not exact values.
* For simple, high-level communication that needs to be instantly understood.

<figure><img src="/files/v0eYwVZgr6vZz44676t4" alt=""><figcaption></figcaption></figure>

**Takeaway:** Pie charts make contributions instantly visible, quickly showing **who contributes what** and spotlighting dominant categories without overwhelming the viewer. They are especially helpful for management decisions, such as whether to shrink, phase out, or reallocate resources for underperforming segments, since low-contributing slices stand out immediately.

***

## Doughnut Chart

Doughnut charts are more than just a cleaner version of pie charts — they’re built for **executive storytelling**. By placing the **headline KPI in the center**, they tie the total directly to its contributing parts, making it easy to see the big picture and the breakdown in one glance.

This chart is more effective when you need to perform the following:

* **Highlighting contribution to a total:** When you want to tie the whole (the KPI in the center) directly to the parts (the slices around it).
* **Comparing multiple metrics:** When several KPIs (e.g., revenue, expenses, churn) need to be compared side by side in a dashboard, with each doughnut carrying both the total and its composition.
* **Cleaner dashboards:** When space is limited and you want a chart that’s compact, scannable, and consistent across different KPIs.

<figure><img src="/files/albjRXz20cq7bSaqYpUi" alt=""><figcaption></figcaption></figure>

**Takeaway:** Doughnut charts are the executive-friendly upgrade to pie charts. They keep the total visible, reduce dashboard clutter, and make it easier to connect the big number with its contributing slices — all in one glance.


# Query Builder

### Overview:

Query Builder is Lumi AI's dedicated SQL development environment, enhanced with Lumi AI as a context-aware Copilot. It provides analysts with a code-first workspace to write, test, and iterate on SQL while leveraging AI assistance grounded in their organization’s Knowledge Base. This enables faster iteration, easier debugging, and more reliable insight generation.

### Key Capabilities/ Benefits :

* **Dedicated SQL Editor** – A full SQL development environment designed for analysts who want direct control over joins, filters, calculations, and query structure.
* **Contextual AI Copilot** – AI assistance that understands your schema, stored definitions, and business context to help extend or improve queries.
* **One-Click Debugging** – Automatically diagnose and resolve SQL errors with contextual suggestions surfaced directly in the editor.
* **Tracked Iterations** – Every query version is preserved, allowing analysts to experiment safely and revert to previous logic when needed.
* **Publishing to Boards** – Share validated queries directly to Boards to make insights visible across teams.
* **Alerts on Trusted Logic** – Configure alerts on queries so teams are automatically notified when important thresholds are reached.

***

## How to Use Query Builder

Step 1: Select the **"Query Builder"** feature on the left hand side of your navigation pane

<figure><img src="/files/0iDQV2ug2oneYd2iIeWK" alt=""><figcaption></figcaption></figure>

Step 2: Users can either click **"Start Code"** to begin writing SQL manually, or use the AI assistant to automatically generate a baseline query that they can review and modify.

<figure><img src="/files/d3FwJ4XTIbBhFGSjiP2m" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
Below is an example of the SQL code generated by Lumi's AI CoPilot
{% endhint %}

<figure><img src="/files/Dztynap5d8r097x50RNw" alt=""><figcaption></figcaption></figure>

Step 3: Edit the generated SQL in the SQL Editor to customize the query and further enrich the results displayed in your visualization.

<figure><img src="/files/jGxY1nrSvmt3cRxAobj8" alt=""><figcaption></figcaption></figure>

{% hint style="warning" %}
If an error occurs, click **Debug** to automatically diagnose the issue and update your SQL query with the appropriate corrections.
{% endhint %}

<figure><img src="/files/FZ2X3KUNU4ySJLVaZkR2" alt=""><figcaption></figcaption></figure>

Step 4: Every update to your SQL query is automatically saved as a new iteration. Previous versions can be rerun or revisited, making it easier to track changes and maintain a reproduceable audit trail

<figure><img src="/files/DVyB7TvUuEcooLvrfluP" alt=""><figcaption></figcaption></figure>

Step 5: Once complete, you can publish the Board and share the insights with your team.

<figure><img src="/files/EwRlYi6uMhC7XqIMRYNG" alt=""><figcaption></figcaption></figure>


# Knowledge Base

The "Knowledge Base" is the heart of operations in Lumi AI. It is the center of knowledge in the form of data definitions, business metrics, KPI's, model definition, tuning, and other functionality for a fixed scope for a defined set of users. Other modules like "Chat" and "Board" all depend on first associating an object with a "Knowledge Base".

To see all configuration best practices, view [Configure Knowledge Base](/setting-up/configure-knowledge-base).

{% embed url="<https://youtu.be/pf2O6la2Y1Y>" %}

## Key Components <a href="#create-knowledge-base" id="create-knowledge-base"></a>

The Knowledge Base is split into "tabs". These should be populated in order on creation and maintained/updated as source system and scope evolves.

The following tabs are available. Click on any to learn more:

* [**Overview**](/product-features/knowledge-base/overview): Provides summaries for Knowledge Base users and conversation starters in chat
* [**Connection**](/product-features/knowledge-base/connection)**:** Defines the primary source system connection for data
* [**Tables**](/product-features/knowledge-base/tables): Stores definitions for tables and fields, in the form of a semantic layer
* [**Model**](/product-features/knowledge-base/model): Surfaces a visual representation of implicit and user-defined join conditions between tables
* [**Business Context**](/product-features/knowledge-base/business-context): Houses KPI's, calculations, abbreviations/aliased, and all other relevant context beyond the structured data and its model
* [**Memories**](/product-features/knowledge-base/memories): Allows contributors to promote and maintain good/bad reinforced behaviour in Chat and Knowledge Base based on user feedback
* [**Users**](/product-features/knowledge-base/users): Dictates access and privlege levels for the Knowledge Base by user in the organization

All sections are visible for Knowledge Base "Viewers", but the edit option is only available to "Contributors" for the Knowledge Base and organization "Admins".

## Key Functions

All org users have the ability to create a Knowledge Base, but more commonly there will be a set of maintained Knowledge Bases (one or several) that are shared within the organization to select users.

While in the Knowledge Base section, the following options are available. More details for individual tabs can be found in the aforementioned sections.

### Create Knowledge Base <a href="#create-knowledge-base" id="create-knowledge-base"></a>

To create a knowledge base, click on “Create new KB”.

You can create as many Knowledge Bases as your license/plan allows for. To make room for new Knowledge Bases you must either Archive existing Knowledge Bases or upgrade your plan.

<figure><img src="/files/jyFX7LxjteJWebaZEDTj" alt=""><figcaption></figcaption></figure>

### Duplicate or Delete Knowledge Base <a href="#duplicate-or-delete-knowledge-base" id="duplicate-or-delete-knowledge-base"></a>

To duplicate or delete a knowledge base, click on the 3 dots next to the “Edit” icon.

{% hint style="success" %}
Duplicating a knowledge base is helpful if you are looking to safely test any context or other changes before releasing to the broader / already shared user base.
{% endhint %}

Deletion will move the Knowledge Base to the "Archived" section in the side bar. While Archived, a Knowledge Base can be recovered within 30 days. Archived Knowledge Bases can be hard-deleted (unrecoverable) manually or will automatically be removed in 30 days, with indicated timer.

### Edit Knowledge Base <a href="#edit-knowledge-base" id="edit-knowledge-base"></a>

To edit a knowledge base, click on “Edit” icon.

Only organization "Admins" or Knowledge Base-specifc "Contributors" can edit a Knowledge Base. All write-level functions require Edit mode to be toggled except for inviting users.

Learn more about the different permissions groups, view [Invite Users](/setting-up/invite-users).

<figure><img src="/files/T5PEvE0YchQlpdJwZksB" alt=""><figcaption></figcaption></figure>

### Rename Knowledge Base <a href="#rename-knowledge-base" id="rename-knowledge-base"></a>

Any new Knowledge Base will default to `New Knowledge Base`. To rename a knowledge base, click on “Edit” icon, adjust the name, and press checkmark then save.

There are no limits on characters or length but it is recommended to stay within 50 characters or less. There are also no restrictions for naming the Knowledge Base the same as another existing Knowledge Base.

<figure><img src="/files/5GbUiWaY3U8iK1PltT0D" alt=""><figcaption></figcaption></figure>


# Overview

The "Overview" is a user-defined summary of the Knowledge Base itself. While its sub-sections are not required to be populated, it is strongly recommended to share top-level context about its associated range of data and scope of use to Knowledge Base members.

## Key Components

The Overview tab has three sections, which can be defined in Edit mode and otherwise viewed by any member in the Knowledge Base after saving.

### Data Available

A short summary in plain language highlighting what data the system is connected to and any other relevant tidbits that Knowledge Base members might find insightful.

For instance:

> All Marketing content connected to our North American central warehouse, with the exclusion of Subsidiary ACME. Key tables include Promotions, Campaigns, and Channel Metrics. Data is accurate to / refreshed weekly on Monday nights.

{% hint style="info" %}
In the future, this will be partially populated via a Wizard and may be referenced by our Lumi Workflows to better contextualize the scope of the Knowledge Base during inference.
{% endhint %}

### Insights

Similar to the previous section, but focussed on what kind of questions can be answered. Again, not required, but highly encouraged for good practice and maintenance of the Knowledge Base.

Example:

> Able to generate summary metrics on monthly or other performance, as well as correlations with spend now that the Expenses table has been added. Able to give line item expenses and pattern commentary as well.

### Conversation Starters

Also referered to as "Curated Prompts", these are example prompts that will be made available to users in Chat when connected to the Knowledge Base.

Example:

> How much did we spend last quarter in for our "Affiliates" channel?

For more information on how they are defined and used, see [**Curated Prompts**](/using-lumi/knowledge-base-utility/curated-prompts).


# Connection

The "Connection" defines the main source system integration for the Knowledge Base. It can either be a Direct or Gateway-driven connection to a number of supported SQL-and-similar source systems.

For a full list of our supported integrations, their details, and troubleshooting info, see [**Source System Integrations**](/product-features/source-system-integrations).

For more information about Lumi AI's Data Gateway, see [here](/product-features/data-gateway).

## Key Components

This section breaks down into the system, connection type, and associated details. You have the ability to test a connection (recommended) before saving.

### System Selection

Use the dropdown to select the target system you would like to connect to. For a full list of current and future-scoped integrations, see [Source System Integrations](/product-features/source-system-integrations).

{% hint style="info" %}
We are constantly expanding our supported systems based on user feedback.

Can't find the system you'd like to connect to? Feel free to reach out to <support@lumi-ai.com> with your feedback.
{% endhint %}

### Connection Method

Two connection methods are available for systems. Not all systems support both methods; see [Source System Integrations](/product-features/source-system-integrations) for details.

* **Direct**: Is the conventional connection approach, connecting Lumi AI's backend directly to the target system. This is the default option in most cases. Connections are SSL/TLS secured.
* **Gateway-Driven**: This is Lumi AI's proprietary solution for systems that are not, or cannot, be exposed to internet connections. In this method, the organization admin(s) download and install a Data Gateway that sits on the edge of the organization's local network, without outbound access to Lumi AI's backend only, and with organization-configured network access to the destination system. See [Data Gateway](/product-features/data-gateway) for more details. You must create a Data Gateway in Lumi AI and have it running before you can select it in the Knowledge Base in Connection Properties (see below).

### Connection Properties

Each system (and choice of direct or gateway) influences the Connection Properties that must be populated. Typically, for most SQL systems, it will be a combination of Host, Port, Username, Password, and Database.

{% hint style="info" %}
In Lumi AI's Knowledge Base, a connection is defined down to the "Database" level or equivalent depending on the system. This is to simplify the definition in later sections and prevent cross-database access that may not be intended.

For systems that do not have a database-schema-table pattern, the equivalent highest level equivalent is used (e.g., Databricks "Catalog" replaces "Database" in this context).
{% endhint %}

For more information about individual properties and troubleshooting configuration, see [**Source System Integrations**](/product-features/source-system-integrations).

### Testing the Connection

Once all components above are populated, you can use the "Test Connection" button to run a simple connection test.

If a Gateway is being used and the connection to the Gateway is not healthy, that must be resolved first.

{% hint style="info" %}
It's possible for the Gateway to fail or be turned off as it exists in the organization's infrastructure, not Lumi AI's, so please coordinate with Admins / IT to resolve if it is erroring before trying to resolve the connection.

Sometimes, though rare, the Gateway may need to be updated to capitalize on new functionality or supported systems.
{% endhint %}

If the connection is not healthy (and there is no Gateway, or the Gateway reports healthy), the properties must be adjusted to resolve.

For details on individual properties, or troubleshooting, see [Source System Connections](/product-features/source-system-integrations).

{% hint style="info" %}
While not required, it is recommended that you have a healthy connection and save before proceeding with other activities when creating a Knowledge Base from scratch.

An unhealthy connection will not be able to share metadata on available schemas, tables, views, and fields, thus populating remaining sections will be restricted. It also means the Knowledge Base will not be effective/usable in Chat or Board context until resolved.
{% endhint %}


# Tables

Tables are the core structured definitions and main semantic layer component within Knowledge Base.

{% hint style="info" %}
A healthy connection is required to populate and edit the elements of this tab. See [Connection](/product-features/knowledge-base/connection) section for more information.
{% endhint %}

For a summary overview of setting up this tab and for best practices, see [**Add Tables & Fields**](/setting-up/configure-knowledge-base/add-tables-and-fields).

## Key Components

The "Tables" tab is broken into actual "Tables (and Views)" and "Properties", "Fields", and "Details" for each Table.

### Table Selection

You can add a table by selecting one from the dropdown of available tables/views. The available content is dictated by the connection configured for the Knowledge Base.

### Table Definition

Each table has its subconstituents of properties.

#### Semantic Name

This is a more human-readable/plain representation of a target table.

Example:

> Your source table might be `na_cpg.inv_l_prod_v22` but its semantic name can simply be `invoice_line`.

{% hint style="info" %}
Simple and intuitive namings work best. The quality of the semantic simplificiation / clean-up assists Lumi Workflows in more intuitive understanding of your data.
{% endhint %}

#### Description

This is a short summary of the table, what it's keyed on, what insights it relates to, and any other pertinent information.

It should NOT contain things like table relationships (covered in "Model" tab) or the fields or calculations within it (see further "Fields" and "Details" sections).

The best descriptions are concise and relevant to usage in a query.

Example:

> Contains all invoice line items effective up to the August 31st 2024. Guaranteed unique on invoice\_line\_id but not invoice\_line\_key.

#### Fields

Fields follow a similar pattern of semantic name and description as with the table overall. These similarly provide context for Lumi Workflows to process.

The Data Type is represented as-is from the source system, it is unmodifiable (alike to the source name itself).

A unique option are [Custom Fields](/product-features/knowledge-base/tables/custom-fields), where you can define a query dynamically with the table if its definition does not exist at source. See associated section for more information.

#### Details

These are relevant points of information about a Table that give additional context about its limitations, how it can be used, etc.

Example:

> Field Priority: Where any fields overlap or are similar with invoice\_header, assume that the invoice\_line property overrides the parent value.

{% hint style="info" %}
Lumi AI offers many ways to define context for a Knowledge Base, whether its through the semantic names themselves, descriptions, Business Context tab, and more -- use judgement to determine where and when the context is relevant (i.e., always with the KB, only when a specific field is used, or any time the table is pertinent as a whole).
{% endhint %}

#### Preview & Metametrics

Any time the configuration for a table is updated, you can review example records and optionally "metametrics" (summary attributes of the data) at your convenience to assess your field selection and/or custom field definitions.

To learn more, see [Preview and Metametrics](/product-features/knowledge-base/tables/preview-and-metametrics).


# Custom Fields

Custom fields allow admins and contributors to expand the data model by creating fields from existing source columns.

Creating custom fields can provide flexibility and adaptability for specific business calculations. Custom fields allow for new fields to be created to expand on the data fields provided.

<details>

<summary>Example: Custom fields are great for calculations. See below for a simple calculation.</summary>

<pre><code><strong>[custom_field] sales_amount = units_sold * price_per_unit
</strong></code></pre>

</details>

## When to Use Custom Fields?

Use custom fields when you need to add a field that does not exist in the source schema, but would be beneficial to have in the semantic layer to streamline insight generation.

{% hint style="warning" %}

#### Key Points To Note

* Use the SQL dialect that matches your connected data source when defining logic in the "Custom Calculation" box.
* In the calculation, only use the source name of the field from the db.table.
* Custom fields requiring joins to another table cannot be created.
  {% endhint %}

## Create a Custom Field

Let's walkthrough an example of how to use custom fields to convert the format of a "YYYY-MM-DD" date field into a fiscal-year-week field.

```
actual_payment_date  --> fiscal_year_week
   '2024-02-01'      -->  '2024-05'

```

### Identify the Source Name of the Field <a href="#id-1-the-more-clear-and-concise-you-are-the-better" id="id-1-the-more-clear-and-concise-you-are-the-better"></a>

Use the source name for each of the fields involved in the custom calculation.

{% hint style="warning" %}
Note: it is only possible to use the source name of the field in the db.table in the actual calculation
{% endhint %}

<figure><img src="/files/leKhx3b1IEi9elBbhyTj" alt=""><figcaption></figcaption></figure>

### Add a Custom Field <a href="#id-1-the-more-clear-and-concise-you-are-the-better" id="id-1-the-more-clear-and-concise-you-are-the-better"></a>

To add a custom field, edit the knowledge base and add a field.

<figure><img src="/files/6A8aMwwTOjUYwfkYbfEB" alt=""><figcaption></figcaption></figure>

### Select Custom Field <a href="#id-1-the-more-clear-and-concise-you-are-the-better" id="id-1-the-more-clear-and-concise-you-are-the-better"></a>

Select the custom field to open the creation menu.

<figure><img src="/files/JDzUmW52QUho42VtVrzS" alt=""><figcaption></figcaption></figure>

### Input SQL Calculation into Custom Calculation Field <a href="#id-1-the-more-clear-and-concise-you-are-the-better" id="id-1-the-more-clear-and-concise-you-are-the-better"></a>

Use the source name for each of the fields involved in the custom calculation. Make sure to use the correct SQL dialect that matches the data source you connected.

`to_char(actual_payment_date, 'IYYY-IW')`

<figure><img src="/files/7Sol3zZjNP5Ils97Mun6" alt=""><figcaption></figcaption></figure>

Add a semantic name and context for the field and press done.

### Validate Custom Calculation Field <a href="#id-1-the-more-clear-and-concise-you-are-the-better" id="id-1-the-more-clear-and-concise-you-are-the-better"></a>

The custom field is now available to be used in generating insights.

<figure><img src="/files/RxtAtdtbZbJNhhiHeQ1z" alt=""><figcaption></figcaption></figure>


# Custom Filters

The semantic layer (“Knowledge Base”) is designed to make complex data intuitive and accessible. But in their raw form, even the richest data models can overwhelm users with unnecessary noise. Filters address this challenge by applying rules or conditions that restrict the data returned from queries. They enforce boundaries such as time ranges, permissions, and quality checks — ensuring that only the most relevant and approved data flows into LumiAI’s agentic workflows for analysis.

### When are Filters Useful?

Filters serve different purposes depending on the stakeholder:

* **Governance & Access Control:** Filters enforce permissions aligned with roles and responsibilities. For example, a conglomerate with multiple subsidiaries could create separate Knowledge Bases based on *Member Company ID*, ensuring that users from one subsidiary cannot access privileged information from another.<br>
* **Relevance to Business Stakeholders (Segmentation):** Business users don’t need every field from a dataset — just the subset that matters to their use case. Filters declutter the experience and surface only the data that drives decisions.<br>
* **Standardization & Transparency:** By applying filters at the semantic layer, all stakeholders work from the same source of truth. This prevents inconsistencies in reporting, improves reusability, and enhances traceability of results.<br>
* **Guardrail Autonomy for AI Agent:** Filters act as invisible oversight for LumiAI’s agents. They ensure that recursive, autonomous workflows stay relevant, efficient, and compliant, which increases trust in the outputs.

## How to Apply Custom Filters:

### **Add a Custom Filter**

Filters are applied at the **Table** level within your Knowledge Base. They can be found directly under the field sub-section of the table you select.

<figure><img src="/files/JbMKQ28XbBf2F6i4SgzU" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/9Dpx14jrpcg5pYc9T83i" alt=""><figcaption></figcaption></figure>

### **Configure the Custom Filter**

Because you’ve already defined fields in your Knowledge Model, you can apply filters to each of them.

You can create filters in three simple steps:

1. Select the field you want to filter on.
2. Choose the appropriate comparator (e.g., equals, greater than, contains).
3. Enter the final criteria.

Below is an example of how we applied a filter criterion to capture only sales orders that occurred after August 1, 2025.

<figure><img src="/files/QXGQicdTvgq3h75cTSkd" alt=""><figcaption></figcaption></figure>

### **Validate Custom Filter Application**

The table preview feature provides visibility into your data, helping you apply the right business rules with confidence.

<figure><img src="/files/zWIaVZ6u1iwBixvZE9Iq" alt=""><figcaption></figcaption></figure>


# Preview & Metametrics

As fields are introduced or updated, Lumi AI will process the source system to retrieve example records and aggregate information about the target fields.

## Preview (Sample Records)

Sample records (referred to as the "Preview) are made available as the definition is updated. These are 5 selected rows choosen at random from the system. You can use this information to examine arbitrary data to make sure you've picked the right data, custom fields are working as intended, or to check for nulls (see further on "Metametrics" below).

<figure><img src="/files/tFESg1XctsfJsnGFvSAN" alt=""><figcaption></figcaption></figure>

If the definition is unchanged and the preview otherwise appears stale, you can use the "Refresh" button to do an updated pull.

\[image]

{% hint style="info" %}
Note that, depending on the source system, the records may not be fully random. Using "Refresh" in such cases may always pull the implied-order first 5 records.
{% endhint %}

## Metametrics (Summary Data)

"Metametrics" refers to Lumi AI's subset of aggregate information that is pulled from the system. This can be useful to determine attributes like the date range of the data, if fields are sparsely-populated, or if the data in the field is non-unique (duplicates are present).

You can view Metametrics by clicking the Advanced toggle within Preview.

<figure><img src="/files/STxiocM5c8CiEeOjpdt8" alt=""><figcaption></figcaption></figure>

The metrics include:

* Count — Basic count of the records
* Unique Count — Count of truly unique records
* Null Percentage — The proportion of null records in the field
* Minimum Value — The lowest alphanumeric record
* Maximum Value — The highest alphanumeric record


# Magic Wand (Beta)

Choosing the semantic table for the knowledge base may be difficult or require lots of understanding on what the fields and tables contain during the initial setup. Magic Wand is a beta feature that would allow for an agent to look through the connected database and choose the most relevant tables and fields based on the domain of data, origin of data, and business priorities.&#x20;

{% hint style="warning" %}
Using the tool will replace the current semantic table and field selection.
{% endhint %}

### Providing Relevant Information

Each of the inputs will have some preset options, but freeform inputs can be added using the `Add Custom` button after typing in the search bar.

<figure><img src="/files/rHTH4wVYAbHNIIbMA3R9" alt="" width="563"><figcaption></figcaption></figure>

* **Domain of Data** - The business model that the tables will be used for (e.g. Marketing, Sales)
* **Origin of Data** - The sources of the data which could be a database or other data sources (e.g. Snowflake, Google Ads)
* **Business Priorities** - Based on the domain of data and focuses the business functions for the knowledge base (e.g. Sales Pipeline Visibility)

### Usage

First input the provided user inputs so Magic Wand is able to determine the relevant tables and fields. Once the inputs are appropiately set up, click the Magic Wand's `Get Started` button.

After Magic Wand completes the pop up will close. The set tables and fields can be edited to provide more insights and  details for Lumi-AI.

If Magic Wand needs to be run again, the pop up can be opened up again on the `Data Model` page using the `Magic Wand` button. It will reset all progress and fill in the information from scratch.&#x20;


# Model

The "Model" tab is where you can review and enforce relationships / join patterns between tables.

By default, Lumi AI forms its own understanding of the model based on the Tables (and some extent Business Context) definitions provided. However, sometimes explicit definitions need to be applied when joins are not obvious or intuitive.

## Understanding Join Types

In Lumi there are two types of joins:

* **Implicit**: This is an "inferred" join between two tables. An assumption is made based on field name (semantic name) similarity between tables. Lumi AI *may* use the implicit definition to join two tables when forming a query.
* **Explicit**: This is a user-defined join suggesting which tables join on which fields.

In all cases, there is no assumption made for LEFT, RIGHT, INNER, OUTER joins, these are just generically available and the exact join type is contextual to the prompt/analysis being conducted rather than universal.

{% hint style="info" %}
Note that just because an "implicit join" exists between two tables, it does not guarantee Lumi AI will use it in processing. For example, if you have `create_dt` in table `item` and the same field in table `invoice_line`. Lumi AI will make rational assumptions to the best of its ability if its a valid join or not.

If the join is problematic, you can:

* rename the field in one of the tables or
* define explicit joins for the preferred behaviour
  {% endhint %}

## Visualizing the Model

Two modes of visualization are made available:

* **Network**: This is the default view for the model and spaces out the tables based on their existing relationships (existing implicit and explicit). Tables that have more joins together tend to cluster together, highlighting tables that are more "central" to the model, loosely.
* **Flowchart**: This is an alternative view, focussed on patterns of relationships from one table to the next. Works well for heavily hierarchical models.

These are purely for user appreciation, and have no impact on Lumi AI's performance during prompt processing.

## Exploring the Model, Tables, and Joins

All tables are draggable, so you can reorder/reorganize the screen as you see fit.

{% hint style="info" %}
Note that today, you cannot save the visualization preference for others, it is only stored locally for your session.
{% endhint %}

Joins have two parts:

* **Type**: Dictated by a dashed line (implicit) or a solid line (explicit).
* **Field Count**: Indicated as a circled number in the middle, this represents how many fields are used in the join.

You can click on any join (implicit or explicit) to understand more information (specifically the fields that are associated with the join from two connected tables).


# Business Context

Outside of the structured data and relationships, its important to capture things like metrics, calculations, acronyms, and other details / implicit knowledge pertaining to the data scoped for the Knowledge Base. This is referred to as "Business Context".

See our primer [here](/setting-up/configure-knowledge-base/add-business-context) for more information.

{% hint style="info" %}
Business Context is incredibily powerful and represents one of the many ways you can embed knowledge into Lumi AI. In general, you should put the minimum knowledge necessary to address the insights and scope of the Knowledge Base rather than add large volumes indefinitely to this section. "Less is often more" rings true for this section.
{% endhint %}

## Key Components

In this section, one can either add, modify, or remove business context.

Each line item should have reasonable labels, types, and definitions associated with each. See further considerations below for tuning.

## Considerations

Business Context is highly flexible, but there are some good practices to keep in mind:

* Title lines appropriately so they get proper relation to a user's prompt or other context
* Keep the context itself concise. Rephrase if necessary, otherwise lengthy context may be "washed-out"/diluted or outright ignored in the workflow.
* Instructions/patterns work better than hard code. The reason being that the code itself may shift or be inaccurate in certain contexts, whereas instructions are more flexible and less sensitive to being applied "as-is" across prompt scenarios.


# Memories

This section covers the Memories tab and associated aspects of viewing and managing the Knowledge Base Memories.

For more general information on Memories and their functions, see our guide on [Memories](/using-lumi/knowledge-base-utility/leveraging-memories).

## Overview

This tab let's you both view the list of memories, by their status, as well as investigate each memory individually.

### Memories List

This is the selection panel within the tab, where you can filter on different statuses and select an individual memory for observation or action (see [Patterns](#patterns) below).

### Record Types (Statuses)

Memories have four possible statuses:

* **Proposed** -- Memories that have been recently proposed by members of the Knowledge Base and not yet reviewed/endorsed.
* **Committed** -- The only memories that have direct influence in any workflow. Positive or negative, these are available for reference in a workflow, dynamically identified and used.
* **Ignored** -- Memories that have been reviewed and have been determined invalid for endorsement. The record is kept but listed as "Rejected/Ignored".
* **Invalidated** -- Memories that are no longer applicable to the evolving Knowledge Base are visible here, for posterity. For more information on invalidation see guide on [Memories](/using-lumi/knowledge-base-utility/leveraging-memories).

<figure><img src="/files/XzZP2wcNxcy4vXsG9e7R" alt=""><figcaption></figcaption></figure>

### Record Details

Each record has several components:

<figure><img src="/files/U0cjFaQ4XZedgk1t9H3g" alt=""><figcaption></figcaption></figure>

1. **Original Thread Name** -- The name of the thread from which this memory record originated.
2. **Identifier Prompt** -- The main prompt of the message. (Note: This is a "rephrased prompt" so may not be an exact match of the user's original prompt, for more accurate representation of user intent amongst other reasons. For more information see [Prompt Rephrasing](/using-lumi/understanding-workflows/prompt-rephrasing).)
3. **Created By** -- The User that created/proposed the memory. This person created the message and identified the feedback and any other information with the proposal.
4. **Created At** -- The date the memory proposal was created.
5. **Feedback Type** -- Identifies if the feedback was positive ("Thumbs Up") or negative ("Thumbs Down").

### Memory Details

A memory is more than a response, it has similar memories (which are suggestive of how many competing memories might apply in practice in a workflow), dependencies, and other properties available for reference.

#### Response

This is the main artifact of a memory, which shows the output from the prompt. The key element is the QueryBlock, which influences workflows when the memory is applicable.

{% hint style="info" %}
As mentioned in the overarching guide on Memories, although all "blocks" are shown, only the "query" block has any effect in future workflows as a memory. The rest is for context only and future applicability.
{% endhint %}

#### Similar Memories

These are all other memories that are related by prompt affinity (i.e., by contextual similarity of the Identifier Prompt). Similar memories will likely compete ("likely", as it is contextual) for relevance in future prompts and their workflows.

Similar memories can be viewed directly in the display by expanding the record.

<figure><img src="/files/EQbNZfVTjxsOsb808xff" alt=""><figcaption></figcaption></figure>

Similar memories alternatively can be compared in a side-by-side view for more direct A/B comparison with the target record.

<figure><img src="/files/2sBT6yCQGuBMInXdJlbt" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
Having too many similar memories may cause excessive competition in practice when a workflow seeks to determine which memories are applicable. The minimum distinct relevant set are warranted (typically 5 and under). If there are many, Knowledge Base Contributors should consider rejecting some based on applicability, recency, and overall relevance.
{% endhint %}

#### Dependencies

These are all the Knowledge Base context objects (Tables, Model, and Business Context elements) that are relevant to the memory. If any of these change, the memory will be invalidated when the KB is saved (the action and impacts will be flagged).

See our broader guide on [Memories](/using-lumi/knowledge-base-utility/leveraging-memories) for understanding Dependencies and see the [Updating / Saving](/product-features/knowledge-base/updating-saving) section for more information on the action flow and impacts.

#### Properties

These are all other helpful properties relevant to the memory itself. These include:

* **Original Prompt** -- As opposed to the Identifier Prompt (which is the Rephrased Prompt), the user's original prompt appears here as reference. See [Prompt Rephrasing](/using-lumi/understanding-workflows/prompt-rephrasing) for more information about differences in prompts.

## Patterns

There are two primary usage patterns for memories:

* Browsing memories as a Viewer
* Endorsing and otherwise managing memories as a Contributor

### Browsing

When browsing memories, use the list panel to view memories by status. Most recent memories will be positioned closer to the top of the list.

Click on any individual memory to see its properties. You can also click on the individual blocks or similar memories to view the particulars of those objects further.

No actions/edits are applied when browsing (i.e., when not in Edit mode in the Knowledge Base).

### Endorsement

When in Edit mode in a particular Knowledge Base, in addition to the browse actions, each memory record under proposed (as well as committed and rejected) can have it's status changed.

<figure><img src="/files/dZBueJq5AsFZryRVn1El" alt=""><figcaption></figcaption></figure>

The following patterns are available:

* **Proposed -> Committed or Rejected** -- Endorse or ignore the memory as applicable. The Proposed status should be treated as an inbox or needs-review status, thus ideally all Proposed memories are Committed or Rejected.
* **Committed -> Rejected** -- A Committed memory can be later rejected if it either competes for relevance, is no longer applicable but did not trigger invalidation, or was committed in error.
* **Rejected -> Committed** -- A Rejected memory can later be committed if it was rejected in error.

There is no pattern to influence or change status of Invalidated memories; these are available for reference only.


# Users

This section is where knowledge base users can be managed (added, modified, and removed). This section does not require you to be in Edit mode to take effect (it applies immediately).

Users must first exist at the organization level before they can exist at a Knowledge Base level; see Admin-scoped section [here](/product-features/organization-settings/members).

If a user does not see expected knowledge bases, ensure they are correctly assigned.

<figure><img src="/files/xkOOwa7TcRBtWVpkSSTi" alt=""><figcaption></figcaption></figure>

## Key Components

Actions breakdown by new or existing users.

### Inviting Users

Use the dropdown to search and select for a user to be added. By default users start as "Viewers" which can use the Knowledge Base in Chat and in Boards and can see the contents of the Knowledge Base itself, but may not edit it.

<figure><img src="/files/mSUuQO8fvmHj2SNcIG7r" alt=""><figcaption></figcaption></figure>

### Modifying Users

Any Knowledge Base Contributor (or organization-level Admin) can modify users (except for admins, see [Considerations](#considerations) below), including changing their permission level or removing them entirely from the Knowledge Base.

The creator of a Knowledge Base is defaulted to "Contributor" level, and can invite others to help manage the Knowledge Base by first inviting the person then upgrading them to "Contributor" level.

<figure><img src="/files/ygcYdPEinwPaDc5BkAWX" alt=""><figcaption></figcaption></figure>

"Viewer" is the default and expected privelage level for most Knowledge Base members.

There are no restrictions on how many members can belong to a Knowledge Base (there are separately license/plan-driven restrictions to the number of organization members and number of knowledge bases in total, independently).

## Considerations

Note that Admins are super-users in the application. Not only can they configure the workspace in Lumi AI as a whole, but they also have access to all Knowledge Bases by default (and thus have default "Contributor" level access to all Knowledge Bases). They cannot be deleted from individual Knowledge Bases or have their privileges changed at a Knowledge Base level.


# Restoration

If a Knowledge base is accidentally deleted, it can be restored using the Archived Group section.

## Restoring a Knowledge Base in Lumi AI

If a Knowledge Base (KB) has been "Deleted" it will move to the "Archived Groups" section, you can restore it before its scheduled deletion. Follow the steps below to restore an archived KB.

**Step 1: Navigate to Archived Groups**

1. In the sidebar, go to the **Knowledge Base** section in the left navigation panel.
2. Scroll down and select **Archived Groups** (indicated by a folder icon with a notification badge showing the number of archived items).

<figure><img src="/files/rbz1dQT9cYTJYSXaapM7" alt=""><figcaption></figcaption></figure>

**Step 2: Locate the Knowledge Base**

1. In the **Archived Groups** panel, you will see a list of archived knowledge bases.
2. Each archived KB displays a **deletion countdown** (e.g., "Deletion in 10 days"), indicating when it will be permanently removed.

**Step 3: Restore the Knowledge Base**

1. Click on the **three-dot menu** next to the KB you want to restore.
2. From the dropdown menu, select **Restore**.
3. The KB will be reinstated and moved back to the active Knowledge Base section.

<figure><img src="/files/kAFLctxHk0oPrsa9GxDW" alt=""><figcaption></figcaption></figure>

**Important Notes:**

* If a KB is **not restored before its deletion date**, it will be permanently removed.
* If you accidentally restore the wrong KB, you can re-archive it by deleting the KB again in the main Knowledge Base section.
* Knowledge bases that are accidentally deleted can be restored using this method.


# Updating / Saving

{% hint style="info" %}
In beta: Save controls will be updated with "Locks" preventing multiple contributors from concurrently saving and overwriting each others' changes.
{% endhint %}

A Knowledge Base's changes are in progress until the Save action is undertaken via the button in the top-right of the screen.

## General Behavior

On Save, several actions will occur:

### 1. Connection is Retested

As a failsafe, the connection is retested in case the form has changed between saves and tests or to flag an intermittence issue. If the connection fails, the user will be asked to confirm if they want to progress forward with a faulty connection.

{% hint style="info" %}
If the connection is faulty, the Knowledge Base will not function as intended. You can choose to accept the connection failure if you plan to solve for it later or aware of a pending solve at source. The Knowledge Base will not be restricted from use in the meantime, though users will receive a warning in Chat if the connection is not detected as healthy.
{% endhint %}

### 2. Validations are Checked

Items like Tables and Fields have validations — the system checks if they exist and can be evaluated. In case of failed validations (e.g., a Field no longer maps correctly to its source) then the UI will similarly flag to the user if they are comfortable proceeding.

{% hint style="info" %}
Validation checks should only be ignored similar to the connection if a solve is imminent or known. If there are widespread validation failures the Knowledge Base will not function correctly. The system leaves the decision to the user's discretion to not block saving and to allow waiting for a solve elsewhere.
{% endhint %}

## Knowledge Base "Locks"

To prevent multiple Contributors in a Knowledge Base from overwriting one another's changes, "locks" are applied to manage edit state.

When a Knowledge Base is not being actively editted by any individual, the first Contributor to select Edit will place a "lock" on the Knowledge Base. This "lock" is effective until the Contributor cancels, saves, closes the window, or times out (\~ 2 hours). While the "lock" is in place, the Edit button is grayed-out for all other Contributors.

You can check the user who has placed the "lock" by hovering over the grayed-out Edit button, which will indicate their name. Once the lock is removed, the Edit button will turn blue once again.


# Human Verification

Our workflows are designed to quickly and accurately respond to user prompts, but certain circumstances may require that an individual familiar with the data and associated model verify and sign for the accuracy of the results.

With the "Human Verification" module, users can share and collect feedback verifying or rejecting the results or a workflow without having to leave the application.

{% embed url="<https://youtu.be/EQ3q37293ds>" %}

## Common Scenarios

Not all circumstances warrant requesting a human to verify a result, and requests will never prevent insights from being generated, but the following are cases that should be considered.

1. **Result appears correct, but underlying SQL is complex** — If the explanation, assumptions, and raw analytical code are overwhelming, it's useful to have a Knowledge Base Contributor who's assembled the model review and verify on a user's behalf.
2. **Concern for underlying data quality issues** — The data results may look invalid, despite clear and successful code execution. In these cases, there may be a source system issue that a Knowledge Base Contributor may be able to better assess and comment on.
3. **Results are essential for a critical business decision or presentation** — Normally, you can expect high accuracy from Lumi Workflows in Chat and elsewhere, but when business decisions are critical and numbers need the highest level of confidence, you can use Human Verification to have an expert on your team review and confirm.

Conversely, cases where human verification is not warranted include:

1. **A workflow failed or result looks visibly inaccurate on a first attempt** — If a data quality issue is unlikely, in these circumstances it's best to continue the conversation with Lumi AI and explore with follow-up prompts and additional context. Lumi Workflows make their best effort to provide insights, but may not always provide the perfect answer the first time (e.g., from an ambiguous prompt, or data not available in the Knowledge Base, or a connection issue, etc.).
2. **Result format, styling, or exact insights vary between attempts or chats for the same format** — Because the underlying technology is "generational", the output may vary, including the exact columns or formats used in results, or the summary produced. Unless the raw numbers vary dramatically, this is expected behaviour. You can use [Memories](/product-features/knowledge-base/memories) instead to align on preferred calculations and formats.

## Basic Patterns

There are two actors when observing Human Verification patterns: the requestor and the reviewer.

* **Requestor** — The individual raising a request for Human Verification. Normally a Knowledge Base user with no expected deeper familiarity with the Knowledge Base specifics.
* **Reviewer** — The individual reviewing a request for Human Verification. Any Knowledge Base Contributor (inclusive of workspace Admins) can comment and definitively verify (approve) or reject a request.

Each request goes through 4 phases.

1. **Submission** — This is when a user in Chat requests Human Verification for a message (and in the process becomes a requestor).
2. **Review** — During this time the request is considering "Pending" and both the requestor and any reviewer(s) may comment on the request to help close it. The report is accessible via the Human Verification hub or the message itself (the option for requesting human verification is replaced with a link to the report in progress).
3. **Qualification** — This happens when a reviewer Approves (Verifies) or Rejects a request, and the message is now qualfied accordingly. This normally concludes the process, and the message receives an icon.
4. (Optional) **Adjustment** — In some cases, the original qualification must be changed (e.g., turns out the response was accurate, or another reviewer determined there was an issue, etc.). The qualification can be changed by any reviewer at any time, and will be reflected accordingly for the message and its icon.

## Navigation

The Human Verification hub is accessible via the navbar on the lefthand side of the webapp. There are two sections in the hub:

* **My Requests** — All submissions from the user, in any state.
* **My Reviews** — All requests/reports available for review (must be a Knowledge Base Contributor or Workspace Admin for any to be present).

By default, all panels will be filtered to "Pending" status requests, limiting the view to requests that require action. You can adjust the filters any time to review historical examples.

## FAQ

Some additional aspects to consider:

1. **Can I use Human Verification for Boards, Cards, or other non-Chat elements in Lumi AI?**
   1. Answer: At present, Human Verification is only available for Chat. It is recommended that a response is verified in Chat before being added to a Board if the preference is to evaluate an answer before including it on a Board.
2. **Can I approve my own request?**
   1. Answer: No. This defeats the purpose of another individual providing verification for a result. As a result, this is specifically prevented.


# Organization Settings

Global properties in the application workspace are managed in Organization Settings (also known as Admin Settings) page.

This section allows for management of the workspace, interfaces/integrations, gateways, and its members.

[Organization Profile](/product-features/organization-settings/organization-profile)

[Tool Integrations](/product-features/organization-settings/tool-integrations)

[Gateway Management](/product-features/organization-settings/gateway-management)

[Members](/product-features/organization-settings/members)


# Organization Profile

The organization profile contains key information about the system settings, gateway sessions, limits and other system behaviors.

<figure><img src="/files/JrRana2CST8yURRSIhAN" alt=""><figcaption></figcaption></figure>

## Organization Name

Also referred to as the Workspace Name, this is the label that will be displayed in navbar on hover.

## System Settings

Global controls can be found here, including connection controls for systems, gateway controls, and quota enforcement.

### Gateway Concurrent Sessions

{% hint style="info" %}
This section is only available on the Enterprise license tier.
{% endhint %}

This settings determines how many concurrent sessions any one given gateway will handle:

* A gateway is any individual named instance in the organization/workspace (there may be none, one, or many)
* A session is an individual query request (thus sessions do not persist while a user is in chat, freeing allocation for another user)

Any queries/sessions in excess of this limit will be queued until other requests/sessions complete.

If set to zero there will be no limit on queues.

### Query Cost Limits

A limit on "query costs" can be imposed by system (if it is supported, see [Source System Integrations](/product-features/source-system-integrations) for more details).

The query cost is calculated on the target query inclusive of any unaliasing (i.e., abstraction reversal) CTE's that must be applied. The exact calculation and magnitude/scale depends on the system specifically.

Query Cost Limits apply across all underlying Knowledge Bases.

Any query that exceeds the Query Cost Limit for the organization/workspace will not be executed (and if in the Chat or other user-oriented interface, will be mentioned to the user).

A non-existent or 0 cost implies no limit. This is the default and is suitable if:

1. There is no concern over query cost (e.g., source system is small, data warehouse can comfortably accommodate large queries)
2. Other controls at the system exist (e.g., throttling controls)
3. The Query Duration Limit is relied upon instead

Outside of these cases, it is recommended that controls be applied, even if the threshold is very high.

### Query Duration Limit

An alternative to "query costs", this limits the duration of the query/session instead.

This is an effective alternative/complement to the previous control if:

1. An additional safeguard is warranted
2. Query Cost Limit is not available for the target system

Distinct from Query Cost Limits, Query Duration Limit will allow the execution of the query until the metric is exceeded.

### Query Row Limit

This determines the maximum number of records returned for each Lumi query by default. This setting ensures that query results are manageable and tailored to user needs.

* **Default Limit:** The system is preset to return a maximum of 25 records per query.
* **Customizable Options:** Depending on preferences or use cases, this limit can be adjusted to **50** or **100** records.

### Allow Questions Over Quota

This toggle governs whether the license/plan limit for requests is to be strictly enforced or allowed to be exceeded.

Behaviour of the toggle:

* **Off**: (Default) Once the limit is reached, users will be warned and administrators must upgrade to another plan
* **On**: Once the limit is reached, a charge will be applied at the next billing cycle for the next bundle of allotment for requests


# Tool Integrations

In addition to Lumi AI's web application (at app.lumi-ai.com), users can also access Lumi AI via Slack or Microsoft Teams.

To enable either, an admin must first follow the steps on the Tool Integrations page, installing the repsective "bot" for users to interact with.

{% hint style="info" %}
This is just to enable the bot for the organization at the target interface; users must follow additional steps to enable access to the tool.
{% endhint %}

For more details, see [Secondary Interfaces](/product-features/secondary-interfaces).


# Gateway Management

Lumi AI "Data Gateways" can be created, modified, and removed under this section of Organization Settings.

For details on Data Gateways and their utility, best practices, and more, see [Data Gateway](/product-features/data-gateway).

## Data Gateway Downloads/Releases

An up-to-date list of all available gateways can be found in this section. It is recommended that you use the latest version available unless regression is required.

## Data Gateway Management Table

The table on the page lists all Data Gateways in the organization and their properties, and provides means to interact with each.

### Properties

All relevant properties are listed in the table:

* **Gateway Name**: The friendly name / label associated with the gateway. Will be available for dropdown selection during Connection configuration of a Knowledge Base when the "Gateway" option is selected (for this reason it is recommended that names are made unique, even if not enforced).
* **Description**: An optional description for more details to be captured about the gateway (e.g., region, reason for creation, scope, etc.)
* **Token**: A partial capture / hint to the token used, for ease of identification locally where the key is used.
* **Created**: Date the gateway was created.
* **Last Used**: Date the gateway was last used. Usage qualifies as any time the the Data Gateway is running and healthy (not necessarily if any queries are being run).
* **Status**: Can be "Active" or "Inactive". An Inactive gateway is unusable and must either be a) turned on (if off) or b) troubleshooted if not running correctly.
* **Version**: Indicates what version of the gateway was last run / is running for the associated Token. It is recommended that the latest version be used, unless justification warrants running an older version.

### Actions

Admins on this page can take the following actions via the table:

* **Add gateway**: Create a new definition for a data gateway. Use if creating a first instance or creating multiple additional instances (typically one instance is enough, unless networks, systems, or host resourcing warrant multiple).
* **Edit Gateway**: Enables modification of the "Gateway Name" and "Description".
* **Regenerate Token**: Allows a token to be recreated for the gateway if lost or compromised, avoiding the need to recreate a gateway and update Knowledge Base references.
* **Delete Gateway**: Permanently deletes a gateway. This action is not recoverable.


# Members

All members defined for the organization can be found in the Members section of Organization Settings.

## Overview

The **Members** section in Lumi AI allows administrators to manage user access within an organization. This includes adding and removing users, assigning roles (Admin, User), and adjusting knowledge base access.

<figure><img src="/files/QOJnK67KtyJMsr0t9chJ" alt=""><figcaption></figcaption></figure>

#### Accessing the Members Page

To access the **Members** page:

1. Navigate to **Settings** in the left sidebar.
2. Click on the **Members** tab under **Admin Settings**.

### Managing User Roles

Members in Lumi AI can be assigned different roles:

* **Admin**: Full permissions, including managing users, modifying settings, and accessing all knowledge bases.
* **User**: Belongs to the user data base.

<figure><img src="/files/U0xLe0chRIMPeIO4YP8d" alt=""><figcaption></figcaption></figure>

### Inviting New Users

New users can be invited to the organization so long as there are seats available.

<figure><img src="/files/ANXam2gFvo1xMoHQI7ym" alt=""><figcaption></figcaption></figure>

1. Click the **+ Invite** button in the top right corner.
2. Enter the user’s email address.
3. Assign a **role** (Admin/User).
4. Send the invitation.


# User Profile

Also referred to as "User Settings", this section allows you to modify your display name as well as your linked accounts for [Secondary Interfaces](/product-features/secondary-interfaces) (i.e., Slack and Microsoft Teams).

This interface is accessed by clicking your logo in the bottom left of the web app UI and clicking "My Account".

## Key Components

There are two operations/actions that can be taken in this section of the app.

### Update Display Name

Here you can change the name that is displayed throughout the application.

### Disconnect from a Secondary Interface

Here you can disconnect/unlink Slack and Microsoft Teams if you have previously linked these accounts. To link accounts in the first place, see [Secondary Interfaces](/product-features/secondary-interfaces).


# Notifications

Certain actions in Lumi AI are notifiable to a broader audience. Things like sharing artifacts with other users and updates to configuration will be reflected with specific audiences.

## Realtime Pop-Ups

Certain actions will trigger pop-ups in the bottom of the screen, which will automatically dismiss after a certain amount of time. In most cases, these will be displayed for yourself only and may not appear in your notifications summary or for a broader audience (e.g., a Knowledge Base failed to save).

Events or conditions triggered by other users or by the system will also appear in realtime, and will also be reflected in the notifications summary.

For full details on what conditions arise, see [#notification-patterns](#notification-patterns "mention") below.

## Notifications Summary

You can view your summary of notifications on the navbar on the left. This will show your most recent notifications, and can be filtered on read/unread. A counter of your total unread is shown in navbar icon.

* **Mark as read** — Clicking in the notification will archive it and remove it from the "Unread" tab.
* **Mark all as read** — Clicking this option will clear all unread notifications to read.

## Notification Patterns

Notifiable conditions are noted below. For more information on related individual topics, please refer to the corresponding feature documentation.

<table><thead><tr><th width="210">Notification</th><th width="187">Audience</th><th>Description</th></tr></thead><tbody><tr><td>Thread Shared</td><td>Shared Members</td><td>When a thread is shared, all receiving members will be notified.</td></tr><tr><td>Board Refreshed</td><td>Board Members</td><td>When a board is refreshed manually or automatically, all members who have access to the board will be notified.</td></tr><tr><td>Board Archived</td><td>Board Members</td><td>When a board is archived, members are notified</td></tr><tr><td>Board Deleted</td><td>Board Members</td><td>When a board has been permanently deleted, by a user or by the system (archive expiry), members are notified.</td></tr><tr><td>Knowledge Base Access Requested</td><td>Knowledge Base Contributors</td><td>When a user requests access, all Knowledge Base Contributors will receive a notification that a request is pending for approval.</td></tr><tr><td>Verification Created</td><td>Knowledge Base Contributors</td><td>When a user requests human verification on a chat message, all Knowledge Base Contributors will receive a notification.</td></tr><tr><td>Verification Commented On By Reviewer</td><td>Verification Requestor</td><td>When a human verification request is reviewed by a Knowledge Base Contributor, the original requestor will be notified.</td></tr><tr><td>Verification Commented On By Original Requestor</td><td>Verification Participants</td><td>When the original requestor of a human verification request leaves a comment, anyone who has reviewed/commented on the request is notified.</td></tr><tr><td>Verification Reviewed</td><td>Verification Requestor</td><td>When a human verification request is approved or rejected by a Knowledge Base Contributor, the original requestor will be notified.</td></tr><tr><td>Organization Updated</td><td>Organization Admins</td><td>When any organization-level property has been changed, all organization admins will be notified.</td></tr><tr><td>Data Gateway Added</td><td>Organization Admins</td><td>When a new data gateway is created, all organization admins are notified.</td></tr><tr><td>Data Gateway Updated</td><td>Organization Admins</td><td>When a data gateway is modified, all organization admins are notified.</td></tr><tr><td>Data Gateway Deleted</td><td>Organization Admins</td><td>When a data gateway is deleted, all organization admins are notified.</td></tr></tbody></table>


# Data Gateway

The Lumi AI Data Gateway is a lightweight application for facilitating secure connections between local systems and the Lumi AI platform. It is an effective alternative for systems that should not be directly accessible from the Internet.

If you're looking for a guide to setup an instance of the Data Gateway, view our article on [Deploying the Data Gateway](/product-features/data-gateway/deploying-the-data-gateway).

## How it Works <a href="#how-it-works" id="how-it-works"></a>

The Data Gateway runs as a service on a local system. It continuously polls the Lumi AI platform for pending requests, executes those requests against the local source system, and returns the results — including query data and associated metadata — back to the platform.

<figure><img src="/files/Gq1tOPgi8eKyhFTEnaZa" alt=""><figcaption></figcaption></figure>

## Supported Source Systems

The Data Gateway supports the following database engines:

* PostgreSQL
* MySQL
* Microsoft SQL Server
* Oracle
* Snowflake
* SAP HANA
* Databricks

## Network Details <a href="#network-details" id="network-details"></a>

The Data Gateway requires no inbound ports to be opened. All communication is outbound-initiated HTTPS (port 443) from the gateway host to the Lumi AI platform.

The gateway host does require outbound TCP access to the source system on the relevant database port, so internal firewalls between the gateway and the source system must permit this.

For environments with strict outbound firewall rules, deep packet inspection, or TLS inspection, see [Network Configuration](/using-lumi/network-configuration) for protocol details, required FQDNs, and guidance on SSL interception.

## Logging <a href="#logging" id="logging"></a>

The Data Gateway writes logs to a logs folder in the same directory as the executable. Log files are named `lumi_data_gateway.log`, rotate daily at midnight, and are retained for 7 days.

The log file captures all events at DEBUG level. Console output defaults to INFO level and can be adjusted via the `console_log_level` configuration setting (see [Deploying the Data Gateway](/product-features/data-gateway/deploying-the-data-gateway)).

**CloudWatch Logs**: For deployments where Lumi AI has configured CloudWatch integration, the gateway will automatically forward application logs to the designated AWS CloudWatch log group. This is provisioned from the Lumi AI platform side and requires no configuration on the gateway host.

## Management & Monitoring <a href="#management--monitoring" id="management--monitoring"></a>

Individuals with administrative access to the Lumi AI platform can manage and monitor Data Gateways via the Admin Settings panel. This includes creating, relabeling, removing, and monitoring the status of gateway instances.

{% hint style="warning" %}
A gateway's status is usually reflected immediately, but under certain conditions (e.g., the host is shut down unexpectedly) it may take 10 to 15 minutes for the status change to be reflected in the panel.
{% endhint %}


# Deploying the Data Gateway

This article covers prerequisites and steps for deploying a Data Gateway.

## Prerequisites <a href="#prerequisites" id="prerequisites"></a>

Before configuring your first Data Gateway, please note the following requirements:

1. Lumi admin access to the Lumi AI platform
   * Creating a Data Gateway instance requires admin-level privileges.
2. A host machine running Windows or Linux (or a Linux container — see [Docker Deployment ](#troubleshooting)below)
3. Network access for the host machine to the source system/database
4. Outbound HTTPS (port 443) access from the host machine to the Internet
   * Required for connecting to the Lumi AI platform. See [Network Configuration](/using-lumi/network-configuration) for specific IP addresses and hostname requirements.
5. Microsoft ODBC Driver 18 for SQL Server installed on the host — if connecting to SQL Server
   * Required only for SQL Server connections. All other supported engines have their drivers bundled in the gateway executable. Download from [Microsoft's documentation](https://learn.microsoft.com/en-us/sql/connect/odbc/download-odbc-driver-for-sql-server). The Docker image includes this driver pre-installed.

## Running the Data Gateway <a href="#running-the-data-gateway" id="running-the-data-gateway"></a>

To run, you define the configuration/identity for the Data Gateway instance, download the application, and start it.

### 1. Define a Data Gateway Instance in the Lumi AI Platform Settings Panel​ <a href="#id-1-define-a-data-gateway-instance-in-the-lumi-ai-platform-settings-panel" id="id-1-define-a-data-gateway-instance-in-the-lumi-ai-platform-settings-panel"></a>

Use the Data Gateway tab of the Admin Settings page to create a new Data Gateway. Provide a name (and optionally a description) for easy identification.

A token will be generated for use in configuring and authenticating the gateway. Keep this token securely — you will need it in the next steps.

{% hint style="success" %}
The token is displayed only once for security. If it is lost or compromised, you can generate a new one from the same panel.
{% endhint %}

{% hint style="info" %}
In most cases, a single Data Gateway instance can serve multiple source systems, provided those systems are all accessible from the same host. Create multiple instances only if your source systems span isolated networks (e.g., separate regional environments with no shared connectivity).
{% endhint %}

### 2. Download the Data Gateway <a href="#id-2-download-the-data-gateway" id="id-2-download-the-data-gateway"></a>

The Data Gateway is distributed as a single standalone executable — no runtime or additional dependencies need to be installed separately (except the SQL Server ODBC driver noted above). Download the latest version for your platform from the Data Gateway tab of the Admin Settings page.

Place the executable in a dedicated directory on the host (e.g., `/opt/lumi-gateway` on Linux, or `C:\lumi-gateway` on Windows). The gateway locates its `config.yaml` and writes its `logs` folder relative to the executable's own location, so a stable, dedicated directory makes managing these files straightforward.

{% hint style="info" %}
On Linux, mark the file as executable after downloading:\
`chmod +x <lumi-data-gateway-filename>`
{% endhint %}

{% hint style="success" %}
Keep the Data Gateway up to date to benefit from the latest features and fixes. The Admin Settings panel will indicate if your running instance is outdated.
{% endhint %}

### 3. Apply a Configuration <a href="#id-3-apply-a-configuration" id="id-3-apply-a-configuration"></a>

The gateway is configured via a config.yaml file placed in the same directory as the executable. At minimum, only the token field is required.

```yaml
# Lumi AI Data Gateway Configuration

token: "<your gateway token>"

# Optional settings (defaults shown):
# service_endpoint: https://api.lumi-ai.com   # Lumi AI platform endpoint
# console_log_level: INFO                      # Log verbosity for console output
#                                              # Valid values: TRACE, DEBUG, INFO,
#                                              #   SUCCESS, WARNING, ERROR, CRITICAL
# retry_count: 5                               # Max consecutive connection failures
#                                              #   before the gateway gives up
# reset_time: 300                              # Seconds before the retry counter resets
```

Configuration can also be supplied via environment variables or command-line arguments, which take precedence over the config file in that order:

| Setting           | config.yaml key     | Environment variable                         | CLI flag            |
| ----------------- | ------------------- | -------------------------------------------- | ------------------- |
| Token             | token               | LUMI\_AI\_DATA\_GATEWAY\_TOKEN               | --token             |
| Platform endpoint | service\_endpoint   | LUMI\_AI\_DATA\_GATEWAY\_SERVICE\_ENDPOINT   | --service-endpoint  |
| Console log level | console\_log\_level | LUMI\_AI\_DATA\_GATEWAY\_CONSOLE\_LOG\_LEVEL | --console-log-level |
| Retry count       | retry\_count        | LUMI\_AI\_DATA\_GATEWAY\_RETRY\_COUNT        | --retry-count       |
| Reset time        | reset\_time         | LUMI\_AI\_DATA\_GATEWAY\_RESET\_TIME         | --reset-time        |

### 4. Start the Data Gateway <a href="#id-4-start-the-data-gateway" id="id-4-start-the-data-gateway"></a>

Run the executable from its directory. The gateway runs in the foreground and prints log output to the terminal.

#### Linux

```bash
./lumi-agent-linux-vX.X.XX
```

#### Windows (Command Prompt or PowerShell)

```powershell
.\lumi-agent-windows-vX.X.XX.exe
```

To run the gateway as a background service that starts automatically at boot, see [Configuring the Data Gateway for Boot](/product-features/data-gateway/configuring-the-data-gateway-for-boot).

If any issues arise, see [Troubleshooting](#troubleshooting-1) below.

### 5. Check the Admin Panel <a href="#id-5-check-the-admin-panel" id="id-5-check-the-admin-panel"></a>

The Data Gateway instance should now appear as **Active** in the Admin Settings panel.

{% hint style="info" %}
An Active status confirms the gateway process is running and connected to the platform. It does not validate the connection configuration for a specific Knowledge Base — you can test and verify source system connectivity from the Knowledge Base settings.
{% endhint %}

### 6. \[Optional] Configure the Data Gateway to Run at Startup <a href="#id-6-optional-configure-the-data-gateway-to-run-at-startup" id="id-6-optional-configure-the-data-gateway-to-run-at-startup"></a>

See [Configuring the Data Gateway for Boot](/product-features/data-gateway/configuring-the-data-gateway-for-boot) for instructions on setting up the gateway as a service or scheduled task on Linux or Windows.

## Docker Deployment <a href="#troubleshooting" id="troubleshooting"></a>

A Linux Docker image is available for enterprise customers on request. [Contact support](mailto:support@lumi-ai.com) to obtain the image.

The Docker image is based on Ubuntu 22.04 and includes:

* The gateway binary at `/opt/lumi-ai-data-gateway/lumi-ai-data-gateway`
* Microsoft ODBC Driver 18 for SQL Server (pre-installed — no extra setup needed for SQL Server connections)
* A non-root `lumi` user for runtime security

No inbound ports are exposed. The gateway communicates outbound only.

### Running with Docker

The simplest way to run is to pass the token as an environment variable:

<pre class="language-bash"><code class="lang-bash">docker run -d \
<strong>  --name lumi-data-gateway \
</strong>  --restart unless-stopped \
  -e LUMI_AI_DATA_GATEWAY_TOKEN= \
  &#x3C;image>
</code></pre>

To persist logs on the host, mount the logs directory:

```bash
docker run -d \
  --name lumi-data-gateway \
  --restart unless-stopped \
  -e LUMI_AI_DATA_GATEWAY_TOKEN=<your-token> \
  -v /opt/lumi-gateway/logs:/opt/lumi-ai-data-gateway/logs \
  <image>
```

To use a `config.yaml` file instead of environment variables, mount it into the container at the expected path:

```bash
docker run -d \
  --name lumi-data-gateway \
  --restart unless-stopped \
  -v /opt/lumi-gateway/config.yaml:/opt/lumi-ai-data-gateway/config.yaml:ro \
  -v /opt/lumi-gateway/logs:/opt/lumi-ai-data-gateway/logs \
  <image>
```

### Running with Docker Compose <a href="#troubleshooting" id="troubleshooting"></a>

```yaml
services:
  lumi-data-gateway:
    image: <image>
    container_name: lumi-data-gateway
    restart: unless-stopped
    environment:
      - LUMI_AI_DATA_GATEWAY_TOKEN=<your-token>
    volumes:
      - ./logs:/opt/lumi-ai-data-gateway/logs
```

Save this as `docker-compose.yml` and run:

```bash
docker compose up -d
```

### Viewing Logs <a href="#troubleshooting" id="troubleshooting"></a>

Container stdout (console output at INFO level):

```bash
docker logs lumi-data-gateway
docker logs -f lumi-data-gateway # follow
```

If you mounted the log volume, the full DEBUG-level log file is at the host path you specified.

### Checking Health

The image includes a health check that confirms the gateway process is running:

```bash
docker inspect --format='{{.State.Health.Status}}' lumi-data-gateway
```

A status of `healthy` means the process is running. Check the Admin Settings panel to confirm the gateway is connected to the platform.

{% hint style="info" %}
The Docker image is Linux-only. For Windows hosts, use the standalone executable with the Task Scheduler or Windows Service method described in [Configuring the Data Gateway for Boot](/product-features/data-gateway/configuring-the-data-gateway-for-boot).
{% endhint %}

## Troubleshooting <a href="#troubleshooting" id="troubleshooting"></a>

**Check the admin panel status**

If the instance shows as **Inactive**, verify the process is running on the host and restart it if necessary.

**Check the gateway log**

The `logs` folder next to the executable (or the mounted volume path for Docker) contains up to 7 days of logs at DEBUG level. Error events are logged with context that can help identify the root cause.

**Verify the token**

If the token is invalid or associated with a different gateway instance, the gateway will not connect. Generate a new token from the Admin Settings panel and update your configuration.

**Verify outbound network connectivity**

The gateway host must be able to reach Lumi AI's endpoints over HTTPS on port 443. Test basic connectivity from the host:

```bash
# Linux / macOS
curl -I https://api.lumi-ai.com
curl -I https://broker.lumi-ai.com

# Windows (PowerShell)
Invoke-WebRequest -Uri https://api.lumi-ai.com -Method Head
Invoke-WebRequest -Uri https://broker.lumi-ai.com -Method Head
```

Any response (including an error status code) confirms the TCP connection is working. A connection timeout or TLS error points to a firewall or SSL inspection issue — see [Network Configuration](/using-lumi/network-configuration) for guidance.

If none of the above resolves the issue, [contact Lumi AI support](mailto:support@lumi-ai.com).


# Configuring the Data Gateway for Boot

The Data Gateway can be configured to start automatically when its host starts up. The exact steps depend on the operating system.

{% hint style="warning" %}
When you update the Data Gateway executable, update any file path references in your startup configuration to point to the new version.
{% endhint %}

## Linux <a href="#linux" id="linux"></a>

### Using `systemd` (Recommended)

`systemd` is the standard service manager on modern Linux distributions (Ubuntu, Debian, RHEL, Fedora, etc.) and is the recommended approach for production deployments. It handles automatic restart on failure and integrates with the system journal.

Create a new service file:

```bash
sudo nano /etc/systemd/system/lumi-data-gateway.service 
```

Add the following content, substituting the actual executable filename and a dedicated service user:

```systemd
[Unit]
Description=Lumi AI Data Gateway
After=network-online.target
Wants=network-online.target

[Service]
User=lumi
WorkingDirectory=/opt/lumi-gateway
ExecStart=/opt/lumi-gateway/lumi-agent-linux-vX.X.XX
Restart=on-failure
RestartSec=10

[Install]
WantedBy=multi-user.target
```

* `ExecStart` — full absolute path to the executable. The gateway locates `config.yaml` and writes its `logs` folder relative to the executable itself, so the directory containing the binary is what matters, not `WorkingDirectory`.
* `User` — a dedicated non-root user is recommended. Create one with `useradd -r -s /bin/false lumi` if it doesn't exist, and ensure it has read/write access to the gateway directory.
* `Restart=on-failure / RestartSec=10` — automatically restarts the gateway if it exits unexpectedly, with a 10-second delay.

Reload `systemd` and enable the service to start at boot:

```bash
sudo systemctl daemon-reload 
sudo systemctl enable lumi-data-gateway.service 
```

Start the service immediately:

```bash
sudo systemctl start lumi-data-gateway.service 
```

Confirm it is running:

```bash
sudo systemctl status lumi-data-gateway.service
```

### Using `cron` with `@reboot`

A simpler option for systems without `systemd` or for quick setups.

Open the crontab for the user that will run the gateway:

```bash
crontab -e 
```

Add a line using the full absolute path to the executable:

```bash
@reboot /opt/lumi-gateway/lumi-agent-linux-vX.X.XX
```

Use the full absolute path — the gateway resolves `config.yaml` and `logs` relative to the executable itself, so there is no need to `cd` first.

### Using `rc.local` (Older Systems)

Edit `rc.local`:

```bash
sudo nano /etc/rc.local 
```

Add the following before the `exit 0` line:

```bash
/opt/lumi-gateway/lumi-agent-linux-vX.X.XX &
```

Ensure `rc.local` is executable:

```bash
sudo chmod +x /etc/rc.local
```

### Desktop Environment Autostart (GUI)

If running on a Linux desktop, use the built-in autostart mechanism for your environment:

* **GNOME**: `gnome-session-properties`
* **KDE**: Autostart module in System Settings
* Other environments: refer to their documentation

Note: desktop autostart only runs when the user is logged in. For unattended or server deployments, `systemd` is the appropriate choice.

## Windows <a href="#windows" id="windows"></a>

### Using Windows Service (Recommended for Production)

The Windows gateway executable includes built-in Windows Service support — the recommended approach for production deployments. The service runs under the SYSTEM account, starts at boot without requiring a user login, and restarts automatically on failure.

**Install the service:**

Open a Command Prompt or PowerShell **as Administrator** in the directory containing the gateway executable, then run:

```bash
.\lumi-agent-windows-vX.X.XX.exe --install-service
```

This installs and starts the service with the default name `LumiAIDataGateway`. To use a custom name (e.g., for multiple instances):

```bash
.\lumi-agent-windows-vX.X.XX.exe --install-service --service-name MyGateway
```

After installation, the service will start automatically on the next reboot and on any subsequent failure. You can also start it immediately from Services (`services.msc`) or via:

```bash
net start LumiAIDataGateway
```

**Uninstall the service:**

```bash
.\lumi-agent-windows-vX.X.XX.exe --remove-service LumiAIDataGateway
```

{% hint style="info" %}
The gateway reads `config.yaml` from the same directory as the executable when running as a service. Ensure the config file is in place before installing, or supply the token via the `LUMI_AI_DATA_GATEWAY_TOKEN` environment variable set at the system level.
{% endhint %}

### Using Task Scheduler

An alternative to the Windows Service, suitable if you prefer not to use the built-in service mode.

1. Open **Task Scheduler** (search for it in the Start menu) and click **Create Task**.
2. **General tab**: Enter a name (e.g., `Lumi AI Data Gateway`). Click **Change User or Group**, type `SYSTEM`, and confirm.
3. **Triggers tab**: Click **New**..., set **Begin the task** to `At startup,` click **OK**.
4. **Actions tab**: Click **New**..., click **Browse**... and select the gateway executable. In the **Start in (optional)** field, enter the directory containing the executable (e.g., `C:\lumi-gateway`). Click **OK**.
5. **Conditions tab**: Uncheck **Start the task only if the computer is on AC power**.
6. **Settings tab**: Uncheck **Stop the task if it runs longer than**.
7. Click **OK** to save, then reboot to verify the task runs correctly.

### Using Group Policy (Domain-Joined Machines)

For domain-joined machines managed via Group Policy:

1. Create a `.bat` file:

<pre class="language-bat"><code class="lang-bat"><strong>start "" "C:\lumi-gateway\lumi-agent-windows-vX.X.XX.exe"
</strong></code></pre>

2. Open Group Policy Editor (`gpedit.msc`).
3. Navigate to `Computer Configuration → Windows Settings → Scripts (Startup/Shutdown)`.
4. Add the `.bat` file as a Startup script.

***

**After any startup configuration**: reboot the host and confirm the gateway appears as **Active** in the Lumi AI Admin Settings panel.


# Source System Integrations

A major component of Lumi AI is the ability to connect, define, and process data from structured sources. As a result, Lumi AI offers integration to many of the most popular source systems and protocols available to get you connected with your data.

## Properties

Each system comes with supported secondary functions and features:

* **Status**: Indicates the availability of the system as a connection option
  * *Available: Is available for all license/plan tiers*
  * *Enterprise only: Is available for Enterprise plans only*
  * *Private Preview: Is available for select customers in testing / upon request*
* **Connection Methods:** Sources can be connected in one of two ways
  * *Direct: The default method, with a direct and secure over-the-internet connection*
  * *Gateway: An alternative method using a Lumi AI purpose-built agent to mediate connections from the edge of the network (see* [*Data Gateway*](/product-features/data-gateway) *to learn more)*
* **Controls**: Mechanisms to restrict or throttle connections and their impact to the source system (see [Query Constraints](/using-lumi/limitations/query-constraints) and [Organization Profile](/product-features/organization-settings/organization-profile) for more information and settings); not all mechanisms are supported by all systems
  * *Cost: Prevents high estimated compute-cost queries from running before they start*
  * *Duration: Stops long-running queries at a specific threshold*

{% hint style="info" %}
Note:

* To be enrolled as part of a "Private Preview", please reach out to <support@lumi-ai.com>.
* Gateways and gateway connections are only available for Enterprise plans.
  {% endhint %}

## Supported Systems

Click on any to learn more.

<table data-view="cards"><thead><tr><th>System</th><th>Connection Methods<select multiple><option value="N9AjoAQJwHgP" label="Gateway" color="blue"></option><option value="FznRCDPNTcm2" label="Direct" color="blue"></option></select></th><th>Status<select><option value="KhcHckEkAcIv" label="Private Preview" color="blue"></option><option value="9iVHJkUAjXzN" label="Available" color="blue"></option></select></th><th>Controls<select multiple><option value="INYUex9sjSeT" label="Cost" color="blue"></option><option value="q8ITGZ3mmq6Z" label="Duration" color="blue"></option></select></th><th data-hidden data-card-target data-type="content-ref"></th><th data-hidden data-type="content-ref"></th></tr></thead><tbody><tr><td>PostgreSQL</td><td><span data-option="FznRCDPNTcm2">Direct, </span><span data-option="N9AjoAQJwHgP">Gateway</span></td><td><span data-option="9iVHJkUAjXzN">Available</span></td><td><span data-option="INYUex9sjSeT">Cost, </span><span data-option="q8ITGZ3mmq6Z">Duration</span></td><td><a href="/pages/XGaytrOpYDnvuIkfrtSg">/pages/XGaytrOpYDnvuIkfrtSg</a></td><td><a href="/pages/XGaytrOpYDnvuIkfrtSg">/pages/XGaytrOpYDnvuIkfrtSg</a></td></tr><tr><td>Microsoft SQL Server</td><td><span data-option="FznRCDPNTcm2">Direct, </span><span data-option="N9AjoAQJwHgP">Gateway</span></td><td><span data-option="9iVHJkUAjXzN">Available</span></td><td><span data-option="INYUex9sjSeT">Cost</span></td><td><a href="/pages/1JeN9zV1XKy1AuFwSvWh">/pages/1JeN9zV1XKy1AuFwSvWh</a></td><td><a href="/pages/1JeN9zV1XKy1AuFwSvWh">/pages/1JeN9zV1XKy1AuFwSvWh</a></td></tr><tr><td>MySQL</td><td><span data-option="FznRCDPNTcm2">Direct, </span><span data-option="N9AjoAQJwHgP">Gateway</span></td><td><span data-option="9iVHJkUAjXzN">Available</span></td><td><span data-option="q8ITGZ3mmq6Z">Duration</span></td><td><a href="/pages/3udgVbvlL659Pie1REWi">/pages/3udgVbvlL659Pie1REWi</a></td><td><a href="/pages/3udgVbvlL659Pie1REWi">/pages/3udgVbvlL659Pie1REWi</a></td></tr><tr><td>Databricks</td><td><span data-option="FznRCDPNTcm2">Direct, </span><span data-option="N9AjoAQJwHgP">Gateway</span></td><td><span data-option="KhcHckEkAcIv">Private Preview</span></td><td></td><td><a href="/pages/TibbstQFM9fFU5u4Ih6C">/pages/TibbstQFM9fFU5u4Ih6C</a></td><td></td></tr><tr><td>BigQuery</td><td><span data-option="FznRCDPNTcm2">Direct</span></td><td><span data-option="9iVHJkUAjXzN">Available</span></td><td><span data-option="INYUex9sjSeT">Cost</span></td><td><a href="/pages/4p7DXIsc9yUacBK76zEB">/pages/4p7DXIsc9yUacBK76zEB</a></td><td></td></tr><tr><td>Snowflake</td><td><span data-option="FznRCDPNTcm2">Direct, </span><span data-option="N9AjoAQJwHgP">Gateway</span></td><td><span data-option="9iVHJkUAjXzN">Available</span></td><td><span data-option="q8ITGZ3mmq6Z">Duration</span></td><td><a href="/pages/J6mDsPAOA03ATIX9SbRf">/pages/J6mDsPAOA03ATIX9SbRf</a></td><td></td></tr><tr><td>SAP HANA</td><td><span data-option="N9AjoAQJwHgP">Gateway</span></td><td><span data-option="9iVHJkUAjXzN">Available</span></td><td></td><td><a href="/pages/9arqDZHH8Iieeg9BHBjq">/pages/9arqDZHH8Iieeg9BHBjq</a></td><td></td></tr><tr><td>Oracle</td><td><span data-option="FznRCDPNTcm2">Direct</span></td><td><span data-option="9iVHJkUAjXzN">Available</span></td><td><span data-option="INYUex9sjSeT">Cost</span></td><td><a href="/pages/SasTKDTD2KzevvCKY1U8">/pages/SasTKDTD2KzevvCKY1U8</a></td><td></td></tr><tr><td>AWS Athena</td><td><span data-option="FznRCDPNTcm2">Direct</span></td><td><span data-option="KhcHckEkAcIv">Private Preview</span></td><td></td><td></td><td></td></tr><tr><td>RedShift</td><td><span data-option="FznRCDPNTcm2">Direct</span></td><td><span data-option="KhcHckEkAcIv">Private Preview</span></td><td><span data-option="q8ITGZ3mmq6Z">Duration</span></td><td><a href="/pages/OZ56E6QVakgsM3oHtfmT">/pages/OZ56E6QVakgsM3oHtfmT</a></td><td></td></tr></tbody></table>


# PostgreSQL

A common and reliable open-source relation database system with support for advanced SQL standards and diverse data types.

## Supported Connection Methods

Available methods for connections to the target system from Lumi AI:

* [x] **Direct**

  *The default / typical connection option. Interfaces directly with the target system over the Internet with no mediation. Suitable for most cloud-hosted scenarios or public-facing resources. See* [*Network Configuration*](/using-lumi/network-configuration) *for more details.*
* [x] **Gateway**\
  *An alternative connection method leveraging a Lumi AI Data Gateway. This uses Lumi AI's purpose-built connection agent to mediate communications. Ideal for restricting access to systems within a protected network. For more information, see* [*Data Gateway*](/product-features/data-gateway)*.*

## Supported Limits

The following are limits that can be configured for the system to moderate access and usage from users in Lumi AI:

* [x] **Cost Limit**\
  *Before running a query, if the system supports it, the system-specific compute cost (or surrogate) estimate will be processed and compared to an organization-level/admin-set cost limit for systems of this type (if configured/set). If exceeded, the query will not run (and either the workflow will attempt an optimization or the user will be notified).*
* [x] **Duration Limit**\
  *An alternative to cost, queries will be stopped the system supports a duration/timeout limit and one is set/configured at the organization level (across systems).*

## Available Parameters

These properties are the essential source system connection properties that all queries are directed towards.

*\* Required parameters*

{% hint style="info" %}
Note: The Gateway parameter is common to all systems (when supported) and is only available when gateway is the selected connection method.
{% endhint %}

<details>

<summary>Host*</summary>

Domain or IP of the database to allow a connection to Lumi AI.

:thumbsup: **Valid Examples**

* Domain name: *docs.lumi-ai.com*
* IPv4: *55.88.92.101*

:thumbsdown: **Invalid Examples**

* IPv4 with alphanumeric characters: *123.abc.def.456*
* Incomplete domain name resolutions: *lumi-ai.com*

</details>

<details>

<summary>Port*</summary>

Access port to allow for connections to the database.

:thumbsup: **Valid Examples**

* Default PostgreSQL port: *5432*

:thumbsdown: **Invalid Examples**

* Known Port Numbers (0-1023): *80*

</details>

<details>

<summary>Username*</summary>

Username of the generated database user which will be used for interactions and transactions.

**Special Considerations**

* If double quotes are used, then the name will be case sensitive

:thumbsup: **Valid Examples**

* Uses alphanumeric characters : *lumi1*
* Utilizing underscore (\_) in place of spaces: *user\_number*

:thumbsdown: **Invalid Examples**

* Starting with a number: *1lumi*
* Utilizing spaces: *user name*
* Using invalid characters: *user#1*

</details>

<details>

<summary>Password*</summary>

Password of the generated database user which will be used for interactions and transactions.

</details>

<details>

<summary>Database*</summary>

Literal database name that will be used for transactions within the agents.

**Special Considerations**

* If case sensitivity is required, utilize double quotes for database name; ex. "New\_database"

:thumbsup: **Valid Examples**

* Uses alphanumeric characters: *lumi1*
* Utilizing underscore (\_) in place of spaces: *new\_database*

:thumbsdown: **Invalid Examples**

* Starting with a number: *1lumi*
* Utilizing spaces: *user name*
* Using reserved words unquoted: *select*

</details>

## System Permissions & Configuration

Provided user must have the following:

* [x] ROLE with LOGIN privileges
* [x] PRIVILEGE to CONNECT on database
* [x] PRIVILEGE to USAGE on schema
* [x] SELECT PRIVILEGE in table(s)
* [x] (if applicable) SELECT PRIVILEGE on table(s) for column(s)

For configurations:

* [x] Ensure the server is allowing connections from the Lumi gateway or server

## Special Considerations

* Special characters and case sensitivity can be utilized in database names and usernames via encasing the name in double quotes (" "), but is not recommended

## Common Issues

* Ensure the firewall settings allow for a connection to the database


# Microsoft SQL Server

A robust, scalable relational database with built-in security features, offering advanced data management, real-time analytics, and seamless integration with the Microsoft ecosystem.

## Supported Methods

Means for Lumi to connect to the client to implement the services required:

* [x] **Direct**

  *The default / typical connection option. Interfaces directly with the target system over the Internet with no mediation. Suitable for most cloud-hosted scenarios or public-facing resources. See* [*Network Configuration*](/using-lumi/network-configuration) *for more details.*
* [x] **Gateway**\
  *An alternative connection method leveraging a Lumi AI Data Gateway. This uses Lumi AI's purpose-built connection agent to mediate communications. Ideal for restricting access to systems within a protected network. For more information, see* [*Data Gateway*](/product-features/data-gateway)*.*

## Supported Limits

The following are limitations that can be set to fine tune the agents' actions:

* [x] **Cost Limit**\
  *Before running a query, if the system supports it, the system-specific compute cost (or surrogate) estimate will be processed and compared to an organization-level/admin-set cost limit for systems of this type (if configured/set). If exceeded, the query will not run (and either the workflow will attempt an optimization or the user will be notified).*
* [ ] **Duration Limit**\
  *An alternative to cost, queries will be stopped the system supports a duration/timeout limit and one is set/configured at the organization level (across systems).*

## Available Parameters

These properties are the essential source system connection properties that all queries are directed towards.

*\* Required parameters*

{% hint style="info" %}
Note: The Gateway parameter is common to all systems (when supported) and is only available when gateway is the selected connection method.
{% endhint %}

<details>

<summary>Host*</summary>

Domain or IP of the database to allow a connection to Lumi AI.

:thumbsup: **Valid Examples**

* Domain name: *docs.lumi-ai.com*
* IPv4: *55.88.92.101*

:thumbsdown: **Invalid Examples**

* IPv4 with alphanumeric characters: *123.abc.def.456*
* Incomplete domain name resolutions: *lumi-ai.com*

</details>

<details>

<summary>Port*</summary>

Access port to allow for connections to the database.

:thumbsup: **Valid Examples**

* Default MS SQL Server port: *1433*

:thumbsdown: **Invalid Examples**

* Known Port Numbers (0-1023): *80*

</details>

<details>

<summary>Username*</summary>

Username of the generated database user which will be used for interactions and transactions.

**Special Considerations**

* If double quotes are used, then the name will be case sensitive

:thumbsup: **Valid Examples**

* Uses alphanumeric characters : *lumi1*
* Utilizing underscore (\_) in place of spaces: *user\_number*

:thumbsdown: **Invalid Examples**

* Starting with a number: *1lumi*
* Utilizing spaces: *user name*
* Using reserved words not encapsulated: *select*
* Using invalid characters not encapsulated: *user#1*

</details>

<details>

<summary>Password*</summary>

Password of the generated database user which will be used for interactions and transactions.

</details>

<details>

<summary>Database*</summary>

Literal database name that will be used for transactions within the agents.

**Special Considerations**

* If case sensitivity is required, utilize double quotes for database name; ex. "New\_database"

:thumbsup: **Valid Examples**

* Uses alphanumeric characters: *lumi1*
* Utilizing underscore (\_) in place of spaces: *new\_database*

:thumbsdown: **Invalid Examples**

* Starting with a number: *1lumi*
* Utilizing spaces: *user name*
* Using reserved words not encapsulated: *select*
* Using invalid characters not encapsulated: *user#1*

</details>

## System Permissions & Configuration

Provided user must have the following:

* [x] Grant the user with `db_datareader` ROLE
* [x] SELECT PRIVILEGE in table(s)
* [x] (if applicable) SELECT PRIVILEGE on table(s) for column(s)

For configurations:

* [x] Ensure the server is allowing connections from the Lumi gateway or server

## Special Notes

* Special characters can be utilized in database names and usernames via encasing the name in double quotes (" "), but is not recommended
* Encasing an identifier with \[ ] allows for a usage of reserved words and the @ character

## Common Issues

* Ensure the server is not in recovery mode and be on an online state
* Ensure the firewall settings allow for a connection to the database
* Ensure the username, password, and database values are explicitly provided


# MySQL

An open-source, reliable, and easy-to-use relational database that allows for seamless integrations with many platforms and programming languages.

## Supported Methods

Means for Lumi to connect to the client to implement the services required:

* [x] **Direct**

  *The default / typical connection option. Interfaces directly with the target system over the Internet with no mediation. Suitable for most cloud-hosted scenarios or public-facing resources. See* [*Network Configuration*](/using-lumi/network-configuration) *for more details.*
* [x] **Gateway**\
  *An alternative connection method leveraging a Lumi AI Data Gateway. This uses Lumi AI's purpose-built connection agent to mediate communications. Ideal for restricting access to systems within a protected network. For more information, see* [*Data Gateway*](/product-features/data-gateway)*.*

## Supported Limits

The following are limitations that can be set to fine tune the agents' actions:

* [ ] **Cost Limit**\
  *Before running a query, if the system supports it, the system-specific compute cost (or surrogate) estimate will be processed and compared to an organization-level/admin-set cost limit for systems of this type (if configured/set). If exceeded, the query will not run (and either the workflow will attempt an optimization or the user will be notified).*
* [x] **Duration Limit**\
  *An alternative to cost, queries will be stopped the system supports a duration/timeout limit and one is set/configured at the organization level (across systems).*

## Available Parameters

These properties are the essential source system connection properties that all queries are directed towards.

*\* Required parameters*

{% hint style="info" %}
Note: The Gateway parameter is common to all systems (when supported) and is only available when gateway is the selected connection method.
{% endhint %}

<details>

<summary>Host*</summary>

Domain or IP of the database to allow a connection to Lumi AI.

:thumbsup: **Valid Examples**

* Domain name: *docs.lumi-ai.com*
* IPv4: *55.88.92.101*

:thumbsdown: **Invalid Examples**

* IPv4 with alphanumeric characters: *123.abc.def.456*
* Incomplete domain name resolutions: *lumi-ai.com*

</details>

<details>

<summary>Port*</summary>

Access port to allow for connections to the database.

:thumbsup: **Valid Examples**

* Default MySQL Server port: *3306*

:thumbsdown: **Invalid Examples**

* Known Port Numbers (0-1023): *80*

</details>

<details>

<summary>Username*</summary>

Username of the generated database user which will be used for interactions and transactions.

**Special Considerations**

* If back ticks are used, then the name will be case sensitive

:thumbsup: **Valid Examples**

* Uses alphanumeric characters : *lumi1*
* Utilizing underscore (\_) in place of spaces: *user\_number*

:thumbsdown: **Invalid Examples**

* Starting with a number: *1lumi*
* Utilizing spaces: *user name*
* Using reserved words not encapsulated: *select*
* Using invalid characters not encapsulated: *user#1*

</details>

<details>

<summary>Password*</summary>

Password of the generated database user which will be used for interactions and transactions.

</details>

<details>

<summary>Database*</summary>

Literal database name that will be used for transactions within the agents.

**Special Considerations**

* If case sensitivity is required, utilize double quotes for database name; ex. "New\_database"

:thumbsup: **Valid Examples**

* Uses alphanumeric characters: *lumi1*
* Utilizing underscore (\_) in place of spaces: *new\_database*

:thumbsdown: **Invalid Examples**

* Starting with a number: *1lumi*
* Utilizing spaces: *user name*
* Using reserved words not encapsulated: *select*
* Using invalid characters not encapsulated: *user#1*

</details>

## System Permissions & Configuration

Provided user must have the following:

* [x] If applicable CREATE a user
* [x] Grant the user with `db_datareader` ROLE
* [x] SELECT PRIVILEGE in the database via `GRANT SELECT ON *.* TO <USER>;` and reload privleges with `FLUSH PRIVILEGES;`
* [x] (if applicable) SELECT PRIVILEGE on table(s) for column(s)

For configurations:

* [x] Ensure the server is allowing connections from the Lumi gateway or server via a my.cnf or my.ini file and bind-address

## Special Notes

* When making the user, it is recommended to specify the remote host like `'username'@'%'` where % is the guest address
* Encasing a name with back ticks (\` \`) allows for a usage of reserved words and special characters but is not recommended
* Depending on the file system on Linux computers, case sensitivity may be enforced while the default on Windows and most Linux systems are case-incentive

## Common Issues

* MySql has no division by zero, just renders nulls
* Ensure the server is not in recovery mode and be on an online state
* Ensure the firewall settings allow for a connection to the database
* Ensure the username, password, and database values are explicitly provided


# Databricks

Databricks is a data and AI platform built on Apache Spark, often used for large-scale data analytics, data engineering, and machine learning. Lumi AI can connect to Databricks via direct internet-based access or through a Lumi AI Data Gateway for environments requiring a secured connection.

## Supported Methods

Means for Lumi to connect to the client to implement the services required

* [x] **Direct**

  *This is the default option. This runs queries directly to the source, with no mediation. Make sure the source system allows for internet-based access (or whitelist Lumi AI; see rest of docs for specifics).*
* [x] **Gateway**\
  *This separate module is our tool to help connect to your data sources that are secured inside your network.*

## Supported Limits

The following are limits that can be configured for the system to moderate access and usage from users in Lumi AI:

* [ ] **Cost Limit**\
  *Before running a query, if the system supports it, the system-specific compute cost (or surrogate) estimate will be processed and compared to an organization-level/admin-set cost limit for systems of this type (if configured/set). If exceeded, the query will not run (and either the workflow will attempt an optimization or the user will be notified).*
* [ ] **Duration Limit**\
  *An alternative to cost, queries will be stopped the system supports a duration/timeout limit and one is set/configured at the organization level (across systems).*

## Available Parameters

These properties are the essential source system connection properties that all queries are directed towards.

*\* Required parameters*

{% hint style="info" %}
Note: The Gateway parameter is common to all systems (when supported) and is only available when gateway is the selected connection method.
{% endhint %}

<details>

<summary>Host*</summary>

The domain (or subdomain) of your Databricks workspace.

**Example**

* dbc-1234567.cloud.databricks.com

</details>

<details>

<summary>HTTP Path*</summary>

The HTTP Path for your Databricks SQL Warehouse (or all-purpose cluster). Typically found in the Databricks console under “Connection details” for your SQL Warehouse or cluster.

**Example**

* /sql/1.0/warehouses/abcd-1234-efgh-5678

</details>

<details>

<summary>Token*</summary>

A Databricks Personal Access Token (PAT) or other valid token with appropriate permissions for querying.

**Special Considerations**

* Must be kept secure; treat as a password.
* If creating with expiry, please track and be aware of necessary rotations.

</details>

<details>

<summary>Catalog*</summary>

The default catalog (schema container) you want to query in Databricks.

**Examples**

* main
* hive\_metastore

</details>

## System Permissions & Configuration

* **Databricks Workspace & Cluster Access**
  * The user/token must have permission to run queries on the specified Databricks SQL Warehouse or cluster.
  * If you are using Unity Catalog, ensure the token and associated user/group has the relevant permissions on the target catalogs, schemas, and tables.
* **Firewall & Network Configuration**
  * If using **Direct** connections, ensure your Databricks workspace can accept traffic from Lumi AI (either via an allow-list or by configuring public access).
  * If using **Gateway**, ensure the gateway host can connect to Databricks, and your cluster or workspace firewalls/security groups permit inbound traffic from the gateway.
* **Token Validity**
  * Databricks tokens typically expire after a set period. Ensure your token is current and refresh it before expiration to avoid failed connections.

## Special Notes

* **Case Sensitivity & Quoted Identifiers**\
  Databricks generally treats object names as case-insensitive unless quoted. Consistent naming and avoiding special characters can prevent confusion.
* **Cluster vs. SQL Warehouse**
  * If you plan to run queries on an all-purpose cluster, ensure it is configured to allow SQL connections and the `HTTP Path` is correct.
  * For production/reporting workloads, a Databricks SQL Warehouse (formerly “SQL Endpoint”) is often recommended for stable query performance.
* **Token vs. Username/Password**\
  In most Databricks setups, a personal access token replaces the typical username/password authentication. Make sure you store and handle this token securely.

## Common Issues

* **Invalid Host or HTTP Path**
  * Double-check you are using the correct workspace domain and the correct path from Databricks SQL Warehouses or cluster settings.
* **Expired Token**
  * If you encounter repeated authentication errors (`HTTP 401 Unauthorized`), verify that your Databricks token has not expired.
* **Insufficient Privileges**
  * Ensure that the token’s associated user/group has permission to run queries on the desired cluster or SQL Warehouse and to read the target tables.
* **Network Blocking or Firewall Issues**
  * If direct connections fail, confirm your firewall or security groups allow inbound traffic from Lumi AI or the Gateway to reach Databricks.
  * For private endpoints in Azure Databricks or AWS PrivateLink, additional VNet or VPC configurations may be necessary.
* **Misconfigured Gateway**
  * If using a gateway method, ensure the gateway is properly registered with Lumi AI, and that it can reach the Databricks domain on the required ports (443 for HTTPS).


# BigQuery

The integrated Google Cloud service offers a scalable, high-performance relational database that operates serverlessly.

## Supported Methods

Means for Lumi to connect to the client to implement the services required:

* [x] **Direct**

  *The default / typical connection option. Interfaces directly with the target system over the Internet with no mediation. Suitable for most cloud-hosted scenarios or public-facing resources. See* [*Network Configuration*](/using-lumi/network-configuration) *for more details.*
* [ ] **Gateway**\
  *An alternative connection method leveraging a Lumi AI Data Gateway. This uses Lumi AI's purpose-built connection agent to mediate communications. Ideal for restricting access to systems within a protected network. For more information, see* [*Data Gateway*](/product-features/data-gateway)*.*

## Supported Limits

The following are limitations that can be set to fine tune the agents' actions:

* [x] **Cost Limit**\
  *Before running a query, if the system supports it, the system-specific compute cost (or surrogate) estimate will be processed and compared to an organization-level/admin-set cost limit for systems of this type (if configured/set). If exceeded, the query will not run (and either the workflow will attempt an optimization or the user will be notified).*
* [ ] **Duration Limit**\
  *An alternative to cost, queries will be stopped the system supports a duration/timeout limit and one is set/configured at the organization level (across systems).*

## Available Parameters

These properties are the essential source system connection properties that all queries are directed towards.

*\* Required parameters*

<details>

<summary>Project ID*</summary>

The unique identifier for the Google Cloud project which consists of lowercase letters, digits, and/or hyphens while starting with a letter.

[How To Obtain Project ID](https://support.google.com/googleapi/answer/7014113?hl=en)

</details>

<details>

<summary>Service Account Credentials*</summary>

Credentials obtained from the Google BigQuery API interface to allow Lumi to access the database. The credentials should be a JSON key file containing the private keys and other information needed.

[How to Get Credentials](https://cloud.google.com/iam/docs/keys-create-delete)

</details>

## System Permissions & Configuration

To ensure proper access and functionality, please follow these recommended steps:

* **Create a Service Account:** Proceed with this step if you have not already established a service account.
  * For guidance, see [How to Generate A Service Account](https://cloud.google.com/iam/docs/service-accounts-create).
* **Assign Roles:** The following permissions need to be assigned to the associated Service account.
  * **BigQuery Data Viewer**: Grants permission to view tables.
  * **BigQuery Job User**: Allows for the execution of queries.

## Special Considerations

No noteworthy considerations.

## Common Issues

* Ensure BigQuery API is enabled for the project
* Ensure the generated service has its required roles


# Snowflake

A cloud-based data platform offers a scalable, secure, and high-performance relational database that offers online services and minimal management.

## Supported Methods

Means for Lumi to connect to the client to implement the services required

* [x] **Direct**

  *The default / typical connection option. Interfaces directly with the target system over the Internet with no mediation. Suitable for most cloud-hosted scenarios or public-facing resources. See* [*Network Configuration*](/using-lumi/network-configuration) *for more details.*
* [x] **Gateway**\
  *An alternative connection method leveraging a Lumi AI Data Gateway. This uses Lumi AI's purpose-built connection agent to mediate communications. Ideal for restricting access to systems within a protected network. For more information, see* [*Data Gateway*](/product-features/data-gateway)*.*

## Supported Limits

The following are limitations that can be set to fine tune the agents' actions:

* [ ] **Cost Limit**\
  *Before running a query, if the system supports it, the system-specific compute cost (or surrogate) estimate will be processed and compared to an organization-level/admin-set cost limit for systems of this type (if configured/set). If exceeded, the query will not run (and either the workflow will attempt an optimization or the user will be notified).*
* [x] **Duration Limit**\
  *An alternative to cost, queries will be stopped the system supports a duration/timeout limit and one is set/configured at the organization level (across systems).*

## Available Parameters

These properties are the essential source system connection properties that all queries are directed towards.

*\* Required parameters*

{% hint style="info" %}
Note: The Gateway parameter is common to all systems (when supported) and is only available when gateway is the selected connection method.
{% endhint %}

<details>

<summary>Account Identifier*</summary>

Provide the Snowflake unique account identifier within your organization.

[Snowflake Account Identifier Documentation](https://docs.snowflake.com/en/user-guide/admin-account-identifier)

</details>

<details>

<summary>Username*</summary>

Username of the generated database user which will be used for interactions and transactions.

**Special Considerations**

* If double quotes are used, then the name will be case sensitive
* Encasing a username with \[ ] allows for a usage of reserved words and the @ character
* Username can include alphanumeric characters, hyphens (-), underscores (\_), and periods (.)

:thumbsup: **Valid Examples**

* Uses alphanumeric characters : *lumi1*
* Utilizing underscore (\_) in place of spaces: *user\_number*

:thumbsdown: **Invalid Examples**

* Starting with a number: *1lumi*
* Utilizing spaces: *user name*
* Using invalid characters: *user#1*

</details>

<details>

<summary>Password</summary>

Password of the generated database user which will be used for interactions and transactions (if using password-based authentication).

</details>

<details>

<summary>Private key</summary>

Private key of the generated database user which will be used for interactions and transactions (if using Public / Private Key Pair-based authentication)

</details>

<details>

<summary>Database*</summary>

Literal database name that will be used for transactions within the agents.

:thumbsup: **Valid Examples**

* Uses alphanumeric characters: *lumi1*
* Utilizing underscore (\_) in place of spaces: *new\_database*

:thumbsdown: **Invalid Examples**

* Starting with a number: *1lumi*
* Utilizing spaces: *user name*
* Using reserved words unquoted: *select*

</details>

<details>

<summary>Warehouse*</summary>

Literal warehouse name that will be used for transactions within the agents.

[How To Generate A Warehouse](https://docs.snowflake.com/en/sql-reference/sql/create-warehouse)

:thumbsup: **Valid Examples**

* Uses alphanumeric characters: *lumi1*
* Utilizing underscore (\_) in place of spaces: *new\_database*

:thumbsdown: **Invalid Examples**

* Starting with a number: *1lumi*
* Utilizing spaces: *user name*
* Using reserved words unquoted: *select*

</details>

<details>

<summary>Role*</summary>

The role associated with the an account to provide access and permissions.

[How To Generate A Role](https://docs.snowflake.com/en/sql-reference/sql/create-role)

</details>

## System Permissions & Configuration

Provided user must have the following:

* [x] If applicable generate a new User with:
  * [x] `DEFAULT_ROLE`, `DEFAULT_WAREHOUSE`, `DEFAULT_NAMESPACE`, and `PASSWORD`
* [x] Generate a new ROLE and grant privileges:
  * [x] `GRANT USAGE ON DATABASE <database> TO ROLE <role>`
  * [x] `GRANT USAGE ON SCHEMA <database.schema> TO ROLE <role>`
* [x] Grant SELECT to all tables via `GRANT SELECT ON ALL TABLES IN SCHEMA <database.schema> TO ROLE <role>`
* [x] When applicable, grant the role to the generated user

For configurations:

* [x] Ensure the server is allowing connections from the Lumi gateway or server via the firewall

## Special Notes

* If case sensitivity is required and other special characters, utilize double quotes for database name; ex. "New\_database"

## Common Issues

* Ensure the firewall settings allow for a connection to the database
* Ensure the username, password, and database values are explicitly provided


# SAP HANA

Lumi currently supports S4 SAP HANA and the following document covers the usage of the database within the application.

## Supported Methods

Means for Lumi to connect to the client to implement the services required:

* [ ] **Direct**

  *The default / typical connection option. Interfaces directly with the target system over the Internet with no mediation. Suitable for most cloud-hosted scenarios or public-facing resources. See* [*Network Configuration*](/using-lumi/network-configuration) *for more details.*
* [x] **Gateway**\
  *An alternative connection method leveraging a Lumi AI Data Gateway. This uses Lumi AI's purpose-built connection agent to mediate communications. Ideal for restricting access to systems within a protected network. For more information, see* [*Data Gateway*](/product-features/data-gateway)*.*

{% hint style="info" %}
Direct connection is not supported with SAP HANA
{% endhint %}

## Supported Limits

The following are limitations that can be set to fine tune the agents' actions:

* [ ] **Cost Limit**\
  *Before running a query, if the system supports it, the system-specific compute cost (or surrogate) estimate will be processed and compared to an organization-level/admin-set cost limit for systems of this type (if configured/set). If exceeded, the query will not run (and either the workflow will attempt an optimization or the user will be notified).*
* [ ] **Duration Limit**\
  *An alternative to cost, queries will be stopped the system supports a duration/timeout limit and one is set/configured at the organization level (across systems).*

## Available Parameters

These properties are the essential source system connection properties that all queries are directed towards.

*\* Required parameters*

<details>

<summary>Host*</summary>

Domain or IP of the database to allow a connection to Lumi AI.

:thumbsup: **Valid Examples**

* Domain name: *docs.lumi-ai.com*
* IPv4: *55.88.92.101*

:thumbsdown: **Invalid Examples**

* IPv4 with alphanumeric characters: *123.abc.def.456*
* Incomplete domain name resolutions: *lumi-ai.com*

</details>

<details>

<summary>Port*</summary>

Access port to allow for connections to the database.

:thumbsup: **Valid Examples**

* Default HANA SQL Port: *30015*
* SQL Interface Over HTTPS: *30013*
* XS Engine HTTP Port: *8000*
* XS Engine HTTPS Port: *44300*

:thumbsdown: **Invalid Examples**

* Known Port Numbers (0-1023): *80*

</details>

<details>

<summary>Username*</summary>

Username of the generated database user which will be used for interactions and transactions.

:thumbsup: **Valid Examples**

* Uses alphanumeric characters : *lumi1*
* Utilizing underscore (\_) in place of spaces: *user\_number*

:thumbsdown: **Invalid Examples**

* Starting with a number: *1lumi*
* Utilizing spaces: *user name*
* Using invalid characters unquoted: *user#1*

</details>

<details>

<summary>Password*</summary>

Password of the generated database user which will be used for interactions and transactions.

</details>

<details>

<summary>Database*</summary>

Literal database name that will be used for transactions within the agents.

**Special Considerations**

* If case sensitivity is required, utilize double quotes for database name; ex. "New\_database"

:thumbsup: **Valid Examples**

* Uses alphanumeric characters: *lumi1*
* Utilizing underscore (\_) in place of spaces: *new\_database*

:thumbsdown: **Invalid Examples**

* Starting with a number: *1lumi*
* Utilizing spaces: *user name*
* Using reserved words unquoted: *select*
* Has invalid special character unquoted: *lumi#2*

</details>

## System Permissions & Configuration

Provided user must have the following:

* [x] If applicable CREATE a user
* [x] Grant the user SELECT privileges on the schema and tables:
  * [x] `GRANT SELECT ON SCHEMA my_schema TO service_user;`\
    `GRANT SELECT ON TABLE my_schema.my_table TO service_user;`

For configurations:

* [x] Ensure the server is allowing connections from the Lumi gateway or server via the firewall

## Special Notes

* Special characters and case sensitivity can be utilized in database names and usernames via encasing the name in double quotes (" "), but is not recommended

## Common Issues

* Ensure the firewall settings allow for a connection to the database
* Ensure the username, password, and database values are explicitly provided


# Oracle

A robust and widely used enterprise relational database management system with comprehensive SQL features, high availability options, and scalability for large-scale data operations.

## Supported Connection Methods

Available methods for connections to the target system from Lumi AI:

* [x] **Direct**

  *The default / typical connection option. Interfaces directly with the target system over the Internet with no mediation. Suitable for most cloud-hosted scenarios or public-facing resources. See* [*Network Configuration*](/using-lumi/network-configuration) *for more details.*
* [x] **Gateway**\
  *An alternative connection method leveraging a Lumi AI Data Gateway. This uses Lumi AI's purpose-built connection agent to mediate communications. Ideal for restricting access to systems within a protected network. For more information, see* [*Data Gateway*](/product-features/data-gateway)*.*

## Supported Limits

The following are limits that can be configured for the system to moderate access and usage from users in Lumi AI:

* [x] **Cost Limit**\
  *Before running a query, if the system supports it, the system-specific compute cost (or surrogate) estimate will be processed and compared to an organization-level/admin-set cost limit for systems of this type (if configured/set). If exceeded, the query will not run (and either the workflow will attempt an optimization or the user will be notified).*
* [ ] **Duration Limit**\
  *An alternative to cost, queries will be stopped the system supports a duration/timeout limit and one is set/configured at the organization level (across systems).*

## Available Parameters

These properties are the essential source system connection properties that all queries are directed towards.

*\* Required parameters*

{% hint style="info" %}
Note: The Gateway parameter is common to all systems (when supported) and is only available when gateway is the selected connection method.
{% endhint %}

<details>

<summary>Host*</summary>

Domain or IP of the database to allow a connection to Lumi AI.

:thumbsup: **Valid Examples**

* Domain name: *docs.lumi-ai.com*
* IPv4: *55.88.92.101*

:thumbsdown: **Invalid Examples**

* IPv4 with alphanumeric characters: *123.abc.def.456*
* Incomplete domain name resolutions: *lumi-ai.com*

</details>

<details>

<summary>Port*</summary>

Access port to allow for connections to the database.

:thumbsup: **Valid Examples**

* Default PostgreSQL port: *5432*

:thumbsdown: **Invalid Examples**

* Known Port Numbers (0-1023): *80*

</details>

<details>

<summary>Username*</summary>

Username of the generated database user which will be used for interactions and transactions.

**Special Considerations**

* If double quotes are used, then the name will be case sensitive

:thumbsup: **Valid Examples**

* Uses alphanumeric characters : *lumi1*
* Utilizing underscore (\_) in place of spaces: *user\_number*

:thumbsdown: **Invalid Examples**

* Starting with a number: *1lumi*
* Utilizing spaces: *user name*
* Using invalid characters: *user#1*

</details>

<details>

<summary>Password*</summary>

Password of the generated database user which will be used for interactions and transactions.

</details>

<details>

<summary>SID</summary>

System Identifier, most applicable to older systems.

**Special Considerations**

* Either SID or Service Name must be provided.

</details>

<details>

<summary><strong>Service Name</strong></summary>

Standard identifier in modern Oracle systems.

**Special Considerations**

* Either SID or Service Name must be provided.

</details>

## System Permissions & Configuration

The provided Oracle user account should have sufficient privileges to execute queries and retrieve data:

1. **CREATE SESSION** (or equivalent “connect” privilege in newer Oracle versions).\
   Allows the user to log in to Oracle.
2. **SELECT** privileges on the required schema(s) and table(s).
   * If needed, ensure the user has permission on the specific columns.
3. **Resource/Role Configurations** (Optional/As needed).
   * Depending on your use case, you might need privileges beyond just SELECT (e.g., CREATE TABLE, etc.).
   * Make sure any relevant roles (e.g., RESOURCE, CONNECT) are assigned.
4. **Network Access**
   * Ensure the Oracle listener and any firewall settings allow connections from the Lumi AI environment (direct) or from the Lumi AI Gateway agent (gateway method).

## Special Considerations

* **Case Sensitivity & Quoted Identifiers**\
  By default, Oracle stores object names in uppercase unless quoted. If you rely on specific case or special characters in table/column names, enclose them in double quotes (e.g., `"MyTable"`). However, mixing unquoted and quoted identifiers can lead to confusion, so a consistent naming convention is recommended.
* **TNS Names & Connection Strings**\
  In many environments, connections rely on TNS names. Ensure the TNS configuration on your server (and in any gateway environment) is correct if using TNS-based connections.
* **Character Sets**\
  Oracle supports various character sets. If you require specific encodings, ensure both Oracle and Lumi AI are configured to handle them properly (e.g., UTF-8).

## Common Issues

* **Firewall or Listener Restrictions**
  * Make sure port 1521 (or your chosen Oracle listener port) is open for inbound/outbound connections if using the *Direct* method.
  * If using *Gateway*, ensure the Lumi AI Data Gateway has network access to the Oracle instance.
* **Invalid Credentials or Insufficient Privileges**
  * Confirm the user has the **CREATE SESSION** privilege and the necessary **SELECT** privileges on target schemas/tables.
* **Service Name vs. SID Confusion**
  * Some configurations require the SID, others the Service Name. Using the wrong one can lead to authentication failures or “Database not found” errors.
* **TNS Configuration**
  * If TNS entries are misconfigured or missing, the connection may fail with “ORA-12154: TNS: could not resolve...” or similar errors.
* **Case-Sensitive Identifiers**
  * Queries can fail if table or column names are incorrectly cased or unquoted/quoted inconsistently.


# AWS Athena

Amazon’s serverless, interactive query service that lets you analyze data directly in Amazon S3 using standard SQL.

## Supported Connection Methods

Available methods for connections to the target system from Lumi AI:

* [x] **Direct**

  *The default / typical connection option. Interfaces directly with the target system over the Internet with no mediation. Suitable for most cloud-hosted scenarios or public-facing resources. See* [*Network Configuration*](/using-lumi/network-configuration) *for more details.*
* [ ] **Gateway**\
  *An alternative connection method leveraging a Lumi AI Data Gateway. This uses Lumi AI's purpose-built connection agent to mediate communications. Ideal for restricting access to systems within a protected network. For more information, see* [*Data Gateway*](/product-features/data-gateway)*.*

## Supported Limits

The following are limits that can be configured for the system to moderate access and usage from users in Lumi AI:

* [ ] **Cost Limit**\
  *Before running a query, if the system supports it, the system-specific compute cost (or surrogate) estimate will be processed and compared to an organization-level/admin-set cost limit for systems of this type (if configured/set). If exceeded, the query will not run (and either the workflow will attempt an optimization or the user will be notified).*
* [ ] **Duration Limit**\
  *An alternative to cost, queries will be stopped the system supports a duration/timeout limit and one is set/configured at the organization level (across systems).*

## Available Parameters

These properties are the essential source system connection properties that all queries are directed towards.

*\* Required parameters*

{% hint style="info" %}
Note: The Gateway parameter is common to all systems (when supported) and is only available when gateway is the selected connection method.
{% endhint %}

<details>

<summary>AWS Role ARN*</summary>

The ARN (Amazon Resource Name) of the IAM role that will be assumed by Lumi to run queries against Athena.

👍 **Valid Examples**

* `arn:aws:iam::123456789012:role/lumi-athena-query-runner`

:thumbsdown: **Invalid Examples**

* `123456789012:role/lumi-athena-query-runner`
* `lumi-athena-query-runner`

</details>

<details>

<summary>AWS Region*</summary>

AWS Region where Athena and S3 staging bucket resides in.

:thumbsup: **Valid Examples**

* `us-east-1`
* `us-west-2`

:thumbsdown: **Invalid Examples**

* `US-East-1`
* `North America`

</details>

<details>

<summary>S3 Staging Directory*</summary>

The S3 URI (bucket + optional prefix) where Athena writes its query results

:thumbsup: **Valid Examples**

* `s3://my-athena-bucket`
* `s3://my-athena-bucket/staging`

:thumbsdown: **Invalid Examples**

* `/s3/my-athena-bucket`
* `my-athena-bucket`

</details>

<details>

<summary>Database*</summary>

The Athena database name.

👍 **Valid Examples**

* `analytics`
* `default`

:thumbsdown: **Invalid Examples**

* `AwsDataCatalog.analytics`
* `analytics.products`

</details>

<details>

<summary>AWS External ID*</summary>

AWS External ID. Can be any arbitrary string that matches `aws-external-id` of the cross-account IAM role (see below).

👍 **Valid Examples**

* `6ee2f609-cb2c-4d66-b39b-a3a13985b622`

:thumbsdown: **Invalid Examples**

* Empty string

</details>

## System Permissions & Configuration

You will need to create cross-account IAM role whose trust policy allows Lumi's AWS account to run queries against Athena.

### Create IAM policy with access to your Athena instance

1. Navigate to IAM -> Policies -> Create policy.
2. Select the JSON option and paste the following snippet, replacing `<your-data-bucket>` with `<your-athena-staging-bucket>` with the name of your S3 Athena data bucket and S3 your staging (query results) bucket, respectively.\
   \
   /

```
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "AllowAthenaAccess",
      "Effect": "Allow",
      "Action": [
        "athena:StartQueryExecution",
        "athena:GetQueryExecution",
        "athena:GetQueryResults",
        "athena:ListQueryExecutions",
        "athena:ListDatabases",
        "athena:ListTableMetadata",
        "athena:GetTableMetadata"
      ],
      "Resource": "*"
    },
    {
      "Sid": "AllowGlueAccess",
      "Effect": "Allow",
      "Action": [
        "glue:GetDatabases",
        "glue:GetDatabase",
        "glue:GetTables",
        "glue:GetTable"
      ],
      "Resource": "*"
   },
    {
      "Sid": "AllowDataBucketReadAccess",
      "Effect": "Allow",
      "Action": [
        "s3:ListBucket",
        "s3:GetObject"
      ],
      "Resource": [
        "arn:aws:s3:::<your-data-bucket>",
        "arn:aws:s3:::<your-data-bucket>/*"
      ]
    },
    {
      "Sid": "AllowStagingBucketReadWriteAccess",
      "Effect": "Allow",
      "Action": [
        "s3:GetBucketLocation",
        "s3:ListBucket",
        "s3:GetObject",
        "s3:PutObject"
      ],
      "Resource": [
        "arn:aws:s3:::<your-athena-staging-bucket>",
        "arn:aws:s3:::<your-athena-staging-bucket>/*"
      ]
    }
  ]
}

```

3. Click Next.
4. Name the policy **AthenaQueryPermissions** and click Create Policy.

### Create a Cross-Account IAM Role with the above IAM policy

1. Navigate to IAM → Roles → Create role.
2. Select Custom trust policy option and paste the following snippet, replacing `<lumi-account-id>` with Lumi's Account ID (provided during onboarding) and `<aws-external-id>` with AWS external ID (can be any arbitrary string)

```
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::<lumi-account-id>:root"
      },
      "Action": "sts:AssumeRole",
      "Condition": {
        "StringEquals": {
          "sts:ExternalId": "<aws-external-id>"
        }
      }
    },
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::<lumi-account-id>:root"
      },
      "Action": "sts:TagSession"
    }
  ]
}
```

3. Click Next.
4. In the Permissions policies, search for **AthenaQueryPermissions** and select it.
5. Click Next.
6. Name the role **LumiAI**-**athena-query-runner** and click Create Role.


# RedShift

A fully managed cloud data warehouse that allows organizations to store and analyze large volumes of structured data

## Supported Connection Methods

* [x] **Direct**

*The default / typical connection option. Interfaces directly with the target system over the Internet with no mediation. Suitable for most cloud-hosted scenarios or public-facing resources. See* [*Network Configuration*](/using-lumi/network-configuration) *for more details.*

## Supported Limits

* [x] **Duration Limit**

*An alternative to cost, queries will be stopped the system supports a duration/timeout limit and one is set/configured at the organization level (across systems).*

## **Available Parameters**

These properties are the essential source system connection properties that all queries are directed towards.

These properties are the essential source system connection properties that all queries are directed towards.

*\* Required parameters*

<details>

<summary>Host*</summary>

Domain or IP of the database to allow a connection to Lumi AI.

:thumbsup: **Valid Examples**

* Domain name: *docs.lumi-ai.com*
* IPv4: *55.88.92.101*

:thumbsdown: **Invalid Examples**

* IPv4 with alphanumeric characters: *123.abc.def.456*
* Incomplete domain name resolutions: *lumi-ai.com*

</details>

<details>

<summary>Port*</summary>

Access port to allow for connections to the database.

:thumbsup: **Valid Examples**

* Default PostgreSQL port: *5432*

:thumbsdown: **Invalid Examples**

* Known Port Numbers (0-1023): *80*

</details>

<details>

<summary>Username*</summary>

Username of the generated database user which will be used for interactions and transactions.

**Special Considerations**

* If double quotes are used, then the name will be case sensitive

:thumbsup: **Valid Examples**

* Uses alphanumeric characters : *lumi1*
* Utilizing underscore (\_) in place of spaces: *user\_number*

:thumbsdown: **Invalid Examples**

* Starting with a number: *1lumi*
* Utilizing spaces: *user name*
* Using invalid characters: *user#1*

</details>

<details>

<summary>Password*</summary>

Password of the generated database user which will be used for interactions and transactions.

</details>

<details>

<summary>Database*</summary>

Literal database name that will be used for transactions within the agents.

**Special Considerations**

* If case sensitivity is required, utilize double quotes for database name; ex. "New\_database"

:thumbsup: **Valid Examples**

* Uses alphanumeric characters: *lumi1*
* Utilizing underscore (\_) in place of spaces: *new\_database*

:thumbsdown: **Invalid Examples**

* Starting with a number: *1lumi*
* Utilizing spaces: *user name*
* Using reserved words unquoted: *select*

</details>

## **System Permissions & Configuration**

Provided user must have the following:

* [x] ROLE with LOGIN privileges
* [x] PRIVILEGE to CONNECT on database
* [x] PRIVILEGE to USAGE on schema

\**Note — To ensure ever*y *schema can be accessed, please run the following code command:*

```
GRANT USAGE ON SCHEMA <schema> TO <user>;
```

* [x] SELECT PRIVILEGE in table(s)

\**Note — To ensure ever*y *table can be accessed, please run the following code command:*

```
GRANT USAGE ON SCHEMA <schema>.<table> TO <user>;
```

* [x] (if applicable) SELECT PRIVILEGE on table(s) for column(s)

For configurations:

* [x] Ensure the server is allowing connections from the Lumi gateway or server

## Special Considerations

* Special characters and case sensitivity can be utilized in database names and usernames via encasing the name in double quotes (" "), but is not recommended

## Common Issue

* Ensure the firewall settings allow for a connection to a database


# Secondary Interfaces

Beyond the primary Lumi AI web application at app.lumi-ai.com, you can have conversations with Lumi AI in Slack or Microsoft Teams as alternative interfaces.

These options are available if you want to build-in/use Lumi AI directly in your shared conversations, meetings, etc. with the tools you already use today.

{% hint style="info" %}
Note that both "bots" are available today for respective systems as unofficial extensions to the systems. Look forward to seeing them on the marketplaces/stores in the near future!
{% endhint %}

## Considerations

Keep the following in mind for both Slack and Microsoft Teams:

* You can invite the Lumi AI bot to any conversation or thread, or message it directly.
* There is limited chat functionality in the bot; for more depth/exploration of the processing of the request, it must be asked in the web app instead.
* When inviting the bot to a group setting, the access-level of the user asking the question to Lumi (by tagging @lumi...) is used to discern restrictions/access to KB's and data. Thus, be cognizant of who is in the chat and if there are any unintended audiences.
* For both cases, you must have an organization admin trigger the setup / enable the install and access by other users.
* You can only be connected to one Knowledge Base at a time in these interfaces. You can change at any time using the options menu provided, but be aware your history may not be relevant (this is automatically accounted for in Lumi Workflows at a technical level).
* You may not be able to see full results given the limitations of these interfaces. For instance, if the rows are wide, there may not be enough characters in the "block" to read it. In this instance, you can download the CSV or image to see the full data set.
* You can unlink

## [Slack](/product-features/secondary-interfaces/slack)

Slack is available as a direct install via our link provided in Org Settings. See the section for more detail.

## [Microsoft Teams](/product-features/secondary-interfaces/microsoft-teams)

Microsoft Teams is also available, but as a custom install via our link and content hosted in Org Settings. See section for more details.


# Slack

The following describes how to get started with Slack. Note that the first step is a prerequisite to be completed by an organization Admin, the remainder is user-specific.

## Step 1: Admin Enablement

The broader instructions to enable Slack for the organization are available for (and must be executed by) Admins in [Org Settings > Tool Integrations](/product-features/organization-settings/tool-integrations).

Follow-up with an Admin if not enabled.

<figure><img src="/files/NaiwzgfGTqhxKYbB4uq9" alt=""><figcaption></figcaption></figure>

## Step 2: Add the Bot for Yourself

Start by searching for the app or tagging it directly in a chat.

<figure><img src="/files/NErdUG23Q6Xrm79cNq13" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
If the slack bot is not installed, the admin needs to follow instructions to add it to slack organization. View [Step 1](#step-1-admin-enablement).
{% endhint %}

## Step 3: Start with a message

Say "hello" or any message to start the account linking process with Lumi AI.

<figure><img src="/files/clkJwQUZ8dIW0WOIu2wH" alt=""><figcaption></figcaption></figure>

## Step 4: Link Account

You will be prompted to sync your account. Click and follow actions to complete steps. You may need to log into Lumi AI in the web app if you are not logged in already.

<figure><img src="/files/08GkIv9NYBrao4ycmHuc" alt=""><figcaption></figcaption></figure>

You will get a verification screen to confirm you are linking the right organization.

<figure><img src="/files/Zgi6o1hllt5pDiDlR6W0" alt=""><figcaption></figcaption></figure>

## Step 5: Select a Knowledge Base

Your conversation will be associated with a Knowledge Base defined in the web app that you as a linked-user have access to. If you have access to none, please use the web app / follow-up with your team to create one or be provided access.

<figure><img src="/files/gGMzb4BYoDvHxFDHlqqM" alt=""><figcaption></figcaption></figure>

## Step 6: Ask your question

You can now interface with Lumi AI as you would in the web app chat. Note the limitations in previously described [here](/product-features/secondary-interfaces).

<figure><img src="/files/KBMdYik7DoSluOhsresZ" alt=""><figcaption></figcaption></figure>


# Microsoft Teams

The following describes how to get started with Microsoft Teams. Note that the first step is a prerequisite to be completed by an organization Admin, the remainder is user-specific.

## Step 1: Admin Enablement

The broader instructions to enable Microsoft Teams for the organization are available for (and must be executed by) Admins in [Org Settings > Tool Integrations](/product-features/organization-settings/tool-integrations).

Follow-up with an Admin if not enabled.

<figure><img src="/files/2BG810173mX7sarLAxWt" alt=""><figcaption></figcaption></figure>

## Step 2: Add the Bot for Yourself

Start by searching for the app or tagging it directly in a chat.

<figure><img src="/files/Wj7XvqI7m8riDDvPOrCc" alt=""><figcaption></figcaption></figure>

If not available, and the admin has added the bot (see [Step 1](#step-1-admin-enablement)), you may need to add the Lumi apps on MS Teams workspace.

<figure><img src="/files/8g44iV6ZpBKgsUlZTgTk" alt=""><figcaption></figcaption></figure>

## Step 3: Start with a message

Say "hello" or any message to start the account linking process with Lumi AI.

<figure><img src="/files/v5Pru0uiYKNEGIVAYlhV" alt=""><figcaption></figcaption></figure>

## Step 4: Link Account

You will be prompted to sync your account. Click and follow actions to complete steps. You may need to log into Lumi AI in the web app if you are not logged in already.

<figure><img src="/files/zibSibzJqprm9hBhqRD9" alt=""><figcaption></figcaption></figure>

You will get a verification screen to confirm you are linking the right organization.

<figure><img src="/files/vex9OmEGf5MXI4v3VcNC" alt=""><figcaption></figcaption></figure>

## Step 5: Select a Knowledge Base and Chat

Your conversation will be associated with a Knowledge Base defined in the web app that you as a linked-user have access to. If you have access to none, please use the web app / follow-up with your team to create one or be provided access.

You can now interface with Lumi AI as you would in the web app chat. Note the limitations in previously described [here](/product-features/secondary-interfaces).

<figure><img src="/files/pK5Qrj6W3i0k8lNf5zx8" alt=""><figcaption></figcaption></figure>


# Single Sign-On (SSO)

Lumi AI supports "single sign-on", allowing your organization to federate authentication for access to the platform. This avoids separate credentials and allows restricted access to your organization's workspace on the platform through a separate login portal.

## Support Platforms

Lumi AI SSO integration works for the following:

* Google Workspace
* OKTA
* Azure Entra ID
* Microsoft AD FS

Others may be available on request.

## Enabling SSO

Single Sign-On is configurable for Enterprise tier only, and requires contacting our support or sales staff to enable. Provisioning is offered with SAML 2.0.

Required:

* An Enterprise license with Lumi AI
* A supported IdP (see above)
* IdP management access (typically via your IT team support)

To begin enablement, please contact <support@lumi-ai.com> or <sales@lumi-ai.com> to coordinate scheduling a meeting with your IT team.

Once enabled, the account will only be accessible through a dedicated login portal (a custom subdomain for your organization under Lumi AI).

## Limitations

SSO still requires user management within Lumi AI (i.e., users are invited and kicked from the platform itself, and sign-in through an SSO portal if it has been enabled for the organization).

There is no SCIM integration for role or other detailed access rights passthrough.


# Release Notes

We regularly update to deliver performance improvements, new features, and critical fixes.

## June 1, 2026

#### **🚀 New Features & Improvements**

**Automated Payments**

Lumi AI now integrates with Stripe to offer full self-service subscription management — organizations can upgrade, downgrade, pause, or resume their plan and manage payment details directly from within the app.

**Knowledge Base (KB)**

* Non-admin users who create a Knowledge Base are now automatically added as Contributors, so they always retain access to KBs they set up.

**Notifications**

* Board alert notifications now include the alert condition text, giving you more context at a glance before clicking through.
* Clicking a board alert notification now takes you directly to the relevant board card.

**General**

* Lumi now shows a notice when query results have been truncated due to row limits, so you always know when you're seeing a partial view of your data.

#### 🐞 Bug Fixes

**Chat**

* Fixed a regression where live Chat responses were not streaming in real time.

**Boards & Visualizations**

* Fixed an issue where resizing a board card near the bottom of the viewport would stop responding.

**Knowledge Base (KB)**

* Fixed an issue where the table preview pane would jump to the top when switching between tables in edit mode.
* Fixed a bug where deleting KB content could leave stale entries visible.

**General**

* Various reliability and stability improvements across the app.

## May 1, 2026

#### 🚀 New Features & Improvements

**(NEW) Tour Guide**

* A new in-app guided experience helps new users get oriented quickly. Step-by-step tours are now available for Chat, Boards, Query Builder, Knowledge Bases, and Human Verification.

**Chat**

* Credit usage is now visible in the chat header, giving users a clearer picture of their activity at a glance.

**Knowledge Base (KB)**

* Connections no longer re-run validation on save when no fields have changed, making the save flow faster and less disruptive.
* The KB overview description limit has been raised from 250 to 350 characters, giving teams more room to document their data.
* Table layout improvements include better scrollbar positioning and aligned field drag handles.

**Boards & Visualizations**

* Board card drill-down now displays a proper summarized prompt instead of raw SQL.

**Notifications**

* Notification toast containers have been updated to prevent clipping and layout inconsistencies.

**Admin / Settings**

* Organizations approaching an account lockout due to payment issues will now receive automated reminder emails at 30, 21, 14, and 7 days in advance.
* Lockout pages have been redesigned with clearer messaging and a more helpful experience.
* Org admins now receive email notifications when their team approaches workflow credit usage thresholds.

**General**

* An error notification is now shown when a file upload fails, so users are immediately informed rather than left waiting.

### 🐞 Bug Fixes

**Chat**

* Fixed the group selector on the Chat getting started page not responding correctly.

**Query Builder**

* Fixed a multi-join issue that could cause queries to fail unexpectedly.

**Boards & Visualizations**

* Fixed long category names in pie and donut chart legends not truncating correctly.
* Fixed a crash when pie and donut charts used series IDs containing special characters.
* Fixed pie chart legend clipping in card detail views.

**Knowledge Base (KB)**

* Fixed the Test Connection button for existing connections when no fields had been changed.
* Resolved an issue where unsaved-changes prompts appeared incorrectly during data load.

**Notifications**

* Resolved a stuck spinner for toast notifications tied to expired background tasks.

**General**

* Various reliability and stability improvements across the app.

## April 1, 2026

#### 🚀 New Features & Improvements

**App**

* **Magic Wand:** When setting up and configuring a Knowledge Base, Lumi AI can now automatically suggest field types and descriptions based on your data. This makes getting a Knowledge Base ready faster, and reduces the manual effort of configuring each field.

<figure><img src="/files/Qhy5zj6Ai05MxNstox17" alt=""><figcaption></figcaption></figure>

* **Auto Org Switching:** Users with access to multiple organizations are now automatically directed to the right organization context, removing the need to manually switch.

**Chat**

* Chat Filters are now applied and visible right away when starting a new message, making it easier to scope your analysis from the start.
* A support nudge prompt now appears during a chat session to help users get assistance when they need it.
* General improvements to the chat input experience including cleaner status indicators when Lumi is working on a response.

**Query Builder**

* **Add to Query Builder:** You can now send a query directly from a Chat response into the Query Builder with a single click, making it easy to move from exploration to deeper analysis.

<figure><img src="/files/HwPk2u83Q02EzwFo2QBm" alt=""><figcaption></figcaption></figure>

* Queries can now be deleted from the Query Builder sidebar, with a confirmation step to prevent accidental removals.
* New queries now open with a default title of "New Query" to keep the sidebar organized.
* The query timer has been moved to a more prominent position outside of the visualization area for better visibility.

**Boards & Visualizations**

* Tables on Boards now support downloading data as a CSV or Excel file directly from the view.
* Visual polish improvements including fixes to pie chart legend display in card detail views.

**Knowledge Base (KB)**

* Table columns in the Knowledge Base are now resizable, making it easier to browse tables with long field names or values.
* KB locks are now tied to active sessions, so locks are automatically released if a user navigates away or closes their browser, preventing tables from getting stuck in a locked state.

**Notifications**

* A new weekly round-up email gives users a regular summary of activity, keeping teams informed without needing to log in.
* Email summary frequency can now be configured in user settings.
* Notification toasts now navigate to the relevant destination when clicked.

**Integrations**

* Azure Synapse Analytics is now a supported data source connection, expanding the range of warehouses teams can connect to Lumi AI.
* Azure SQL Database and Microsoft Fabric connections are now supported via Entra ID authentication, with options for both user and service principal auth modes.

### 🐞 Bug Fixes

**Chat**

* Resolved cases where question block icons were not reflecting the correct loading or cancelled state.

**Query Builder**

* Fixed an issue where iteration links were not rendering correctly for the first iteration in a session.
* Resolved a timezone handling issue that could affect query results.

**Knowledge Base (KB)**

* Resolved a scrolling issue with the context table footer.

**Boards & Visualizations**

* Fixed a pie chart legend clipping issue in the card detail view.

**General**

* Various improvements to reliability, performance, and UI consistency across the app.

### March 1, 2026

#### 🚀 New Features & Improvements

**Chat**

* The Chat getting started page now surfaces your recently used Knowledge Bases, making it faster to pick up where you left off.
* The prompt helper button is now visible on the Chat getting started page once a group is selected, giving users quicker access to suggested prompts.
* Users can now navigate directly to the full chat thread from within the verification section for better context when reviewing responses.

**Query Builder**

Query Builder is Lumi AI's dedicated SQL development environment, with Lumi AI acting as a context-aware Copilot alongside it. It's designed for analysts who want direct, code-first control over their queries while still benefiting from AI assistance grounded in their organization's Knowledge Base.

<figure><img src="/files/2pFFbJrsqTTDzQ8ZPA1P" alt=""><figcaption></figcaption></figure>

The key capabilities are:

* Dedicated SQL editor for writing, testing, and iterating on queries with full control over joins, filters, and calculations
* Contextual AI Copilot that understands your schema and business context to help generate or improve queries
* One-click debugging that automatically diagnoses and resolves SQL errors
* Tracked iterations so every query version is saved and can be revisited or rerun
* Publishing to Boards to share validated insights across teams

**Boards & Visualizations**

* An export button is now available when a visualization component is in edit mode, making it easier to share your work.
* Editing the visualization mode inside a card modal is now restricted to the board creator, preventing unintended changes by other users.

**Knowledge Base (KB)**

* The KB connection tab now correctly shows the deployable demo option where applicable..
* The Users tab now separate admins from standard users and contributors, matching the layout in Admin Management. Empty-state helper text has also been added.

**Admin / Settings**

* The usage visualization now displays the complete set of days for the current month, even when usage data is empty for some days, giving a clearer picture of activity over time.

#### 🐞 Bug Fixes

**Chat**

* Fixed a text formatting issue on the Knowledge Base welcome page.
* Fixed an issue where thread creator information was missing from thread list responses.

**Query Builder**

* Fixed saving issue for visualization edits made to visualizations in the Query Builder are now persisted, so your customizations carry over between sessions.
* Fixed a timezone handling issue in the Query Builder.
* Fixed a metadata mapping issue affecting field types.

## February 1, 2025

### 🚀 New features & improvements

#### App

* **Chat file upload**
  * This latest feature is designed to help teams extract insights across both structured databases and unstructured files in a single workflow.
  * Lumi can analyze PDFs, CSVs, and spreadsheets alongside your existing warehouse data, enabling questions and insights that span multiple sources without additional ingestion or setup. [Learn More](https://www.lumi-ai.com/post/chat-file-upload)

<figure><img src="/files/MBbLsdnvlkmUfZ7cj5FK" alt=""><figcaption></figcaption></figure>

* **Chat filters**
  * Chat Filters give teams precise control over how analyses are scoped within a single conversation.
  * With Chat Filters, you can select fields from your knowledge base, apply specific values, and have those constraints injected directly into the SQL Lumi generates. Filters apply only to the active conversation, allowing you to refine and rerun analyses without changing your data model or creating permanent filters. [Learn More](https://www.lumi-ai.com/post/chat-filters)

<figure><img src="/files/tHJ8MCdIkux544RETvJW" alt=""><figcaption></figcaption></figure>

* **General UI & UX Polish**
  * Improved progress and status updates during longer-running workflows.
  * Enhanced multi-org account management.
  * Better database-specific optimizations for AWS Athena and Redshift.

### 🐞 Bug fixes

* **Boards**
  * Fixed issues with board card placement/auto-placement, including after deletions.
  * Fixed an issue where the boards sub-navigation could fail to appear.
  * Multiple UI polish fixes across boards and visualizations (action buttons, legends/tooltips, styling).
* **Knowledge Base (KB)**
  * Improved KB table UX (layout issues, table preview issues like truncation, and cleanup of duplicate anchors).
* **General UI & UX Polish**
  * Pagination and user detail performance improvements.

## January 1, 2025

### 🚀 New features & improvements

#### App

* **Boards and visualizations**
  * Smoother “save & layout” behavior on boards, including prompts when opening cards while you have unsaved dashboard changes.

<figure><img src="/files/9zR5ACNmIRPqG5KLLsqy" alt=""><figcaption></figcaption></figure>

* Better card creation from visuals, including support for creating board cards directly from KPI-style visuals.
* Improved attribution and clarity, like showing an owner tag on dashboard cards.
* Scheduling UI enhancements (e.g., clearer schedule indicators/tags for boards).
  * More chart rendering and formatting improvements, including:
    * Better handling of negative/zero values (e.g., labels and area charts).
    * Improved KPI formatting and editing, including quicker access to the editor.
    * More consistent data label rendering across chart types.
    * Stronger “field formatting” support so tables and charts stay consistent.
* **Chat**
  * Improved multi-threaded workflows so complex results are easier to read and navigate.

<figure><img src="/files/9qWiEw9MlKBFUdNv2NBm" alt=""><figcaption></figcaption></figure>

* Better chat filters, including more discoverable filter selection and stronger validation of filter values.
* Friendlier chat input UX (tooltips, cleaner controls) plus better scrolling behavior for large nested results.
* Safer file upload experience with client-side file size limiting and general upload reliability improvements.
* **Knowledge Base (KB)**
  * More flexible KB table exploration, including:
    * Refreshing tables outside of edit mode.
    * Sticky headers and resizable layouts for easier browsing.
  * Improved join and field handling, keeping join field order stable and reducing friction when updating relationships/fields.

### 🐞 Bug fixes

* **Chat**
  * Fixed issues with chat filters (menu behavior, expand/collapse polish, and general reliability).
  * Addressed cases where chat blocks could duplicate or display inconsistently.
  * Fixed cases where key chat input actions (like cancel) wouldn’t appear properly.
  * Fixed chart label issues (including pie labels and negative-value label placement).
  * Fixed formatting edge cases (including decimals and KPI display/truncation).
  * Reduced cases where visualizations could appear empty or fail to update correctly.
* **Boards**
  * Fixed table vs. chart rendering mismatches inside card details.
  * Fixed dashboard position saving issues.
  * Fixed cases where returning to a board could incorrectly reopen a previously viewed card.
* **Workflows**
  * Improved handling of missing/optional metadata fields to avoid unexpected errors.

## December 1, 2025

### 🚀 New Features & Improvements

#### App

* **Dashboards and visualizations**
  * We’re excited to introduce a major upgrade to Lumi visual&#x73;**:** a fully enhanced graphing experience built to make working with data more intuitive and powerful.
  * With this release, you can now create, customize, and share visuals directly within Lumi, all with greater ease and flexibility.
  * Behind the scenes, Lumi automatically interprets your data and transforms it into compelling charts and graphs.
  * This update is all about giving you more control, clarity, and creativity when visualizing your data.

<figure><img src="/files/ezBWjDXUvux5ihlubosK" alt=""><figcaption></figcaption></figure>

* **Multi-threading**
  * A new toggle in the chat input lets you enable multi-threading so Lumi can automatically run follow‑up steps and deeper analysis. This toggle is now on by default.

<figure><img src="/files/PhgEHJR6kxw68GG1HSE9" alt=""><figcaption></figcaption></figure>

* **Chat**
  * **Stay productive while Lumi is “thinking”**\
    Chat input controls are no longer disabled during long‑running workflows, so you can type your next question while Lumi finishes the current one.
  * **Smarter, clearer responses under the hood**\
    We’ve improved how Lumi plans questions, runs parallel clarifying questions, summarizes empty results, and feeds executed queries into the summarization logic- leading to more consistent, explainable answers.
* **Knowledge Base (KB)**
  * **More reliable previews & save flows**\
    Undefined values, empty table details, and fields without metadata are now handled gracefully in table preview and save flows.
  * **Safer schema editing**\
    When a table field is deleted, any associated filters are automatically cleaned up to prevent broken configurations.
  * **Clearer field typing**\
    The table section now shows canonical field types with a tooltip that reveals the raw underlying type, improving trust in how Lumi understands your schema.
  * **Easier navigation**\
    KB anchor tabs have been moved into the main body of the page
* **Workflow System**
  * **Smarter summaries & more predictable multi‑step workflows**
    * Lumi now handles empty datasets more gracefully, improving the clarity of summaries when data is sparse or missing.
    * Iteration logic and edge cases in workflows have been refined, so multi‑step analyses behave more consistently.
* **General UI & UX Polish**
  * **Visual consistency**\
    Color usage has been standardized across the app, and hover states have been refined for smoother visual feedback.
  * **Better navigation & search**\
    Sub‑navigation search behavior has been improved, and various layout tweaks make it easier to find what you need.
  * **Tooltips & layout refinements**\
    Default tooltip behavior for multiline text and max widths has been improved

### 🐞Bug Fixes

* **Chat & Workflows**
  * Adjusted behavior so chat input remains functional during workflows but is appropriately hidden in shared, view‑only chats.
* **Knowledge Base (KB)**
  * Fixed errors caused by undefined values and metametric fields lacking metadata in table previews.
  * Resolved issues with invalid filters, empty table details, and incorrect tab context being passed during preview refresh or save flows.
  * Ensured KB locks are released when leaving, preventing “stuck” states.

## November 1, 2025

### 🚀 New Features & Improvements

#### App

* **Metametrics**

  * Data exploration tool that provides an immediate overview of every data table you connect, summarizing key metrics such as number of records, number of distinct values, minimum and maximum values, and percentage of nulls

  <figure><img src="/files/H42kgM0cKih5A60ozjVe" alt=""><figcaption></figcaption></figure>
* **Workflow System**
  * Reattempt logic added to workflows using updated model versions.
  * New error recovery and error diagnostics added to workflows for improved performance.
* **Chat**
  * Chat now renders multi-decimal values with scientific notation and interprets percentages accurately.
  * Chat history explicitly sorted
* **Knowledge Base (KB)**
  * Empty states improved for memories and context.
  * Refresh button added to retrigger table previews and metametrics.
  * Source names are now used as default for new tables.

### 🐞Bug Fixes

* Fixed prompt rephrasing and agent selection failures.
* Corrected string search behavior in array-type fields.
* Fixed tooltip and alignment bugs in chat and visualizations.
* Prevented infinite loops during table previews.
* Fixed sorting logic in visualization cards.

## October 1, 2025

### 🚀 New Features & Improvements

#### App

* **Workflow System**
  * Chat 2.0 rollout with improved workflows.
  * Improved parsing and error handling for LLM outputs.
  * Reattempt logic added for invalid LLM responses.
  * Improved context handling for agents and tools.
  * Updated toggle for "Concise Mode".
* **Knowledge Base (KB)**
  * Improved text and alignment in filter interfaces.
  * Amazon Redshift is now a supported connection system.
* **Human Verification**
  * Rich text editor added for human verification notes.

<figure><img src="/files/y9qOemEzdDNoaOGqgtX8" alt=""><figcaption></figcaption></figure>

### 🐞Bug Fixes

* Added LLM timeout to prevent stalled executions.
* Fixed board deletion failures and frontend blocking issues due to incorrect message structures.
* Addressed workflow failures caused by chat interruptions and improper prompt rephrasing.
* Corrected string search errors and attribute issues in workflows.
* Fixed recursive workflows and null values in knowledge base overview imports.
* Fixed UI alignment in chat.

## September 1, 2025

### 🛠️ In Progress

* **Chat v2:** New block interface for seeing all steps of Lumi AI workflows.
* **Boards v2:** Refreshed visualizations and revamped card and board UIs to accommodate upcoming features
* **Metametrics:** Provides additional metadata around connected tables and fields that Lumi is connected to.
* **KB Custom Filters:** Allows users to define custom filteres of tables and views from source data Lumi is connected to.

### 🚀 New Features & Improvements

#### App:

* **Boards**:
  * Added new sorting agent to help determine out of the box sorting on insights.
  * Added drill down functionality and card sharing modal
* **Chat**:
  * Improved tab layout in business context blocks
* **UI/UX & General**:
  * Added shadows to navbar items
  * Updated chart theme colors and aggregation labels

### 🐞 Bug Fixes

* **KB Locks**:
  * Fixed race conditions and improved lock propagation
* **Boards**:
  * Resolved dropdown, popover, and layout issues
* **Workflows**:
  * Fixed workflow reattempt logic in shadow mode
* **Chat**:
  * Resolved missing prompt bug

## August 1, 2025

### 🚀 New Features & Improvements

#### App:

* **Knowledge Base Locks**
  * Implemented KB locks and session tracking to prevent multiple users editing a knowledge base at the same time.

<figure><img src="/files/3IYayglMMnNg1dQOQxqL" alt=""><figcaption></figcaption></figure>

* **Human Verification Request**
  * Implemented human verification requests so that users can get admin verification of Lumi responses.

<figure><img src="/files/1pkagy3LmYLN9k13zhib" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/TIpZCHkXVCSiT1UMEEB7" alt=""><figcaption></figcaption></figure>

* **Admin Enterprise Resource Usage Dashboard**
  * Included enterprise resources usage page as well as inactive/internal user filters.

<figure><img src="/files/dTJs3hrDvMmnXAIbYUX1" alt=""><figcaption></figcaption></figure>

### 🐞 Bug Fixes

#### App:

* Enhanced handling of dropdown and chart toolbar styling.
* Improved icon placement and empty state visuals.
* Introduced max-width constraint and concise mode enhancements for better readability.
* Improved curated prompt UI and fixed scrollbar alignment.
* Better handling of board errors with missing fields
* Better state handling when switching organizations
* KB dropdown sizing for long table names

**Workflows**:

* Various improvements to LLM workflows and SQL generation

## July 1st 2025

### 🚀 New Features & Improvements

#### App:

* **Chat**:
  * Standardized code viewer design across chat versions and boards.
  * Improved styling and behavior for prompt helper.
* **Integrations**:
  * Added Athena as a KB connection for possible data source system.

<figure><img src="/files/ok9zgXuhtJ39FvSj5xcy" alt=""><figcaption></figcaption></figure>

### 🐞 Bug Fixes

#### App:

* Fixed scrolling and z-index issues affecting UI components.
* Fixed Knowledge Base connection validation when testing connection.
* Fixed formatting menu display issues in chat data tables.

**Workflows**:

* Various workflows bug fixes and performance improvements.
  * Including upgrades to the following agents.
    * ChatStartersGeneratorAgent
    * ChatStartAgent
    * BoardInsightAgent
    * ContextAgent
    * DataFormattingAgent
    * QueryDiagnosticsAgent
    * GroupSummaryAgent

### 🛑 Deprecations

* None

## June 1, 2025

### 🚀 New Features & Improvements

#### App:

* System status is now available directly from within the app, letting users know if there are any conditions affecting the service

<figure><img src="/files/cW2YI9MtPuVWEBtCg87q" alt=""><figcaption></figcaption></figure>

* Subnav menus now support hover activation and pinning.

<figure><img src="/files/SxXBFnKTUEmOr3SaJvQ7" alt=""><figcaption></figcaption></figure>

#### **Knowledge Base (KB)**

* **Explicit and implicit joins are now visually differentiated.**

<figure><img src="/files/C6l2j1pDEZFYEIumFp5z" alt=""><figcaption></figcaption></figure>

* Implemented a knowledge base editing lock to ensure only one user can make changes at a time, preventing overwrites.

<figure><img src="/files/sXFPRyDS47ov2c5bQORv" alt=""><figcaption></figcaption></figure>

* KB header now includes both date and time.

#### **Chat**

* Displayed null values clearly in chat data tables.
* Enhanced sorting for cards and decimal number columns.
* Scroll handling improved for large previews.

### 🐞 Bug Fixes

* **Chat**:
  * Resolved sorting issues in chat and board components.
  * Fixed display inconsistencies with null values and playbook popovers.
* **Knowledge Base**:
  * Addressed lingering KB creation bugs.

### 🛑 Deprecations

* None

## May 1, 2025

### 🚀 New Features & Improvements

#### **Knowledge Base (KB)**

* Enhanced Knowledge Base creation & walkthrough layout with scroll-to-section tabs.
* New "hosted" connection type added in the Knowledge Base Connection tab (selectively enabled, not available to all customers).

<figure><img src="/files/4mCmPb18HhtfHSRxhbnu" alt=""><figcaption></figcaption></figure>

* Helper video link in Knowledge Base tabs for better user guidance.

#### **Chat**

* (Early release) Introduced "string search" a semi-deterministic search of ambiguous terms/identifiers, often used to search/filter specific item, customer, location, brand, etc names. In short, 'string' lookups.
* Upgrades internally to newer OpenAI models in various parts of Chat and other workflows.

#### **Org Management**

* Users can now update duration limits for their organization.

<figure><img src="/files/wDGkVrBqjypYCzRqlU2F" alt=""><figcaption></figcaption></figure>

### 🐞 Bug Fixes

* Fixed issue where the first message in a new chat wouldn't show Lumi workflow process step notification.
* Resolved issue where editing a KB would not trigger a data refetch.
* Fixed re-identification of tables during KB editing.
* Resolved UI bug related to undefined system settings.
* Corrected hosted KB connection status/save issues.
* Role management updated to prevent outlier account lockout scenarios.
* Persisted sorting state for cards graph in KB Boards.

### 🛑 Deprecations

* None

## April 1, 2025

### 🚀 New Features & Improvements<br>

* **Streamlined Chat Experience:** The chat input now supports a more concise mode, making conversations cleaner and more focused.
* **Smarter Knowledge Base Setup:** Improved validation and automatic field metadata updates make connecting your data sources even smoother.
* **Visual Enhancements:**
  * Updated icons and placeholders for empty states in both Chat and the Knowledge Base.
  * Refreshed business context examples in the KB walkthrough for better onboarding.
* **Improved Responsiveness:** Table layouts are now optimized for smaller screens for easier viewing on mobile and tablets.
* **Performance Upgrades:**
  * Enhanced async handling for faster responses in Microsoft Teams.

### 🐞 Bug Fixes

* Fixed issues related to switching organizations and re-enabled related features.
* Resolved a scrolling bug in tables that previously prevented full rows from displaying.
* Fixed saving issues in the Knowledge Base configuration.
* Cleared up metadata error messages and improved how malformed CSVs are handled in chat.

### 🛑 Deprecations

* Removed the prompt helper from the Chat "Getting Started" page to streamline the interface.
* Removed the authentication banner from the login page for a cleaner experience.


