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

Extract Construction Variation & Change Order Details

Deconstructs contractor variation claims, change-order notices, and delay notifications. Extracts claimed vs. approved sums, subcontractor markups, daily plant hire rates, labor hours by trade classification, and linked head-contract specification references.

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=@variation_claim_no_04.pdf" \
  -F "fields=variation_number,project_id,contractor_name,claimed_amount_ex_gst,claimed_days_eot,contract_clause_reference"

Expected JSON response

The engine returns deterministic findings with evidence traces, confidence bounds, and recommended actions:

json
{
  "document_type": "change_order_variation",
  "mode": "fields",
  "fields": {
    "variation_no": { "value": "VO-004-STRUCTURAL", "confidence": 0.98, "page": 1 },
    "project_name": { "value": "Tower B Commercial Fitout", "confidence": 0.97, "page": 1 },
    "claimed_ex_gst": { "value": 34820.00, "confidence": 0.98, "page": 1 },
    "claimed_eot_days": { "value": 5.0, "confidence": 0.94, "page": 1 },
    "reason_for_variation": { "value": "Latent rock encountered during piling at gridline D4", "confidence": 0.95, "page": 1 }
  },
  "tables": [
    {
      "page": 1,
      "source": "native_pdf",
      "rows": 3,
      "header": ["Trade / Resource", "Hours / Qty", "Contract SOR Rate", "Claimed Rate", "Total Claimed"],
      "json": [
        { "Trade / Resource": "Piling Rig Operator (Day)", "Hours / Qty": "24 hrs", "Contract SOR Rate": "$180.00", "Claimed Rate": "$180.00", "Total Claimed": "$4,320.00" },
        { "Trade / Resource": "Excavator 30T Wet Hire", "Hours / Qty": "3 days", "Contract SOR Rate": "$2,200.00", "Claimed Rate": "$2,200.00", "Total Claimed": "$6,600.00" },
        { "Trade / Resource": "Rock Breaker Attachment", "Hours / Qty": "3 days", "Contract SOR Rate": "$1,100.00", "Claimed Rate": "$1,100.00", "Total Claimed": "$3,300.00" }
      ]
    }
  ]
}

AI agent prompt & MCP tool usage

When configuring autonomous agents (Claude Desktop, Cursor, Hermes), use this verified prompt pattern:

text
You are a Commercial Project Reviewer.
When a contractor submits a Variation Claim PDF:
1. Call extract_fields(options="tables,grounding", fields=["variation_no", "claimed_ex_gst", "claimed_eot_days", "clause_ref"])
2. Extract the itemised trade hours and material invoices from the schedule table.
3. Compare the labor rates against contractual Schedule of Rates (SOR).
4. Flag any non-standard overhead markups exceeding 10%.

Input parameters & headers

FieldTypeRequiredDescription
filefile (multipart)RequiredVariation claim notice, change order PDF, or superintendent determination.
optionsstringOptionalSet to "tables,grounding" to extract the resource breakdown schedule.
fieldsarray / json stringOptionalSpecific fields to target (e.g. EOT days, clause references, contractor details).

Diagnostic signals & failed checks

Each check reports exactly what it tested and what evidence it found. High severity signals trigger an escalated risk band:

variation.unauthorized_markuphigh

Subcontractor markup percentage exceeds the head contract maximum allowable ceiling.

variation.clause_unreferencedmedium

Claim fails to cite the specific contractual variation clause relied upon.

Production considerations & edge cases

  • Provisional Sum Adjustments: Distinct from variations; provisional sum adjustments are mapped to original contract line items.

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.