# Add files

> Upload PDFs, DOCX, CSV, TXT, or Markdown. Owlish extracts the text and makes it citable.

import Screenshot from "../../../components/docs/Screenshot.astro";

For content that doesn't live on the public web — product manuals, internal handbooks, customer-facing PDFs — uploading the file directly is the right move. Owlish extracts text (and OCRs scanned PDFs when needed), splits it into chunks, and embeds each chunk for retrieval.

## Upload a file

In a folder, click **Add source → File** and pick a file from your computer. You can multi-select to batch-upload. The source row appears with a status indicator while ingestion runs.

<Screenshot src="/screenshots/sources-upload-files.webp" alt="Upload files dialog with a drag-and-drop zone and browse files button." label="Console · Upload files" description="The file source dialog with a drag-drop zone and a list of recently uploaded files showing per-file status." />

## Supported formats

| Format | Notes |
| --- | --- |
| PDF | Native text extraction first; OCR fallback for scans |
| DOCX | Including embedded tables and lists |
| TXT, MD | Treated as raw text — no structural detection |
| CSV | One row per chunk; column headers preserved |
| HTML | Static HTML files; same parser as websites |

## Processing time

Most files finish ingesting in under a minute. Large scanned PDFs that need OCR can take a few minutes. The agent is ready to cite from a source as soon as its status flips to **Ingested** — partial ingestion isn't surfaced to the agent.

## Replacing a file

Re-upload with the same name to replace; Owlish drops the old chunks and re-ingests. To keep history, upload as a new source instead.

## Next steps

- **[Direct Response](/docs/knowledge-base/direct-response)** — for short answers that don't deserve a whole document.
- **[Citations & re-training](/docs/knowledge-base/citations)** — confirm the agent picks up the new content.

---

Source: https://owlish.bot/docs/knowledge-base/files
