Extract Supplier Quote Line Items & Price Matrices
Pulls itemised pricing matrices, manufacturer part numbers (MPNs), incoterms, volume tiers, and freight line-items from vendor quotation PDFs. Reconstructs multi-line descriptions and binds unit rate grounding coordinates back to the source PDF.
Instant execution
Run this verification workflow directly. For instant zero-auth testing with deterministic fixture data, include the Stp-Sandbox: true header.
curl -X POST "https://www.stipple.sh/v1/extract?options=tables,grounding" \
-H "Authorization: Bearer stp_live_your_key_here" \
-F "file=@supplier_quote_valves_v2.pdf" \
-F "fields=quote_reference,vendor_name,validity_date,currency,incoterms,lead_time_weeks"Expected JSON response
The engine returns deterministic findings with evidence traces, confidence bounds, and recommended actions:
{
"document_type": "supplier_quote",
"mode": "fields",
"fields": {
"vendor_name": { "value": "Pacific Industrial Valves Pty Ltd", "confidence": 0.98, "page": 1 },
"quote_reference": { "value": "PIV-2026-8812", "confidence": 0.99, "page": 1 },
"currency": { "value": "AUD", "confidence": 0.97, "page": 1 },
"lead_time_weeks": { "value": 4.0, "confidence": 0.91, "page": 1 },
"incoterms": { "value": "DDP Sydney", "confidence": 0.94, "page": 1 }
},
"tables": [
{
"page": 1,
"source": "native_pdf",
"rows": 4,
"header": ["Item", "Part Number", "Description", "Qty", "Unit Price (AUD)", "Total (AUD)"],
"json": [
{
"Item": "1",
"Part Number": "VLV-SS-316-50MM",
"Description": "50mm 316 Stainless Steel Ball Valve Flanged ANSI 150",
"Qty": "12",
"Unit Price (AUD)": "145.00",
"Total (AUD)": "1,740.00"
},
{
"Item": "2",
"Part Number": "ACT-PNEU-DA-80",
"Description": "Double Acting Pneumatic Actuator ISO 5211",
"Qty": "12",
"Unit Price (AUD)": "220.00",
"Total (AUD)": "2,640.00"
}
]
}
],
"grounding": "native_text"
}AI agent prompt & MCP tool usage
When configuring autonomous agents (Claude Desktop, Cursor, Hermes), use this verified prompt pattern:
You are an autonomous Procurement Sourcing Agent.
When the user uploads multiple supplier quote PDFs:
1. For each PDF, call extract_fields(options="tables,grounding", fields=["vendor_name", "currency", "lead_time_weeks", "incoterms"])
2. Extract the itemised rows from tables[0].json (Part Number, Description, Qty, Unit Price, Total).
3. Normalize all prices into AUD.
4. Generate a comparative matrix highlighting the lowest-cost compliant vendor per line item.Input parameters & headers
| Field | Type | Required | Description |
|---|---|---|---|
| file | file (multipart) | Required | Vendor quote PDF or quotation spreadsheet/image. |
| options | string | Optional | Include "tables,grounding" to return line item rows and word coordinate bounding boxes. |
| fields | array / json string | Optional | Explicit top-level header fields (incoterms, payment terms, validity). |
Diagnostic signals & failed checks
Each check reports exactly what it tested and what evidence it found. High severity signals trigger an escalated risk band:
Identified minimum order quantity (MOQ) restriction attached to line item pricing.
Quote uses $ symbol without explicit AUD/USD identifier in the table header.
Production considerations & edge cases
- Tiered Volume Pricing: When quotes list price breaks (e.g. 1-10: $50, 11-50: $42), table rows represent the distinct volume break brackets.
- Exchange Rate Volatility Clauses: Surcharges tied to forex movements are extracted into contractual terms fields.
Related workflows
Take it to production
The snippets above run against the sandbox with Stp-Sandbox: true — no key, no credits, fixture data. Drop that header and the call is real, which needs a key.
Every key gets a free weekly allowance. Past that, prepaid credit packs cover it, and Errors & limits says what happens when you run out.