Chatbot PDF tables are among the first things companies put in a knowledge base, and among the ones that disappoint most often. A customer asks about one variant, and the assistant quotes the price from the next row or says it has no information. The usual culprit is what is left of the table after text extraction: columns read one after another, headers separated from numbers, merged cells and footnotes.
This guide covers one document: a price list laid out as a table. The broader choice of material is covered in the guide on what data belongs in a chatbot knowledge base. Here you will check the text layer, rewrite rows as sentences, handle scans and test specific variants.
Can a chatbot read your PDF price list
Open the file in a PDF viewer, select one table row and paste it into a plain text editor. If the selection covers the whole page like a picture, or the pasted text is empty, you have a scan without a text layer. If the text pastes, check the order: do the service name, variant and price sit together, or does the whole column of names appear first and the column of amounts only afterwards?
Scroll the table sideways to see all columns.
| File type | How to recognise it | What to do |
|---|---|---|
| PDF exported from an editor | Text can be selected and a row pastes in one piece | Tidy the table and test the variants |
| PDF with the table as an image | Headings can be selected, prices cannot | Go back to the source file or retype the items |
| Scan or photo of a printout | The whole page selects as an image | Do not use it as your main price source |
The check takes a minute. Text that a person cannot read after pasting will not become readable for an assistant.
Turn table rows into full sentences
A table relies on layout: a price makes sense because it sits under the gross heading and next to a variant name. Text extraction removes that layout. So write each item as a sentence that makes sense on its own: service, variant, price, unit and condition. Such a sentence survives chunking and does not force the model to guess which column a number belongs to.
[Service], [variant name] variant: [amount] including VAT per [unit]. The price includes [scope]. It does not include [exclusion]. Valid from [date]. Example from a fictional beauty studio: "Gel manicure, extension variant: 160 PLN including VAT per treatment. The price includes removing the previous set. Valid from 1 October."
Remove merged cells. If one cell saying "from 120" covers three variants, write three sentences and repeat the price and condition in each. Move footnotes such as "* shoulder-length hair only" into the sentence they apply to.
Items that survive chunking
Retrieval systems split long documents into chunks and answer from the ones that match the question. In Meet AI, long sources are split into fixed-length chunks with a small overlap, so one chunk usually holds several items. A chunk boundary knows nothing about your table and can cut a row between the variant name and its price. Thanks to the overlap, a short item cut at the end of one chunk usually appears whole in the next; a long row with many columns gets no such second chance.
Microsoft's documentation on chunking documents describes fixed-size chunks with overlap and chunking by document structure. It explains the general mechanism, not how your assistant will split a price list.
Group items by service, not by printed page. If the list shows net and gross prices, say in every sentence which one it is. Remove the old price list from the knowledge instead of adding the new one next to it, because two documents with different amounts produce contradictory answers.
What to do when you only have a scan
A scan is a picture of a page. Getting text out of it requires optical character recognition (OCR), which struggles most with what price lists contain: tables, skewed pages and small print. A misread digit in a price is worse than no answer, because the customer has no reason to check it.
The Tesseract OCR documentation states that the engine works best on images of at least 300 dpi, that skewed pages significantly reduce line segmentation quality and that recognising data from tables is a known problem. It covers one engine, not every OCR tool.
Look for the source file first: the spreadsheet, document or design the printout came from. If there is none and the list has a dozen items, retyping it is faster than checking every recognised digit. In Meet AI, every PDF, including one with a text layer, is read as page images by a separate text recognition module that is not necessarily enabled in every environment. For prices, CSV, DOCX or FAQ entries are safer there. If a file cannot be read, the source shows an error and the assistant keeps using the previous active knowledge version.
When to rewrite the price list as FAQ or CSV
A PDF makes sense when it is well built and you publish it anyway; if it needs reworking, another format is often quicker. Meet AI accepts manual FAQ entries as well as CSV, XLSX, DOCX and PDF files. If prices are also on your website, see the guide on importing a website into the knowledge base.
Scroll the table sideways to see all columns.
| Format | When to choose it | What to watch |
|---|---|---|
| Manual FAQ | A few services customers ask about most | One question per service, price and condition in the answer |
| CSV exported from a spreadsheet | Dozens of items maintained in a spreadsheet | Column headers are not repeated in each row, so write a full sentence in a description column |
| DOCX | A list with longer conditions and exceptions | Items as paragraphs, not as a table |
| A file with a clean text layer and a simple layout | Meet AI reads it with text recognition, so always run control questions |
Save the spreadsheet as CSV rather than uploading XLSX: in Meet AI, text and numbers from XLSX may reach the knowledge in a different order than in the rows, while CSV keeps the row order. Give each row a column with a ready sentence based on the template above. The number 160 alone does not say whether it means currency, minutes or pieces.
Control questions about specific variants
A general question such as "how much is a manicure?" proves little. Ask where tables break most often: neighbouring variants, units, footnote conditions and items without a price. In Meet AI, a private test shows an ANSWER or NO_MATCH result with the sources actually used, and you can add an unmatched question straight to the FAQ.
- Neighbouring variants.Ask about two variants from adjacent rows and check that the amounts are not swapped.
- Unit and tax.Ask whether the price is per piece, hour or treatment and whether it includes VAT.
- Footnote condition.Ask about the case a footnote covers and check that the condition appears in the answer.
- Item not on the list.Ask about a service you do not offer. The correct answer is no information and an offer to pass the question to the team, not the price of a similar service.
- Request for a quote.Ask for a total for several services. The assistant should give the listed items and refer to the team, not calculate an offer.
An assistant with knowledge repeats what you wrote, but it does not take orders or prepare individual quotes. For questions that need details, see the guide on price questions in chat. If an answer contains an amount not on the list, the guide on chatbot hallucinations explains the causes.
Plan corrections before refreshing the knowledge. In Meet AI, a new source takes effect only after a full refresh, which an administrator can start once every 7 days, even if the previous attempt failed. So prepare every item and remove the old list before you refresh. Repeat the control questions after every price change; source maintenance is covered in the guide on updating chatbot knowledge.
Questions about price lists in the knowledge base
Can I simply upload the price list I email to customers? Yes, if it passes the copy test and the answers about neighbouring variants are correct. If even one price comes out wrong, move the problem items to the FAQ or fix the file layout.
Is one large file better than several smaller ones? What matters is that each item stands alone, not the file count. Several files by service group make it easier to replace one group. Just make sure the same service never appears in two sources with different amounts.

