A chatbot can only learn from a PDF's text layer. PDFs exported from a word processor or spreadsheet usually extract well, scanned PDFs contain no text at all until you run text recognition on them, and tables or multi-column brochures often lose the link between an item and its price. So test each file before you upload it, check what the bot actually received, and keep exactly one current version in its knowledge.
The mechanics of uploading are in how to upload documents to teach your chatbot. This guide is about quality: why a PDF that looks perfect on screen can teach a bot the wrong thing.
What happens when you upload a PDF
In SpideyChat, open your chatbot's page, choose Upload files and add your PDF. The text is pulled from every page and merged, split into passages, and stored under a source named after the file, such as price-list-2026.pdf. When a visitor asks a question, those passages compete with your web pages and Q&A pairs for the closest match.
Three things follow from that:
- Only text counts. Photos, logos, icons and anything drawn as a picture are ignored.
- Layout is flattened. Columns, table borders, colour and position on the page disappear. What's left is a stream of words.
- A file with almost no text is refused. If the upload yields next to nothing, SpideyChat skips it with "no readable text" rather than storing an empty source.
The crawler doesn't help here either: it learns web pages only and skips links to PDFs. A price list that's only available as a PDF on your site has to be uploaded to be learned.
What extracts well, and what doesn't
| PDF type | Result | Why |
|---|---|---|
| Exported from Word, Google Docs or Pages | Good | Real text, simple reading order |
| Exported from a spreadsheet | Mixed | Text is there, but rows can blur together |
| Designed brochure | Mixed | Body text works; text inside images is lost |
| Multi-column layout | Mixed | Columns can be read across instead of down |
| Text converted to outlines in a design tool | Nothing | The letters are shapes, not text |
| Scanned paper document | Nothing | The page is a picture |
| Phone photo saved as PDF | Nothing | Also a picture |
The two-minute test before uploading
Open the PDF in any viewer and try two things.
- Search for a price. Press Ctrl+F (Cmd+F on a Mac) and search for a figure you can see on the page. If the viewer can't find it, there's no text layer, and the chatbot won't find it either.
- Copy a table into a plain text editor. Select a section of the price table, copy it and paste it into Notepad or TextEdit. The result isn't identical to what the chatbot's extraction produces, but it's a fair preview. If items and prices come out in two separate lists, or columns run into each other, expect the bot to struggle.
If the search fails, the file needs text recognition. Adobe's Acrobat help describes this: a scanned document contains only image data, and the Scan & OCR tool's Recognize Text option creates a searchable text layer. Adobe also recommends scanning at 300 dpi for the best results. Other PDF tools offer the same feature. After recognition, repeat the search test, and spot-check figures, because recognition can misread digits.
Price lists: make every line stand alone
The most common PDF problem in price lists is the table. On the page, your eye follows the row from "Gutter clean, semi-detached" across to "£85". In extracted text, the item names may come out first and the prices later, and the bot has to guess which belongs to which.
Three fixes, from best to simplest:
- Upload a CSV instead. If the price list comes from a spreadsheet, export it as CSV and upload that. SpideyChat turns each row of a CSV into one line that names every column, for example
Service: Gutter clean | Property: Semi-detached | Price: £85, so the item and price stay together. Two exceptions: a CSV withquestionandanswercolumns is imported as Q&A pairs, and so is any CSV with exactly two columns, which for a simple item and price list works well. - Rewrite the table as lines. One item per line, with the price on the same line: "Gutter clean, semi-detached house: £85". Repeat the currency and the unit on every line.
- Avoid shorthand. "As above", ditto marks, merged cells and footnote symbols (prices marked with an asterisk explained at the bottom) don't survive extraction. Write the condition into the line.
Brochures: pull the facts out
A brochure's prose usually extracts fine, but its facts are scattered across captions, panels and pictures. If a brochure is your only source for something customers ask about, such as what's included in a package or how long installation takes, copy those facts into a short plain document or use Paste text, and upload or paste that alongside the brochure. Our guide to preparing documents for an AI assistant has a full before-and-after example.
Check what the bot actually received
After uploading, open Manage knowledge on the chatbot's page, click "Show sources" and expand the source with your file's name. Each entry is the extracted text exactly as the bot sees it. Read one or two: are prices next to their items? Is anything garbled? You can edit an entry directly, and the change is used from then on.
Then ask the chatbot three questions that only the PDF answers, including one about a price from the middle of a table.
Keeping versions current
Uploading a new version of a file doesn't replace the old one. Each upload is added as its own source, so after a price change the bot can hold both the 2025 and 2026 lists and quote either. Every time you update a PDF:
- Delete the old file's source under Manage knowledge.
- Upload the new file, with the date or version in the name, such as
price-list-2026-10.pdf. - Ask a price question and confirm the new figure.
- Add that question to the chatbot's Test suite with the new price as the expected text, so the next change gets checked too.
Also check your website: if your pages still link to last year's PDF, visitors will read old prices even when the bot gives the right ones.
To see how a chatbot handles your own pricing before you upload anything, try SpideyChat on your website. It reads your public pages in about a minute, so you can compare its answers with your current price list and decide which files it still needs.