> For the complete documentation index, see [llms.txt](https://docs.mylinkconnect.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.mylinkconnect.com/artificial-intelligence/large-language-models/resources.md).

# Resources

Resources are the external knowledge you attach to your AI model. Every document, web page or Confluence space you add here is fetched, split into smaller pieces and indexed, so your model can ground its answers on your own content instead of relying only on what the language model already knows.

You can add as many resources as you need, mixing uploaded files, public web pages and Confluence pages in the same model. Xenioo takes care of downloading, converting and indexing everything for you, and keeps web-based resources up to date automatically.

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

### Adding a Resource

Click **+ Add Resource** to open the resource dialog. Everything is configured from a single window, organized into three tabs: **Main**, **Chunking Strategy** and **Advanced**.

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

#### Main

**Type**

The **Type** field decides where the content of the resource comes from. The rest of the Main tab changes depending on the type you pick.

* **File** — upload a document from your computer.
* **Public URL** — index a publicly reachable web page, optionally crawling the pages below it.
* **Confluence Page** — index a page (and optionally its sub-pages) from an Atlassian Confluence space.

{% hint style="info" %}
The **Type** cannot be changed once a resource has been created. If you need a different type, delete the resource and add a new one.
{% endhint %}

**File**

Select a document to upload. Xenioo supports text, PDF, Word, Excel, CSV, Markdown and HTML files up to **64 MB**.

Supported extensions: `html`, `pdf`, `docx`, `xlsx`, `csv`, `txt`, `log`, `md`.

The file is uploaded as soon as you select it — a short spinner is shown while the upload completes.

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

**Public URL**

Enter the full address of the page you want to index in the **Public URL** field. A small icon next to the field lets you open the address in a new tab to double-check it.

Use **Crawl depth** to decide how much of the site to index:

| Option               | What gets indexed                                                                          |
| -------------------- | ------------------------------------------------------------------------------------------ |
| **Single Page**      | Only the page at the address you entered.                                                  |
| **1 / 2 / 3 levels** | The page plus every page found below it, following that many path levels on the same site. |

{% hint style="warning" %}
Crawl depth grows quickly. A depth of 3 on a large site can discover hundreds or thousands of pages. Start with a shallow depth and increase it only if needed.

Each sub page indexed count as **one additional action message** toward your account messaging limits.
{% endhint %}

**Confluence Page**

Confluence pages are read through the official Confluence Cloud API, so you need to provide credentials:

* **Base Page URL** — the address of the Confluence page or space to index.
* **Username** — the email address of the Atlassian account used to read the content.
* **API Key** — an Atlassian API token for that account.
* **Index all content sub-pages** — when enabled, Xenioo also indexes every page found underneath the one you provided.

**Visibility**

**Visibility** decides who is allowed to see the content of a resource when the model answers.

* **Everyone** (default) — the resource can be used to answer any conversation.
* **An Audience** — the resource is used only when the current contact matches the selected Audience.

{% hint style="info" %}
Visibility is evaluated at reply time against the conversation's variables. If the contact does not match the audience, the resource is simply left out of the answer — a convenient way to drive access to sensitive content through contact information.
{% endhint %}

#### Chunking Strategy

Before it can be indexed, a document is split into smaller **chunks**. The chunking strategy controls how that split happens.

| Strategy                     | When to use it                                                                                                                                                                                            |
| ---------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Smart** (recommended)      | Xenioo inspects the document size and type and picks the best option automatically. Small documents are kept whole, larger structured files are split by structure, everything else is split recursively. |
| **No Split**                 | Keeps the document as a single chunk. The document must not exceed the 8k token context limit.                                                                                                            |
| **Recursive Text Splitting** | Splits the text into overlapping chunks of a fixed size. A good general-purpose choice for plain text.                                                                                                    |
| **Document Structure Based** | Splits along the document's own structure (headings, sheets, pages). Valid for `xlsx`, `docx`, `pdf`, `html` and `md`.                                                                                    |

{% hint style="info" %}
If you are not sure which one to pick, leave it on **Smart**. It resolves the best strategy for each resource at indexing time.
{% endhint %}

#### Advanced

The **Advanced** tab is available only for Public URL and Confluence resources.

**Reindex frequency**

How often, in days, the resource is automatically re-fetched and re-indexed to stay in sync with the source. The value can be set between **1 and 90 days** and defaults to **15 days**.

**Additional Headers**

Extra key/value headers sent with every fetch request. Use them when the source requires custom headers (for example an authentication or user-agent header) to be reached.

### The Resources list

Every resource you add appears in the Resources list, with a column for its indexing progress and its key statistics.

| Column                | Description                                                                                                      |
| --------------------- | ---------------------------------------------------------------------------------------------------------------- |
| **Name**              | The display name of the resource: the file name for uploads, the page title or URL for web and Confluence pages. |
| **Size**              | The size of the stored content.                                                                                  |
| **Chunks**            | How many chunks the content was split into.                                                                      |
| **Avg. Tokens**       | The average number of tokens per chunk.                                                                          |
| **Chunking Strategy** | The strategy used to split the content.                                                                          |
| **Created**           | When the resource was added.                                                                                     |
| **Embedding Status**  | The current indexing state (see below).                                                                          |

#### Embedding status

| Status        | Meaning                                                                        |
| ------------- | ------------------------------------------------------------------------------ |
| **Preparing** | The content is being fetched or crawled before it can be indexed.              |
| **Pending**   | The content is waiting in the indexing queue.                                  |
| **Indexing…** | The content is being embedded right now.                                       |
| **Indexed**   | The content is fully indexed and available to the model.                       |
| **Failed**    | Something went wrong. Hover the status to read the reason.                     |
| **Banned**    | The content has been excluded from the index on purpose (see Banning content). |

{% hint style="info" %}
While any resource is still settling (Preparing, Pending or Indexing), the list refreshes on its own every few seconds, so you can watch progress without reloading the page.
{% endhint %}

#### Website scans and discovered pages

When you index a Public URL with a crawl depth, or a Confluence page with sub-pages, the page you entered becomes a **scan root** and every page discovered from it is added as a child resource.

By default the list shows only the roots. Turn off **Show only root resources** to reveal the discovered pages, then use the arrow next to a scan root to expand or collapse its pages.

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

### Managing a Resource

#### Editing a resource

**Double-click** a row (or choose **Edit** from the row menu) to open a resource. Roots and standalone resources can be freely edited except for their type; saving hands them back to the pipeline and re-indexes them.

For a **discovered sub-page**, only the **Chunking Strategy** can be changed — everything else is owned by the scan root that created it.

{% hint style="info" %}
A resource that is still being crawled or indexed opens read-only. Wait until it reaches **Indexed** or **Failed** before editing it.
{% endhint %}

#### Viewing what was indexed

Open a resource and click **View Index** to see exactly what was stored for indexing. Web pages and Confluence pages are shown as the converted content, files are shown as-is.

<figure><img src="/files/387VdxUlCMzETy8xvdnQ" alt=""><figcaption></figcaption></figure>

#### Banning content

Sometimes a crawl discovers a page that should not be part of your knowledge base — an unrelated section, a login page, an "intrusion" that slipped into the scan. Open the resource and click **Ban** to exclude it.

A banned resource is removed from the index immediately and marked **Banned**. To bring it back, open it again and click **Unban**.

{% hint style="info" %}
A ban is remembered per address. Even after the next automatic reindex, which drops and rebuilds every discovered page, the page stays banned until you unban it. The same applies to a per-page chunking strategy you set on a sub-page.
{% endhint %}

#### Reindexing

Web and Confluence resources are re-fetched automatically according to their Reindex frequency. When a resource is reindexed, its scan is rebuilt from scratch: obsolete pages are removed and new ones are discovered.

A resource that ended in **Failed** can be pushed back into the queue manually with the **Reindex** action in the row menu.

#### Deleting a resource

Use **Delete** from the row menu to remove a resource.

{% hint style="warning" %}
Deleting a **scan root** also deletes every page and document discovered from it. Xenioo asks you to confirm before removing a website scan.
{% endhint %}

Discovered sub-pages cannot be deleted on their own. They are recreated on the next reindex. To keep a specific sub-page out of the index, **ban** it instead.

### Using resources in a reply

When your model answers, it grounds its response on the most relevant chunks from your resources. In **Train & Test** you can see which resources were actually used: a **Show sources** link appears next to the token usage of a reply and lists the source documents and links.

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

{% hint style="info" %}
Only resources that already carry the necessary indexing information can be listed as sources. Resources indexed before this feature was available will start appearing as sources after their next reindex.
{% endhint %}
