Platform
Four engines, one graph.
Every agent and every utility runs on the same four engines. Each is named here with what it does for an operator, and each proof carries its date.
Engine 1
Forecasts with ranges, measured.
A Chronos-2 foundation model is loaded from local weights and adapted to your restaurant with LoRA adapters trained on your own sales, so the model that forecasts your Friday has seen your Fridays. A temporal graph transformer reads each menu family's history with graph-masked attention and emits nine ordered quantiles per day, so a range is a range and not a number with a margin painted on. Conformal calibration, split, quantile and adaptive, widens the band after a miss and never lets it run away, so the 80 percent band means 80 percent on a measured scorecard.
Planners receive 1,000 jointly sampled demand paths, reconciled so items sum to the day and days to the week in every path, so a prep plan and an order never disagree. Every panel is built with an as-of query on two clocks and a sealed one-use holdout, so no forecast has seen the future it is scored against.
Daily sales, 28 days observed and 14 ahead. Dollars per day.
Held-out daily results, 56 test days, July 7 to August 31, 2026. Training record dated October 20, 2026.
| Model | WAPE | 80% coverage | Band width |
|---|---|---|---|
| Four-week weekday baseline | 33.39% | 82.1% | $956 |
| Chronos-2, pretrained | 33.08% | 83.9% | $933 |
| Chronos-2, sales LoRA | 32.50% | 82.1% | $870 |
| Chronos-2, graph LoRA | 32.49% | 80.4% | $836 |
| Sales LoRA with demand mechanism | 31.97% | 83.9% | $885 |
| Graph LoRA with demand mechanism | 32.28% | 83.9% | $819 |
Windows: training through April 13, 2026; development April 14 to June 8; calibration June 9 to July 6; test July 7 to August 31. Fourteen configurations, three seeds per neural family, six LoRA adapters, three graph transformers and three frozen graph encoders, trained on a local CUDA worker.
- Complete weekly totals: 13.73 percent WAPE over 17 complete weeks (graph LoRA, October 2026).
- Gradient boosting on seasonal residuals: 30.89 percent WAPE against 39.30 percent seasonal naive on 56 assessment days, October 16, 2026; the nominal 80 percent band covered 85.71 percent.
- Live assistant run, July 2026: 25.56 percent WAPE against 36.95 percent seasonal naive on seven days; two fresh-process refits produced byte-identical artifacts.
- What you get: daily sales as 50 and 80 percent ranges for the next 7 to 14 days; prep and reorder quantities at a chosen service level; staffing bands at P50, P80 and P90 with the cost of the difference; a forecast receipt with origin, horizon, nominal range, rolling hit rate and baseline comparison.
Engine 2
Five states, two equilibria, one line.
Five differential equations track the active customer base, perceived quality, front-of-house capacity, cash and the menu price index, so the model behaves the way a restaurant does over months, not the way a spreadsheet does. The mechanisms are named: word of mouth with a delight threshold, quality-dependent churn, congestion that lengthens dwell time as load rises, and the capacity-quality spiral under cash stress. A seeded bootstrap particle filter estimates the hidden states from your records each week, with an unscented Kalman filter as cross-check and iterated filtering to re-estimate parameters, so every parameter is tagged measured, fitted, identified or prior.
The geometry is the product: equilibria and their stability, the separatrix in guests per week, basin membership by forward simulation over 104 weeks, weeks to crossing, and the sensitivity of the line to each lever, so you know which dollar moves it most.
Guests per week against perceived quality. The 205, 242 and 448 marks are from the September 11, 2026 report; positions between the report's two fixed-cost levels are interpolated.
A live restaurant's equilibria from its fitted model, report dated September 11, 2026.
| State | Guests a week | Sales a week | Quality | Front hours | Cash a week |
|---|---|---|---|---|---|
| Low state | 205 | $9,248 | 0.79 | 70 | −$1,031 |
| Break-even line | 242 | $10,912 | $0 | ||
| High state | 448 | $20,235 | 0.92 | 141 | +$5,031 |
- The restaurant sits in the low state, 37 guests a week below the line.
- Hindcast of the 2024 to 2025 fall from the high state: 12 percent relative error on yearly deseasonalized sales, with the absence of recovery after the shock reproduced.
- A fixed-cost cut of $1,037 a week removes the low state entirely. Alternatively, $192 a week of acquisition spend at $50 per acquired household does the same.
- Capital to cross while holding full staffing: $20,242 over 40 weeks, deseasonalized; $32,508 starting in October; $58,255 starting in June. Commit before the season.
- Congestion knee at 8.08 guests per server-hour; dwell time rises from 45 minutes to over 80 above 12. Six hours a week exceed the knee, Friday 18:00 first.
- Measured inputs: spend per guest $45.18; party size 2.0; contribution after food and card fees 71.1 percent; burdened wage $16.20 an hour; fixed cost $5,889 a week; seasonal peak to trough 2.4 to 1; annual server turnover 48.5 percent.
Engine 3
Three signals, never confused.
A contextual bandit learns ridge-linear profit residuals around priors from the restaurant model and explores with upper confidence bounds, so a recommendation is ranked by what it is expected to earn for you, less your stated time value, times the chance you will accept it. Three heads keep three signals apart: a preference head updated only by explicit approve and decline, a completion head updated only by authenticated execution evidence, and a profit head updated only by realized ledger profit against a frozen baseline after the declared 4-, 8- or 13-week horizon. Logged propensities with a 1 percent uniform mixture and 159 action and context features make every decision replayable.
Safety is structural. An action in the act class is never an arm. Owner-only proposals never execute on their own. At most 12 proposals a day. Every proposal needs an expected-effect range before it can be shown. A kill switch disables all proposals. State is atomic, tenant-scoped and checksummed; the event log is hash-chained; an encrypted outbox carries each learning update across crashes exactly once.
The loop: recommend, decide, execute, outcome, learn. Preference from decisions, completion from execution receipts, profit from outcomes after their horizon.
- Trained at population scale. 1,000 simulated restaurant and operator pairs: 200 restaurant families with five operator styles each. 700 pairs train the policy and the world model; 300 are held out by whole family, so nothing it is scored on was ever seen in training.
- A real operating task. 26-week episodes over 48 controls: price, stock, staffing, service investment and supplier. 47,215 weekly decisions in training, and a second corpus of 15,921 decisions that puts the learned policy head to head with a one-week planner, a four-week planner and open exploration.
- Sealed before it is scored. Hidden demand, true operator preferences, future shocks and seeds never reach a policy input. Protocol and checkpoints are hash-pinned before the test opens, and an independent red team replayed all 1,200 sealed test episodes exactly, every action, every dollar and every cash balance matching.
- A world model that gets sharper with your data. On held-out families the learned demand model cut served-covers error from 14.5 to 12.7 percent. Adapting to a single restaurant took it from 16.6 to 12.9 percent and lifted 80 percent four-week range coverage from 65 to 99 percent.
- A policy that earns its freedom. The four-week planner is the reference; the learned policy departs from it only where held-out restaurants support the move, and on the 150 held-out pairs it matched the planner within $3 per restaurant over 26 weeks. Six policy versions, V7 through V12, each sealed before any result was read.
- 54 dated operational lessons in experience memory, each cited by lesson ID and content hash.
Engine 4
One memory, two clocks.
A typed property graph with 47 node types and 50 edge types links every dish to its recipe, components, ingredients, vendor SKUs and pack conversions, then to POS items, sales, labor periods, invoices, bank transactions, journal entries, forecasts, decisions and outcomes, so one cost change ripples to every affected dish and the cash plan. The store is bitemporal and append-only: every fact carries when it applied and when it became known, corrections are supersessions, and an as-of query answers what was believed at any date, so any number can be replayed later and give the same answer.
Provenance rides on every row, grade A from an immutable artifact through grade D imported, with evidence hashes, run IDs and config hashes, so a lineage command returns the fact, the run and the file. The evidence store is content-addressed and write-once with a PII scrubber at the boundary and HMAC pseudonyms for employees; no guest node exists. A local context service, encrypted with AES-GCM, combines exact SQL, keyword search and local neural embeddings with two-hop graph traversal, so the assistant answers from your records with citations.
The graph in eight layers, with the mozzarella ripple traced from Sysco invoice 48812 to the ledger.
- 14,527 nodes and 103,783 edges reproduced exactly by the parity gate; 118,000 assertion rows; current and as-of views in about 1.5 seconds; 88.3 percent of historical sales mapped to sellables.
- 127 sellable items, 206 recorded recipe components, 74 pack relationships; item sales on 538 observed dates from February 1, 2025 to September 8, 2026 (snapshot September 9, verified October 16, 2026).
- 14,176 immutable source objects and 5,517,377 observations preserved read-only; 4,666 searchable chunks with local embeddings; an August 2026 ticket query returned 208 orders and 1,149 item lines in about 1.6 seconds, with replay authenticating 23 original exports.
- Ticket-level history across two POS generations from December 2021.
See the four engines on your numbers.
$299 per location per month. No contracts. Billing starts after you approve activation.