CoolFace
Datasetpublic

Vita-Mojo/kitchensim-v1

KitchenSim — Synthetic Restaurant Operations Dataset (v1) A parametric simulator-generated event stream for 60 simulated restaurant kitchens across 7 days. Designed for benchmarking demand forecasting, operational-state inference, and self-supervised representation learning on time-series event data. This is the publish-ready version. A hidden ground-truth state column (hidden_true_state) was used during the original simulator's classifier and is stripped here — only what a… See the full description on the dataset page: https://huggingface.co/datasets/Vita-Mojo/kitchensim-v1.

sourceHugging Faceapache-2.0updated 4mo agoView on Hugging Face
0likes20downloads
Dataset Card

KitchenSim — Synthetic Restaurant Operations Dataset (v1)

A parametric simulator-generated event stream for 60 simulated restaurant kitchens across 7 days. Designed for benchmarking demand forecasting, operational-state inference, and self-supervised representation learning on time-series event data.

This is the publish-ready version. A hidden ground-truth state column (hidden_true_state) was used during the original simulator's classifier and is stripped here — only what a downstream consumer would see in real operational data is included.

Schema

ColumnTypeDescription
store_idint320..59 — which simulated store
store_typestring (categorical)qsr_fast, qsr_casual, delivery_first, hybrid_high_volume, hybrid_low_volume
timestampint64Unix epoch milliseconds
event_typestring (categorical)CREATED, PAID, STATUS_CHANGED, BUNDLES_BATCH_SPLIT, CANCELLED, REFUNDED
order_idstringUUID identifying the order
bundle_idstring \nullUUID for the bundle (null for order-level events)
channelstring (categorical)kiosk, app, deliveroo, ubereats, justeat (cnc/opat/web are valid schema values but unused in v1)
bundle_countInt32 \nullNumber of bundles in the order
item_countInt32 \nullItems in this bundle (BUNDLESBATCHSPLIT only)
status_fromstring (categorical) \nullSource status for STATUS_CHANGED events
status_tostring (categorical) \nullTarget status for STATUS_CHANGED events
price_total_penniesInt32 \nullOrder total in GBP pennies (CREATED + PAID only)

Statistics

  • —1,163,151 events
  • —60 stores × 7 days (Mon 2024-01-01 → Sun 2024-01-07 UTC)
  • —~16 MB compressed (zstd) parquet
  • —193,837 orders generated
  • —Reproducibility: byte-identical given the master seed in the code repository generator config

Store types

Five archetypal kitchens with distinct operational profiles:

Store typePeak orders/hrMedian fulfilment (s)Channel mixResilience
qsr_fast6018060% kiosk / 25% app / 15% 3PDhigh
qsr_casual3542040% kiosk / 30% app / 30% 3PDmedium
delivery_first4530010% kiosk / 5% app / 85% 3PDlow (spirals under load)
hybrid_high_volume8024035% kiosk / 30% app / 35% 3PDmedium
hybrid_low_volume1836045% kiosk / 30% app / 25% 3PDhigh

Dynamics

  • —Non-homogeneous Poisson arrivals modulated by hour-of-day (double-peak at lunch + dinner) and day-of-week (Friday peak, Sunday dip).
  • —State machine per store: stable / degraded / collapsed, classified by queue_depth / base_capacity and recent_fulfilment_EMA / median_fulfilment.
  • —Non-linear load_factor 1 + 0.6 * max(0, q/cap - 1)^1.5 (capped at 5.0) drives the kitchen-spiral dynamic that's the signal of interest.
  • —Stochastic disruptions per store per day: equipment failure (3%, capacity -40% for 8-15 min), demand spike (5%, arrival rate ×2 for 5-10 min), staff shortage (2%, capacity -25% for 30-90 min).

Loading

python
import pandas as pd
df = pd.read_parquet("hf://datasets/Vita-Mojo/kitchensim-v1/synthetic_ops_v1_publish.parquet")
print(df.head())

Use cases

  • —Self-supervised pretraining of sequence encoders (this dataset trained Vita-Mojo/opswm1)
  • —Benchmarking demand-forecasting models with realistic daily/weekly seasonality
  • —Operational state-inference research (the simulator's classifier rule is documented in the model card so you can compare your inferred states to ground truth on the training split if you re-generate with the seed)
  • —Evaluation of representation learning for tabular event streams

Limitations

  • —Synthetic: dynamics are mathematically generated, not observed. The store-type taxonomy, arrival curves, and disruption mix are stylised abstractions of real-world patterns, not measured ones.
  • —No multi-week seasonality: only 7 days, so weekly cycles are observed once. The day-of-week multiplier captures relative patterns; absolute calibration to a real chain is undefined.
  • —No price/menu dynamics: prices are a simple £3 + £4 × items_total + N(0, £1.50) formula. Real-world discounting and menu mix are absent.
  • —No customer-side state: the dataset only contains kitchen-side events. Customer wait times, abandonments, complaints are not modelled.

License

Apache 2.0