> ## Documentation Index
> Fetch the complete documentation index at: https://docs.dmly.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Build a knowledge base

> Upload your price list, policies and FAQs so the AI answers contacts from your own material instead of guessing.

An AI assistant only knows what you tell it. A **knowledge base** is your own material — a price
list, a treatment FAQ, a returns policy — grouped into a **vector store** that the assistant can
search while it writes a reply. Upload the price list once, and every AI Reply step pointed at
that store quotes the current prices.

Two things to know before you start:

* **It only works on OpenAI and Google Gemini.** Claude and DeepSeek have no document search, so
  they have no **Vector stores** tab at all. If you try anyway, you get *This provider does not
  support vector stores.*
* **The AI Agent is a plan feature.** No AI on your plan means no knowledge base — the provider
  tiles show **Plan locked** and won't open. If a workspace is downgraded, the stores stop being
  reachable even though the API key is still connected. See [Plans](/billing/plans).

## Create a store and fill it

<Steps>
  <Step title="Open your AI provider">
    Go to **Integrations**, open **OpenAI** or **Google Gemini**, and select the **Vector stores**
    tab. You need the provider connected first — until then the tab tells you *Connect the provider
    first to manage vector stores*. See [OpenAI](/integrations/openai).
  </Step>

  <Step title="Create a vector store">
    In the **Create a vector store** panel, give it a **Store name** that says what's in it —
    *Price list*, *Booking policy* — and select **Create**. You'll pick stores by name later on the
    AI Reply step, so one store per subject beats one store for everything.
  </Step>

  <Step title="Add your material">
    Use **+ Upload file** for a PDF, TXT or MD file up to 20 MB. You can also point the store at a
    web address — an existing page on your site — and DMLY fetches and indexes it for you, so you
    don't have to turn it into a file first.
  </Step>

  <Step title="Point the AI at it">
    Open the **AI Reply** step in your automation, and on the **Built-in Tools** tab tick the store
    under **Document search (File Search)**. This is the step people miss: a store nobody ticks is
    never searched. See [AI tools and functions](/automation/ai-agent-tools).
  </Step>

  <Step title="Test it">
    Open the **Playground** tab on the **AI Reply** step and ask a question your document answers.
    Nothing is sent to a contact and nothing lands in the [Inbox](/inbox/overview).
  </Step>
</Steps>

<Warning>
  Whatever you upload can be quoted back to a contact. Don't put staff notes, internal margins,
  supplier costs or anything with someone else's personal details in a store.
</Warning>

## What you can upload

|                |                                                                                       |
| -------------- | ------------------------------------------------------------------------------------- |
| **File types** | PDF, TXT or MD                                                                        |
| **Size**       | Up to 20 MB per file                                                                  |
| **Web pages**  | Give a web address instead of a file — the page is fetched and indexed on our servers |

Anything else — a Word document, a spreadsheet, a scanned image — is rejected. Export or print it
to PDF first.

## What makes the answers good

The assistant searches your store and writes an answer from what it finds. So the quality of the
answer is mostly the quality of what you put in.

**This helps:**

* **Write for the question, not for the page.** A document that reads like an FAQ — a heading that
  is the question, a short answer under it — is far easier to search than a brochure. If contacts
  ask "do you take walk-ins?", have a line that says exactly that.
* **Keep one subject per store.** *Prices* and *Policies* as two stores lets you point a sales bot
  at one and a support bot at the other.
* **Say the specifics.** Prices, opening hours, addresses, service names, how long something takes.
  These are what people actually ask for, and they are exactly what the assistant can't invent.
* **Keep one current version.** Uploading a new price list adds to the store — it doesn't overwrite
  the old one. Two versions in one store means the assistant can find and quote either.

**This hurts:**

* **A scanned or image-only PDF.** If you can't select the text with your cursor, neither can the
  search. Nothing errors — the store just contributes nothing.
* **Marketing copy.** Pages of tone with no facts give the assistant nothing to answer with.
* **Contradictions.** Two documents with different prices produce confidently wrong answers, and
  they're the hardest kind to notice.
* **Dumping everything in.** A 60-page handbook where the answer to "how much is a haircut?" is one
  line on page 41 answers worse than a one-page price list.

<Tip>
  Treat it like onboarding a new receptionist. If a document wouldn't get a new hire to the right
  answer on their first day, it won't get the assistant there either.
</Tip>

## When it doesn't answer from your documents

<Accordion title="The AI ignores the store completely">
  Three causes, in the order worth checking. The store isn't ticked on the AI Reply step —
  **Document search (File Search)** arrives switched on but with nothing selected, and does nothing
  until you tick a store. Or the step is on **Claude** or **DeepSeek**, which can't search documents
  at all — switch it to OpenAI or Gemini. Or the store is empty.
</Accordion>

<Accordion title="It answers, but with old prices">
  The old file is still in the store. Uploading a new one adds to the store, it doesn't replace what
  was there, so both versions are searchable. Keep one current version per subject — if in doubt,
  create a fresh store with only the new file and tick that one on the step instead.
</Accordion>

<Accordion title="It found nothing in a PDF that clearly says it">
  Open the PDF and try to select the text. If you can't, it's a scan — an image of words, with no
  words in it. Re-export it from the original document, or retype the key facts into a TXT or MD
  file.
</Accordion>

<Accordion title="The Tool calls trace looks empty">
  That's expected, not a fault. Document search runs inside the provider rather than in DMLY, so it
  never shows in the trace — an assistant answering perfectly from your store still shows an empty
  trace.
</Accordion>

<Accordion title="The tab says Connect the provider first to manage vector stores">
  The provider has no API key yet. Connect it on the same page first.
</Accordion>

<Columns cols={2}>
  <Card title="Connect OpenAI" icon="plug" href="/integrations/openai">
    Add an API key so vector stores and AI replies work.
  </Card>

  <Card title="AI tools and functions" icon="screwdriver-wrench" href="/automation/ai-agent-tools">
    Tick your stores on the AI Reply step and set how much it reads.
  </Card>

  <Card title="Reply with AI" icon="robot" href="/automation/ai-replies">
    Write the prompt the assistant answers with.
  </Card>

  <Card title="Plans" icon="credit-card" href="/billing/plans">
    Check whether your plan includes the AI Agent.
  </Card>
</Columns>
