Attachments

Every attachment, LLM-ready

PDFs, spreadsheets, slide decks, even scanned contracts arrive as clean Markdown before your webhook fires. No parser to run, no OCR vendor to wire up.

MLRe: RFQ 4471 — 3mm brushed sheetsmarco.lind@lindmetall.deMon 11:48

As sent

Lind Metall GmbH

Industriestraße 14

44536 Lünen, Germany

Northwind GmbH

Attn: Nora Berg

Quote Q-4471

31 Aug 2026

#ItemQtyPrice
1Sheet 3mm500€4.20
2Cutting500€0.35
Net
€2,275.00
VAT 19%
€432.25
Total
€2,707.25

Delivery: 10 working days from order.

Payment: 30 days net.

ABCD1ItemGaugefrom 100from 5002Brushed sheet2 mm€3.90€3.403Brushed sheet3 mm€4.80€4.204Raw sheet3 mm€3.60€3.105Raw sheet5 mm€5.70€5.056Cutting–€0.45€0.357 8 9
PricesTiers

Framework Agreement

between Lind Metall GmbH, Lünen

and Northwind GmbH, Berlin

§ 1 Scope

Supply of sheet metal per the Q4 price list.

§ 2 Term

24 months from signature.

§ 3 Payment

30 days net.

Lünen, 31 Aug 2026

M. Lind, Managing Director

Lind Metall GmbH

Industriestr. 14 · Lünen

What your agent reads

OCRLLM-ready
<!-- Page 1 --> Lind Metall GmbHIndustriestraße 1444536 Lünen, Germany Northwind GmbHAttn: Nora Berg # Quote Q-4471 31 Aug 2026 | # | Item      | Qty | Price || - | --------- | --- | ----- || 1 | Sheet 3mm | 500 | €4.20 || 2 | Cutting   | 500 | €0.35 | Net €2,275.00VAT 19% €432.25Total €2,707.25 Delivery: 10 working days from order.Payment: 30 days net.
## Prices | Item          | Gauge | from 100 | from 500 || ------------- | ----- | -------- | -------- || Brushed sheet | 2 mm  | €3.90    | €3.40    || Brushed sheet | 3 mm  | €4.80    | €4.20    || Raw sheet     | 3 mm  | €3.60    | €3.10    || Raw sheet     | 5 mm  | €5.70    | €5.05    || Cutting       | –     | €0.45    | €0.35    |
<!-- Page 1 --> # Framework Agreement between Lind Metall GmbH, Lünenand Northwind GmbH, Berlin § 1 ScopeSupply of sheet metal per the Q4 price list. § 2 Term24 months from signature. § 3 Payment30 days net. Lünen, 31 Aug 2026M. Lind, Managing Director

Why it matters

The answer is in the attachment

Quotes, invoices, contracts, CVs — the email is two lines and the thing it is about is the file. An agent that is only handed its name can do one thing with it: ask for it again.

Handed a filename

Asks again
ML

Hi Nora, our quote is attached. Best, Marco

Quote-4471.pdf184 KB
Nothing inside it your agent can read

Your agent's draft

Hi Marco, thanks for getting back to us! Could you paste the prices into the email itself? I'm not able to open attachments.

Handed the document

Places the order
ML

Hi Nora, our quote is attached. Best, Marco

Quote-4471.pdfMarkdown
| # | Item      | Qty | Price || - | --------- | --- | ----- || 1 | Sheet 3mm | 500 | €4.20 || 2 | Cutting   | 500 | €0.35 |Total €2,707.25

Your agent's draft

Hi Marco, €4.20 a sheet works for us — please go ahead with all 500. 10 working days as quoted is fine.

Use cases

Wherever the work arrives as a file

Accounts payable

Books every invoice that lands in billing@, matched to the order it belongs to.

Invoice-2291.pdf
vendor
Lind Metall GmbH
total
€2,707.25
order
Q-4471 · matched

Procurement

Lays three supplier quotes side by side and says which one to take.

Quote-4471.pdf+2
Lind Metall
€4.20 · cheapest
Harbor Steel
€4.47
Nordic Sheet
€4.61

Order entry

Turns the spreadsheet a customer orders with into order lines. Nobody retypes 140 rows.

PO-88213.xlsx
sheets
3
rows
140
created
140 order lines

Recruiting

Reads every application against the role and drafts the reply the same day.

Resume_Kim_Weber.docx
experience
8 years backend
stack
Go, Postgres
next
Invite to interview

Contracts

Checks the signed copy that comes back against the draft you sent, clause by clause.

NDA-signed-scan.pdf
clauses
11 of 12 unchanged
§ 7 term
2 → 3 years
next
Flag for legal

Support

Answers the question a customer attached their export to.

transactions-march.csv
asked
Charged twice?
found
Row 214, duplicate
next
Refund €49

Scans

Even the page that went through a scanner

The contract that went out as a PDF comes back printed, signed and scanned. Typed pages are read as they are, and only the scanned pages go through OCR — built in, so there is no OCR vendor to wire up, and one signed page never slows down the rest.

  1. p. 1Text
  2. p. 2Text
  3. p. 3OCR
  4. p. 4Text
  5. p. 5Text
  6. p. 6OCR
Contract-signed.pdf6 pages · 2 read by OCRLLM-ready

Formats

Whatever they attach

Tables stay tables, headings stay headings, and every sheet of a workbook comes through. Nothing to configure per format — if it has text in it, your agent gets the text.

  • .pdf
  • .docx
  • .xlsx
  • .pptx
  • .csv
  • .doc
  • .odt
  • .rtf
  • .epub
  • .ods
  • .ppt
  • .odp
  • .html
  • .json
  • .xml
  • .txt

Images stay images — the original is one call away, ready for a vision model.

In your code

LLM-ready before the webhook fires

Files are read while the mail is being received, so it never reaches you with a document still unopened. There is nothing to switch on and nothing to poll.

1email.receivedevent.data, posted once every file is read
{  "email_id": "eml_71ac",  "attachments": [    {      "filename": "Quote-4471.pdf",      "preparation": "ready"    },    {      "filename": "Price-list-Q4.xlsx",      "preparation": "ready"    }  ]}
2your handlerno parser, no OCR vendor, no queue
const email = await aiinbx.emails.retrieve(  event.data.email_id,  { include: ["attachment_content"] },) const documents = email.attachments.map(  (file) => file.preparation?.text,) await agent.run([  email.stripped_text,  ...documents,])

Give your product an inbox. The hard parts are already handled.

Get started