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.
| Decision | Title | Covers | Evidence question |
|---|---|---|---|
| receive | Receiving quantities | Base quantities for receipt confirmations and ASN lines, and received totals that come from receiving evidence rather than current plate contents. | asn_unit |
| reserve | Reservations | Soft, Hard, Picked and Packed claims that move without growing, and order-change messages that must not become duplicate claims. | order_change_kind |
| wave | Wave membership | One active planning claim per order revision, including the same order received twice under two numbers. | same_order |
| serial | Serial identity | One serial per unit, unique in active stock, read from scans that may hold other codes. | scan_is_serial |
| pack | Packing and tender readiness | Complete contents and a measured weight before verification, and verification before labels and tender. | weight_measured |
| count | Count posting | Counts post only under an active lock and an unchanged snapshot; other bins' activity does not invalidate them. | movement_during_count |
| variance | Count variances | Tolerance, recount, valuation and approval authority for count adjustments, including discovered stock and unusable costs. | discovered_stock, cost_usable |
| carrier | Carrier requests | Whether a label, void, manifest, tender or bill-of-lading request succeeded, failed or is Uncertain, and what may run next. | carrier_outcome |
| replay | Replays and deliveries | One local effect per event key, snapshots that never post, and deliveries that retry only when the receiver cannot apply an event twice. | destination_outcome |
| handover | Handover and on-time shipping | Shipped 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…).