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 typeHow to recognise itWhat to do
PDF exported from an editorText can be selected and a row pastes in one pieceTidy the table and test the variants
PDF with the table as an imageHeadings can be selected, prices cannotGo back to the source file or retype the items
Scan or photo of a printoutThe whole page selects as an imageDo 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.

Price list item template

[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.

FormatWhen to choose itWhat to watch
Manual FAQA few services customers ask about mostOne question per service, price and condition in the answer
CSV exported from a spreadsheetDozens of items maintained in a spreadsheetColumn headers are not repeated in each row, so write a full sentence in a description column
DOCXA list with longer conditions and exceptionsItems as paragraphs, not as a table
PDFA file with a clean text layer and a simple layoutMeet 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.

  1. Neighbouring variants.Ask about two variants from adjacent rows and check that the amounts are not swapped.
  2. Unit and tax.Ask whether the price is per piece, hour or treatment and whether it includes VAT.
  3. Footnote condition.Ask about the case a footnote covers and check that the condition appears in the answer.
  4. 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.
  5. 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.