Warehouse decision model

RackSort is ERP.AI's warehouse model. It reviews a proposed warehouse operation before an agent, scanner or integration runs it, and returns one of five verdicts: allow, replay, reject, review or reconcile. Each verdict comes with the next step, the role that takes it, the facts behind it and the clause of ERP.AI's Warehouse Management specification it applies.

A lost carrier reply

A label request reaches the carrier, but the reply never comes back. An agent that simply retries can buy a second label. The specification calls this state Uncertain. The original request may be resent only through a connector whose idempotency is verified. Otherwise the request is looked up or reconciled before another billable create.

{
  "decision": "carrier",
  "proposal": {
    "operation": "LabelCreate",
    "key": "CR-0413",
    "digest": "c7e1f0"
  },
  "connector": {
    "carrier": "UPS",
    "idempotency": "unverified",
    "lookup": "verified"
  },
  "requests": [
    {
      "key": "CR-0412",
      "digest": "c7e1f0",
      "operation": "LabelCreate",
      "attempts": [
        {
          "kind": "request",
          "transport": "sent",
          "at": "2026-10-02T14:02:11Z",
          "evidence": "POST /api/shipments/v2409/ship: read timed out after 30000 ms; request body fully written"
        }
      ]
    }
  ]
}

The response, abridged:

{
  "decision": "carrier",
  "verdict": "reconcile",
  "state": "Uncertain",
  "next": {
    "action": "lookup",
    "text": "Look up request CR-0412 with the carrier and record what it finds before anything billable runs again."
  }
}

With a verified idempotent connector the same request returns allow with retry_same_key. Once a lookup finds the label, a new create returns replay with the existing tracking number.

Ten decisions

The specification ships ten worked examples. Each is a decision here, and the rules reproduce all ten without a model.

DecisionTitleCoversEvidence question
receiveReceiving quantitiesBase quantities for receipt confirmations and ASN lines, and received totals that come from receiving evidence rather than current plate contents.asn_unit
reserveReservationsSoft, Hard, Picked and Packed claims that move without growing, and order-change messages that must not become duplicate claims.order_change_kind
waveWave membershipOne active planning claim per order revision, including the same order received twice under two numbers.same_order
serialSerial identityOne serial per unit, unique in active stock, read from scans that may hold other codes.scan_is_serial
packPacking and tender readinessComplete contents and a measured weight before verification, and verification before labels and tender.weight_measured
countCount postingCounts post only under an active lock and an unchanged snapshot; other bins' activity does not invalidate them.movement_during_count
varianceCount variancesTolerance, recount, valuation and approval authority for count adjustments, including discovered stock and unusable costs.discovered_stock, cost_usable
carrierCarrier requestsWhether a label, void, manifest, tender or bill-of-lading request succeeded, failed or is Uncertain, and what may run next.carrier_outcome
replayReplays and deliveriesOne local effect per event key, snapshots that never post, and deliveries that retry only when the receiver cannot apply an event twice.destination_outcome
handoverHandover and on-time shippingShipped status and on-time reporting from evidenced carrier handover of every required unit, never from labels, manifests or delivery dates.handover_by_cutoff

How a verdict is reached

Rules decide what the structured fields settle: base-unit quantities, reservation ledgers, lock versions, request keys and digests, pickup scan times. Free-text evidence goes to SmallDecide as a typed question: carrier replies, tender evidence, ASN unit wording, weight notes, counter notes, adjustment reasons, order-change messages and scanned values. A model answer settles a fact only when it clears a threshold qualified for that model on held-out text written by different authors. Otherwise the question abstains, and the decision takes the specification's safe path.

7 of 11 questions qualify for model 47ed8d6e03938bfc (float32-cpu) at a 3% error budget. On 6,598 held-out rows the model settles 947 verdicts that the rules alone send to review or reconciliation, with 1 unsafe verdict. Evaluations has every number.

Use it

Run a decision with the quickstart or explore the API reference.

Create an account to get API keys and the console, then follow the quickstart. The specification is pinned at d6efd5c (SHA-256 2b408768db2c…).