🍳 Restaurant kitchen: food safety and flow Live model
You run the kitchen of a busy restaurant: a walk-in cooler, an ice-bath sink, a small blast chiller, a steam table and a line of cooks. Hot food must pass through the danger zone fast, cold food must stay cold, and tickets keep coming. This is an operations simulator — it is not a HACCP plan or legal advice.
What you will learn
Why depth decides how fast food cools (Newton’s law of cooling and the time constant).
The two-stage cooling rule and the hot- and cold-holding limits of the FDA Food Code.
How a walk-in’s heat balance and a line’s staffing (Little’s law) shape a service.
Simulator
Time 0 min
▶Cook working a ticket
‖Cook free
❄Cook tied up cooling food
♨Hot (≥ 57 °C)
⚠Food in the danger zone (5–57 °C)
✓Food at 5 °C or below
•Ticket waiting
Controls
Splits every batch still cooling into 5 cm hotel pans (about 1 cook-minute per kg).
Stir the batch in ice water (up to 25 kg). Stirring and re-icing take half a cook off the line.
Forced −5 °C air for up to 40 kg; its heat goes outside, not into the walk-in.
Each cook works one ticket at a time (12 min each).
Pull mise en place in planned trips and keep the strip curtain closed: fewer, smaller door openings.
Cooling air must be colder than 5 °C, or food cooled in the walk-in never gets there.
Food in the wells runs below the setpoint, more so when lids open often during a rush.
Throws out every batch that missed a cooling limit — or, if none did, the one with the most danger-zone time.
Indicators
Cooling time margin
360min
normal
Stored product in walk-in
3.0°C
normal
Ticket time
0min
normal
Hot-held food
58.2°C
warning
Batch core temperature
3.0 °C
Walk-in air
3.0 °C
Food out of compliance
0 kg
Food discarded
0 kg
Time in danger zone
0 min
C. perfringens growth potential
0.0 log
Stored product above 5 °C
0 min
Tickets in the kitchen
0
Cooks on shift
6
Walk-in compressor load
0.00 kW
Door infiltration load
0.00 kW
Heat from hot batches
0.00 kW
Trend
Crisis scenarios
Level 1 · A big batch of chili after service
Dinner service is over. A 24 kg pot of thick chili comes off the stove at 70 °C and has to be cooled for tomorrow. The usual habit is to slide the pot into the walk-in and go home. Cool it within the Food Code limits, keep its time in the danger zone short, and do not throw it away.
No food out of compliance at the end
Nothing discarded
Batch spends ≤ 100 min in the danger zone (5–57 °C)
Stored product never above 5 °C
Level 2 · Walk-in compressor fault mid-service
It is a busy evening and the walk-in compressor starts failing: only a tenth of its capacity is left until the technician arrives in about five and a half hours. An hour later a 15 kg pot of thick sauce comes off the stove and has to be cooled. Keep the stored food at 5 °C or below and cool the sauce on time.
Stored product never above 5 °C
No food out of compliance at the end
Nothing discarded
Level 3 · Dinner rush on the hot line
Four cooks handle the early evening easily. Then the rush hits: tickets more than double for three and a half hours. Keep ticket times short and the steam-table food hot, without overstaffing or cooking the held food to death.
Average ticket time ≤ 15 min during the rush
Hot-held food never below 57 °C
Average staffing ≤ 9 cooks
Average hot-held temperature ≤ 75 °C (quality)
Basis — the model behind the numbers
Every relation the simulator uses, with its source. Constants marked as assumptions are illustrative calibrations.
Newton’s law of cooling: the gap to the cooling medium shrinks exponentially.
The time constant grows with food depth and falls with a better cooling medium (ice water, forced cold air).
τ = ρc · L_c / U, 1/U = 1/h + L_c/(3k); L_c: pot 6 cm, 5-cm pans 2.5 cm; h: walk-in 20, ice bath 100, blast 50 W/m²K[6][3][4][5]Assumption: depths, heat-transfer coefficients, walk-in size, door and compressor loads, and cook times are illustrative values for a mid-size restaurant. The Biot correction is a first-order approximation and is rough for deep pots.
FDA Food Code two-stage cooling: 57 → 21 °C within 2 h, and to 5 °C within 6 h in total.
57 °C → 21 °C within 120 min; 57 °C → 5 °C within 360 min; else out of compliance → discard[1][2]
Holding limits and time-temperature abuse.
cold holding ≤ 5 °C; hot holding ≥ 57 °C; abuse = Σ Δt while 5 °C < T < 57 °C[1]
The Food Code cooling curve is itself close to a Newton curve with a time constant of about 1.9 h.
Food Code profile ≈ log10(T − 2.8 °C) falling 0.2312 per h ⇔ τ ≈ 1.9 h[3]
Growth potential of Clostridium perfringens, the classic hazard of slow cooling (cardinal temperature model).
μ(T) = μopt·(T−Tmax)(T−Tmin)² / {(Topt−Tmin)[(Topt−Tmin)(T−Topt) − (Topt−Tmax)(Topt+Tmin−2T)]}; growth = Σ μ/ln10 · Δt [log10][8][7]Indicator only: parameters fitted for cooked chicken, lag phase ignored, so it overstates growth. It is not a safety verdict.
Walk-in heat balance: walls, door openings, hot batches and stored product against the compressor.
n_door ~ Poisson(rate·Δt); C_air·dT/dt = UA·(T_kitchen − T) + n_door·E_door·(T_kitchen − T)/Δt + Q_batches + UA_p·(T_product − T) − Q_comp[9][6]Assumption: depths, heat-transfer coefficients, walk-in size, door and compressor loads, and cook times are illustrative values for a mid-size restaurant. The Biot correction is a first-order approximation and is rough for deep pots.
Ticket queue and Little’s law.
tickets ~ Poisson(λΔt); each station: one ticket, 12 cook-min (M/D/c); W = L / X, L = waiting + on stations, X = cook-min delivered in the last 30 min ÷ 12 per h (≥ 1/h; warm-up: opening steady state)[11][10]
Hot holding in the steam table.
T_hot → (setpoint − 0.2 °C × tickets served per h), τ = 30 min[1]Assumption: depths, heat-transfer coefficients, walk-in size, door and compressor loads, and cook times are illustrative values for a mid-size restaurant. The Biot correction is a first-order approximation and is rough for deep pots.
Other operating constants used by the model.
ρc = 3.9 MJ/m³K, c = 3.9 kJ/kgK · k: stock 1.2, thick sauce 0.5 W/mK, ×2 when stirred in ice · ice bath 0 °C, ≤25 kg · blast chiller −5 °C air, ≤40 kg · walk-in: air node 0.4 MJ/K, 300 kg stored product (3.6 kJ/kgK, 60 W/K to air), walls 10 W/K, compressor 3 kW · door openings 10/h + 0.8 per ticket/h, 2.7 kJ/K each; discipline: 40 % of openings, half the exchange (strip curtain) · ticket 12 cook-min · portioning 1 cook-min/kg · ice-bath stirring 0.5 cook per batch · throughput window 30 min (a station counts only when fully staffed) · kitchen 30 °CAssumption: depths, heat-transfer coefficients, walk-in size, door and compressor loads, and cook times are illustrative values for a mid-size restaurant. The Biot correction is a first-order approximation and is rough for deep pots.
Randomness: a seeded mulberry32 generator; distributions used — uniform, exponential (inverse CDF), normal (Box–Muller), Poisson (Knuth). The seed is shown and shareable.