Procurement was built for humans.
Now both sides are agents.

Loop is an open JSON format for B2B procurement messages — RFQs, quotes, POs, and the clarification rounds in between. Embedded in normal email, it lets AI agents on both sides skip the extraction step entirely. No scraping prose. No parsing PDF tables. No guessing units.

Status: Draft v0.1 License: Apache-2.0 Format: JSON, validated with JSON Schema 2020-12 Transport: Email (today)

Procurement is the last great unstructured channel

Every B2B procurement transaction — every freight booking, every services RFP, every capex purchase — still travels as a free-form email or PDF. The receiving side has spent the last decade building extraction layers to recover the structure. With LLMs on both ends now, the cost of that lossy hand-off is finally visible.

Today

1
Buyer captures request in a procurement tool. Coupa, Ariba, GEP, ERP, or a spreadsheet.
2
Tool emits a free-form email or PDF. Structure is lost the moment it leaves the system.
3
Supplier's AI agent re-extracts the data. Multiple LLM calls per message. Units guessed. Errors common.
4
Supplier emails a free-form reply. The buyer's agent now re-extracts that too.

With Loop

1
Buyer's system emits the same email. Plus a small JSON attachment alongside it.
2
Humans read the prose. Agents read the JSON. Both views ship in one MIME message. Neither side loses anything.
3
Supplier's agent parses the payload directly. Zero extraction. Units, currencies, line-item IDs all preserved.
4
Reply ships back in the same shape. The buyer's agent matches RFQ ↔ quote on stable IDs, not heuristics.
The market has been email-prose for 30 years and standards haven't moved it. What's new: both sides are now LLMs that hate parsing prose. Every parsed Loop email saves a supplier's pipeline real money in extraction LLM cost. That's the unit-economics argument previous procurement standards never had.

How it works

Loop is a tiny core spec plus namespaced vertical extensions. Six decisions shape it:

What a message actually looks like

An air-freight RFQ from a freight forwarder, addressed to a co-loader. Arrives in the supplier's inbox as a normal email with a procurement.json attachment containing:

{
  "loop_version":   "0.1",
  "message_type":   "rfq",
  "message_action": "rfq_initial",
  "message_id":     "9c2a8b8e-…",
  "thread_id":      "9c2a8b8e-…",
  "issued_at":      "2026-05-17T09:00:00Z",

  "issuer": {
    "org_name":     "Acme Logistics Pvt Ltd",
    "contact_name": "Priya Shah",
    "email":        "priya@acme.example"
  },
  "issuer_role": "forwarder_requesting_quote",
  "recipients":  [ { "org_name": "BlueWing Freight", "email": "quotes@bluewing.example" } ],

  "body": {
    "title":          "Air freight: BLR → FRA, 2 pallets electronics",
    "quote_deadline": "2026-05-19T12:00:00Z",
    "line_items": [
      { "id": "1", "description": "Electronics, palletized, non-hazardous",
        "quantity": { "value": "2", "unit": "PLT" } }
    ],
    "flags": {
      "cost_vs_time_preference": "balanced",
      "requested_quote_fields":  ["carrier", "transit_time", "validity"]
    },
    "extensions": {
      "freight": {
        "mode":              "air",
        "offer_direction":   "export",
        "service_type":      "port_to_port",
        "origin":            { "country": "IN", "port_code": "BLR" },
        "destination":       { "country": "DE", "port_code": "FRA" },
        "incoterms":         "FCA",
        "incoterms_place":   "Bengaluru",
        "ready_date":        "2026-05-22",
        "commodity":         "Electronics, palletized",
        "cargo_type":        "general",
        "gross_weight":      { "value": "850",  "unit": "KGM" },
        "chargeable_weight": { "value": "1100", "unit": "KGM" },
        "hazardous":         { "is_hazardous": false }
      }
    }
  },
  "extraction_meta": { "extraction_confidence": 0.95, "data_completeness": "complete" }
}

Every weight in KGM. Every volume in MTQ. Every price in ISO 4217. Line-item IDs are stable across the RFQ → quote → PO thread, so matching is exact, not heuristic. Unknown fields are preserved on relay so the network can grow without coordination.

View all worked examples — air export, FCL sea, hazmat air with MSDS, services RFP, and a full clarification round.

Who benefits

Loop is a cooperative format. Every participant wins more by adopting than by holding out — and adoption is incremental (emit-only and parse-only both deliver value).

AI procurement startups primary

You spend most of your LLM budget re-extracting structure from prose. Every parsed Loop email is several extraction calls you don't make. The unit-economics improvement is direct and measurable.

Freight forwarders & carriers vertical

Air and sea RFQs are dense, unit-sensitive, and routinely lossy in prose. The extensions.freight block captures mode, incoterms, dimensional weight, hazmat MSDS, container plan, customs filings — all the fields your TMS already wants to index.

Procurement-platform vendors incumbents

Coupa, Ariba, SAP, GEP — every minute a customer spends extracting replies from email is friction they blame on your tool. Emitting Loop on outbound and parsing on inbound is an SDK-sized integration with an immediately demonstrable customer-side win.

Suppliers without AI unchanged

If you don't speak Loop, nothing changes. Every message ships with a human-readable rendering. The structured attachment is a bonus channel, never a replacement channel. No onboarding, no portal, no new account.

Enterprise buyers downstream

Better quote comparison. Stable line-item identity across the thread. Auditable structured data for category management. Less ambiguity in contracts, fewer disputes downstream of an RFQ.

Standards-curious teams tooling

The spec is small enough to read in 20 minutes. The schemas are standard JSON Schema 2020-12 — generate type-safe parsers in any language with off-the-shelf tooling. No mandatory code lists, no patent traps.

Why this works now when standards haven't before

UBL, Peppol, cXML, EDI, RosettaNet, ebXML — every previous attempt at a universal procurement format hit the same wall. The cost of adoption sat with the buyer; the benefit of adoption was a vague "less error eventually." Buyers shrugged. Suppliers shrugged. Standards committees ground on for years and the format never escaped its mandate.

Loop has a different shape because the buyer doesn't have to do extra work. Procurement tools and AI agents on the buyer side can emit Loop automatically, alongside the prose email they were already sending. The supplier-side AI vendor is the party with both the strongest incentive and the cheapest path to adoption — a few hundred lines of JSON-parsing code replaces tens of thousands of LLM calls per month.

That re-aligns the network effect. Once a handful of supplier-side AI tools advertise Loop support, every buyer's AI tool has a reason to emit. Once buyer-side tools emit, every supplier without AI still gets a normal email — but every supplier with AI gets a free upgrade. Adoption compounds instead of stalling.

Get involved

Loop is a v0.1 draft. The intent is to land at a stable v1.0 once the core has been exercised against real procurement traffic across at least three independent organizations. Until then, the spec is open to substantive change.