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.
As sent
Lind Metall GmbH
Industriestraße 14
44536 Lünen, Germany
Northwind GmbH
Attn: 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.00
- VAT 19%
- €432.25
- Total
- €2,707.25
Delivery: 10 working days from order.
Payment: 30 days net.
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 againHi Nora, our quote is attached. Best, Marco
| # | Item | Qty | Price || - | --------- | --- | ----- || 1 | Sheet 3mm | 500 | €4.20 || 2 | Cutting | 500 | €0.35 |Total €2,707.25Nothing 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 orderHi Nora, our quote is attached. Best, Marco
| # | 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.
- 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.
- 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.
- sheets
- 3
- rows
- 140
- created
- 140 order lines
Recruiting
Reads every application against the role and drafts the reply the same day.
- 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.
- clauses
- 11 of 12 unchanged
- § 7 term
- 2 → 3 years
- next
- Flag for legal
Support
Answers the question a customer attached their export to.
- 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.
- p. 1Text
- p. 2Text
- p. 3OCR
- p. 4Text
- p. 5Text
- p. 6OCR
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.
- .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.
{ "email_id": "eml_71ac", "attachments": [ { "filename": "Quote-4471.pdf", "preparation": "ready" }, { "filename": "Price-list-Q4.xlsx", "preparation": "ready" } ]}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,])