Industrial Sourcing & AECPOST /v1/extract?options=tables,grounding

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.

bash
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:

json
{
  "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:

text
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

FieldTypeRequiredDescription
filefile (multipart)RequiredVendor quote PDF or quotation spreadsheet/image.
optionsstringOptionalInclude "tables,grounding" to return line item rows and word coordinate bounding boxes.
fieldsarray / json stringOptionalExplicit 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:

procurement.moq_thresholdinfo

Identified minimum order quantity (MOQ) restriction attached to line item pricing.

table.currency_ambiguitymedium

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.

A weekly credit allowance of your own, usage metering, and somewhere for purchased credits to live.

Every key gets a free weekly allowance. Past that, prepaid credit packs cover it, and Errors & limits says what happens when you run out.