Bell Automation works on document and data workflows. One current prototype prepares an Excel quotation from a text-PDF RFQ and an approved-price CSV catalogue.
The design separates two failures. A requested item with an unknown code, duplicate catalogue entry, missing price or unit conflict is retained unpriced on a Review sheet. An extraction that cannot reconcile the document’s declared row count is rejected before a workbook is produced. Pricing uses exact catalogue matching and decimal arithmetic.
The synthetic example has ten requested lines: four priced and six retained for review. Its subtotal is labelled as covering the quoted lines only. It passed twelve tests, additional independent PDF cases, and workflow import/execution through the CLI in isolated self-hosted n8n 2.20.0. The demo supports one deliberately simple synthetic layout; customer layouts, browser-editor import and production integrations still require validation. The supplied adapter needs self-hosted n8n; scanned PDFs and OCR are outside its scope.
Free synthetic demonstration, source, Excel output and setup notes.
For anyone exposing a quotation tool to an LLM agent: would you return a partial quote with an explicit review_required status and quoted_lines_subtotal, or withhold every amount until all requested lines are resolved? The current workbook makes the distinction visible to a person. I would be interested in API response designs that keep an agent from treating a partial subtotal as the total RFQ price.