Simulate an inbound SMS order

Text an order the way a contractor would. Watch the pricing matrix get injected on the turn, and watch the server recompute the total before anything is emitted.

The language parser here is a deterministic stand-in so the demo runs offline. The guardrail is not a stand-in — this page imports evaluateOrder from @vulcan/core, the same module that runs in production, unmodified.

Plan
Scenario

Ridgeline Building Supply

SMS · +1 214 555 •••• · A2P 10DLC

Tier 2

Try one of these, or write your own:

Math guardrail

Send an order to watch the server recompute it against the injected matrix.

{
  "customerId": "+1214555••••",
  "channel": "sms",
  "creditTier": "NET_30",
  "creditCeilingCents": 7500000,
  "dailyLimitRemainingCents": 4200000,
  "validationContext": {
    "plywood_cdx_1_2_4x8": {
      "unitPriceCents": 2680,
      "name": "CDX Plywood 1/2\" 4x8",
      "uom": "EA",
      "availableQty": 1840
    },
    "lumber_spf_2x4_8ft": {
      "unitPriceCents": 589,
      "name": "SPF 2x4-8' Stud",
      "uom": "EA",
      "availableQty": 6200,
      "minOrderQty": 50
    },
    "shingle_arch_30yr_sq": {
      "unitPriceCents": 11250,
      "name": "Architectural Shingle 30yr",
      "uom": "SQ",
      "availableQty": 310
    },
    "rebar_grade60_20ft": {
      "unitPriceCents": 1495,
      "name": "#4 Rebar Grade 60 20'",
      "uom": "EA",
      "availableQty": 0
    },
    "joint_compound_5gal": {
      "unitPriceCents": 1885,
      "name": "All-Purpose Joint Compound 5gal",
      "uom": "EA",
      "availableQty": 240
    }
  },
  "_note": "All money is integer US cents. 2680 means $26.80. Vulcan makes no outbound call to fetch any of this and keeps no copy after the turn."
}