Ray Swan_

Kitchen Kontrol

2025 · Product · Architect, Engineer & Technical Product Lead

AI that disappears into the work — staff finish logs with wet hands, bilingual, mid-service, because the kitchen can't pause for software.

01 · Problem

The constraint

Paper HACCP logs were eating shift time and still missing Texas TFER and USDA 7 CFR 210 requirements. Started at seven school cafeteria sites with no standardized training or digital audit trail. The product had to work on wet-hands, bilingual, multi-station shifts — and still produce audit-ready evidence. Independent product story; Ray owns the rights, but the full Azure production codebase did not transfer.

02 · Built

What shipped

Shipped Kitchen Kontrol into production and scaled 7→23 Sodexo school cafeterias: HACCP-mapped logs, planograms, and mid-service workflows. Public GitHub proof is kk-logger (Vite/TS HACCP SPA with TFER range validators and EN/ES) and MyKitchen (single-file HTML hub). MilkTrace-Voice (browser SpeechRecognition milk inventory) existed as a companion; it is not public. There is no public kitchen-kontrol repo. Gemini Live, Bedrock, SageMaker, Transcribe, Lex, and Rekognition are not in the public slice.

03 · Decisions

The path

  1. 01
    Watch the line, not the backlog

    Observed school nutrition shifts where paper HACCP and inventory ate shift time and still failed audits. Requirements came from wet-hands, bilingual, multi-station reality.

  2. 02
    Make HACCP a product, not a PDF

    Turned TFER temperature rules into digital logs with Ajv schemas, pass/fail gates, and corrective-action flows staff can complete during service.

  3. 03
    Ops platform, not a mock

    Built kitchen-kontrol as Express + Postgres: JWT, roles, phases, tasks, log templates/submissions, planograms, weekly compliance SQL, Docker, and CI.

  4. 04
    Evidence UX in TypeScript

    kk-logger is the HACCP SPA: traffic-light tasks, sanitizer/hot/cold/calibration validators, English/Spanish. SharePoint and SSO are written as plans, not wired.

  5. 05
    Voice where hands are full

    MilkTrace-Voice logs milk inventory with the browser SpeechRecognition API and a keyword/number parser. The hook is named Gemini Live; the runtime is not.

  6. 06
    Claim only what GitHub holds

    The full Azure production codebase did not transfer. Public proof is kk-logger and MyKitchen. Production results — scaled 7→23, reporting 30 min/day → 15 min/week, 95% compliance, 3% food waste — are the product story, not a public kitchen-kontrol repo.

04 · Architecture

How it is built

JWT-authenticated ops API

Express 5 with bcrypt login, JWT, rate limits, Winston, Sentry, and a transactional outbox. Postgres 15 with node-pg-migrate; sqlite3 for local/dev.

Ajv HACCP form engine

JSON Schema log templates rendered with React Hook Form. Equipment temps, food temps, planograms, sanitation, reimbursable meals.

Weekly compliance reports

CTE queries for log-template completion rates, date-range filters, and checkCompliance() on temp, planogram, sanitation, and meal records.

Planogram CRUD

Serving-line wells persisted through /api/planograms. Not computer vision. Rekognition is not in source.

Browser STT milk logging

MilkTrace-Voice: Web Speech API plus a deterministic parser for school, milk type, and quantity. Not Amazon Transcribe or Lex.

HACCP range validators

kk-logger encodes sanitizer ppm, cold holding, hot holding, and thermometer calibration limits with corrective-action UI. Offline sync is simulated, not a service worker.

05 · Surfaces

What it looks like to operate

Line operations HUD
Plate
Line operations HUD

Frontline kitchen as the product surface: inventory, HACCP, and alerts on the work staff already do.

Daily operations dashboard
Plate
Daily operations dashboard

Kitchen phases, role assignments, and quick actions for logs, reports, training, and planograms.

Daily logs
Plate
Daily logs

Digital HACCP and operations logs replacing clipboard temperature sheets.

HACCP temperature logging
Plate
HACCP temperature logging

Walk-in, freezer, and warmer logs with pass/fail status and corrective-action capture.

Regulatory compliance
Plate
Regulatory compliance

Texas TFER §228.75 and USDA 7 CFR 210 mapped into log types and range checks.

Planogram builder
Plate
Planogram builder

Serving-line planogram with pan wells. kitchen-kontrol persists planograms through the Express API.

Manager reports
Plate
Manager reports

Weekly log-status completion rates from Postgres CTE queries in kitchen-kontrol.

Training center
Plate
Training center

kitchen-kontrol's own required-training tracker — course duration, completion state, and a per-staff progress count. Not MyKitchen; no rewards/points system exists in source.

Capability board (vision, not GitHub)
Plate
Capability board (vision, not GitHub)

Product-vision board for voice, assistant, forecast, and vision. Those AWS services are not in the public GitHub slice.

06 · Standing

What this proves

Proves: I can ship an independent ops product into real kitchens — scale it, measure it, and show the public slice without pretending the full codebase is on GitHub.

Scaled 7→23 Sodexo school cafeterias. Reporting 30 min/day → 15 min/week; compliance 95%; food waste 3%. Public proof is kk-logger (and MyKitchen if linked) — not a kitchen-kontrol GitHub repo, not MilkTrace-Voice, and not the unrecovered Azure codebase.

Production ops product scaled 7→23 sites (30 min/day → 15 min/week reporting, 95% compliance, 3% food waste); public GitHub slice is kk-logger plus MyKitchen.

kk-logger (public)

Vite/TypeScript HACCP SPA with TFER validators — public proof slice

Open ↗
MyKitchen (public)

Single-file HTML ops hub prototype

Open ↗
Ops platform (private)

Full kitchen-kontrol Azure/Node product — not in a public repo

Private — case-study evidence only
MilkTrace-Voice (private)

Browser SpeechRecognition milk inventory logging

Private — case-study evidence only
01 / 06 · Problem