Built for UAE & Saudi meal-plan kitchens

The operating system for meal-plan kitchens.

تغيير واحد يُحدِّث كل شيء.

Production, ingredients, labels, delivery and billing — resynced from a single customer change. The Excel-and-WhatsApp desync that breaks kitchens around 200–300 meals a week, gone.

From AED 599/month · unlimited subscribers · everything included · cancel any time

mealroh — kitchen OSlistening

Change · WhatsApp

إيقاف مؤقت — مسافرة الأسبوع الجاي 🙏11:48 PM ✓✓
Sara A. · 10 meals / weekACTIVEPAUSED
  • SubscriptionPAUSED
  • Production sheet−10
  • Ingredients (BOM)re-exploded
  • Labels−10
  • Driver manifeststop removed
  • Analyticsrecomputed

one atomic event · six modules · zero re-typing

01 — Where it breaks

The same customer lives in six files. None of them agree.

OrderMaster_FINAL_v7 (3).xlsxedited 11:52 PM
Fatima H.10 mealsSun–Thu
Sara A. ⚠10 meals15??
Omar E.20 mealsSat–Wed
WhatsApp · 11:48 PM
Sis please make it 15 meals from Sunday 🙏 also no mushrooms11:48 PM ✓✓
Label 04/10 — printedstale

Chicken Kabsa — Sara A.

412 kcal · P 38g · C 30g · F 14gcontains: mushrooms — printed from last week's sheet

meals / week — where every kitchen breaks

Every pause, skip, upgrade and “no mushrooms” is a WhatsApp message someone re-types into a CRM, an order master, a production sheet, a purchasing sheet, a label file and a delivery list. At this volume, a human being becomes the sync engine.

Humans drop packets. The result is wasted food, missed cutoffs, silent churn — and the one that keeps owners up at night: a wrong allergen label.

02 — How it works

One change. Everything updates.

The same flow whether the change comes from your staff, the customer's app, or their WhatsApp: recorded once, audited once, broadcast to every module on the event bus. Nothing is re-typed, so nothing drifts.

Staff
Web app
WhatsApp
SubscriptionPaused
Production−10 portions

Cook counts recompute

Inventoryforecast updated

Recipe BOM re-explodes

Packing & labels−10 labels

Labels rebuilt per box

Deliverystop removed

Driver manifest updates

Notificationsconfirmed

Customer told it landed

Analyticsrecomputed

MRR & meals/week

propagating…

03 — The product

Not a mockup. One kitchen, one Thursday morning.

Every screen below is the real admin app, running live against a demonstration kitchen we keep loaded for exactly this — 30 customers, 27 subscriptions, 63 meals to cook, 27 stops to drive. Nothing here is drawn in Figma. The only thing invented is the kitchen.

Production

Know what the kitchen needs before the kitchen starts.

One cook list for the day, aggregated across every customer and every plan — here 63 meals across 14 distinct recipes, each named in English and Arabic. Two portions are flagged before anyone lifts a pan: one customer who reacts to fish, one who reacts to dairy.

Mealroh production sheet for 23 August 2026: an allergen-conflict banner naming two customers, counters reading 63 meals to produce and 14 distinct meals, and a bilingual cook list with per-meal quantities and portioned counts.

Subscriptions

Every plan, pause and upgrade in one place.

27 live subscriptions on 10- and 15-meal plans. Paused customers sort to the top instead of being buried — four of them here. Change one and production, purchasing, labels, delivery and billing all move with it, in the same transaction.

Mealroh subscriptions screen listing 27 subscriptions with customer names, 10 or 15 meals per week, paused and active status chips, and delivery-day counts.

Packing & labels

Labels that carry the allergen warning to the box.

63 printable labels for the day, each carrying macros, allergens and a use-by date. The two conflicted portions are called out above the list, so the warning survives the trip from the production screen to the packing bench.

Mealroh packing screen showing 63 meal labels for 23 August 2026 with customer, meal, macros, allergens and use-by columns, above a warning that two boxes must not be packed as-is.

Delivery

Stops grouped into routes, by the areas each driver covers.

27 stops split across 2 routes for the day, each stop carrying its item count, its assigned driver and an exact map pin — so a driver opens navigation instead of calling the kitchen for directions.

Mealroh routes screen for 20 August 2026 showing 27 stops across 2 routes, Dubai area chips, per-stop addresses, exact-pin badges, item counts, driver assignment and delivery status controls.

Driver handover

The driver sees their own stops, and closes them out.

The same system, signed in as a driver: only that driver's stops for the day, in route order, each with the customer, the address and how many boxes to hand over. Navigate opens the phone's map. Delivered or Failed closes the stop, and the kitchen sees it immediately.

Mealroh driver stop list for 20 August 2026 showing six numbered stops with customer names, Dubai addresses, item counts, pending status, and Navigate, Delivered and Failed actions on each row.

Analytics

This morning's kitchen, and this month's numbers, on one screen.

Cook, pack and deliver progress for today, what needs attention, and revenue computed from the same records the kitchen runs on — AED 10,400 MRR, 23 active subscriptions, 270 meals a week. There is no second spreadsheet to reconcile it against.

Mealroh dashboard showing today's cook, pack and deliver progress, a needs-attention panel, and headline figures: AED 10,400.00 MRR, 23 active subscriptions and 270 meals per week.

04 — The customer

Your customers stop asking you to change things.

Travelling next week, off dairy since Tuesday, wants the salmon instead of the chicken — today each of those is a message someone has to read, remember and re-type into five files. In Mealroh the customer does it themselves, and the kitchen sees the result already applied.

Mealroh customer app Today screen: a green card reading Next delivery, Today, Thursday 20 August, with Locked and Mirdif chips, a 2 of 10 meals picked prompt, and a row of upcoming delivery dates marked scheduled.
Next delivery, and what is coming after it.
Mealroh customer app pause sheet titled Pause your plan, offering a Pause until date field, a Save button, and a Pause until I resume option.
Pause until a date, or until they say otherwise.
Mealroh customer app meal picker showing 2 of 10 meals picked, running totals of 390 kcal and 22g protein, and meal cards with calories, macros and a dairy allergen tag.
Pick the week, with macros and allergens attached.
  • Pause until a date, or until they resume
  • Skip a single delivery
  • Pick this week's meals
  • Set allergens and dietary needs
  • Update address, notes and map pin
  • See every upcoming delivery

Every one of those changes lands as the same domain event the admin raises — so the cook list, the ingredient forecast, the labels, the driver manifest and your live numbers all move together, without anyone re-typing a thing.

Mealroh customer app profile screen showing a 10 meals per week active plan with Pause week and Skip a delivery buttons, and rows for goal, allergies and dietary needs, and delivery address.
One screen, every control the list above describes.

05 — The shift

The kitchen stops re-typing itself.

Before: people are the synchronization layer.

Sheet3!D14

Sara — 15 meals?

out of date

WhatsApp · 11:52 PM

غيّري خطتي إلى ١٥ وجبة

unread

labels_v3.pdf

PLAN: 10 meals

stale print

Whiteboard

tell Imran re: JVC stop

verbal only

one event

After: Mealroh is the synchronization layer.

Sara Al Mansoori10 → 15 meals
  • Productionin sync09:14:02
  • Purchasingin sync09:14:02
  • Labelsin sync09:14:02
  • Deliveryin sync09:14:02
  • Billingin sync09:14:02

one timestamp on every row — the change landed everywhere, or nowhere

06 — Built for the Gulf

Not a Western SaaS with a translation file.

The region isn't a locale setting. It changes what a correct system does — when the week ends, how the day is shaped, what an auditor will accept, and which language the kitchen actually runs in.

Seasonal demand

Ramadan flips the shape of your day.

Mornings collapse, iftar surges. Daily demand profiles are configured per season and follow the Hijri calendar — never one hardcoded production pattern.

suhoor14%
iftar78%

VAT · ZATCA

Invoices an auditor accepts.

AE 5% / SA 15%, a scannable ZATCA QR on every invoice, and a hash chain linking each one to the last — so history cannot be quietly edited.

INV-2026-0412
→ sha256:9f2c…a1
INV-2026-0413 ✓ chain intact

Calendar

Fridays, Eids and holidays.

The delivery calendar knows the Gulf week and the Hijri holidays — recurring Eids included — and compensates skipped days.

Fri offEid al-FitrHijri-aware

Money

Amounts that add up.

Every amount is stored as integer minor units with an ISO currency — no floating-point fils, ever.

AED 7,188.00 → 718800 fils (int)

Language

Arabic is structural, not a layer.

Every screen, label, invoice and message exists in Arabic and English from commit one — with the layout mirrored, not just the words swapped.

See it below ↓

07 — Arabic

Arabic, properly.

One component, two directions. Switch the language and watch the layout mirror — not just the words.

Sara Al Mansoori

Subscription · kitchen view

Active

Plan

15 meals / week

Next delivery

2026-08-23

Delivery days

30

This week's selection

MealQtyStatus
Grilled Chicken & Rice3Confirmed
Baked Shakshuka2Confirmed
Garlic Prawn Rice1Confirmed
PauseSkip a daySwap mealUpgrade planManage subscription

Localisation here is structural. The same markup produces both panels; only the direction and the strings differ.

dir
ltr
text-align
start → left
inline order
natural
font family
Poppins
numerals
Western (as shipped)

The same rule holds off-screen: labels, invoices and WhatsApp messages are generated from the same keys, in the language the customer actually reads.

08 — WhatsApp

A message is a change. Not a to-do.

Connect your kitchen's WhatsApp number and a customer's message becomes a command, the command becomes one event, and the kitchen is updated by the time anyone would have read it — with nobody retyping the change.

Inbound · WhatsApp09:14:01

إيقاف مؤقت — مسافرة الأسبوع الجاي

+971 5• ••• ••12 · ar

Parsed

customer
Sara Al Mansoori
intent
pause
plan
10 meals / week
effective
today
resumes
on RESUME

Also over WhatsApp

  • Pauseإيقاف مؤقت
  • Resumeاستئناف
  • Skip a dayتخطي يوم
  • Pick mealsاختيار الوجبات
  • Plan statusحالة الخطة
  • This week's menuقائمة الأسبوع
SubscriptionPausedone transaction · 09:14:02
  • Subscriptionpaused, change auditedsynced
  • Productionpaused days come off the cook listsynced
  • Inventoryingredient forecast re-explodedsynced
  • Packinglabels and pack counts revisedsynced
  • Deliverymanifest and stop list updatedsynced
  • Analyticsactive subs, MRR and meals/week recomputedsynced

the customer gets one reply, in Arabic — the kitchen gets six updated systems

09 — Book a demo

See it run on your kitchen’s numbers.

Thirty minutes, your own plans and meal counts on the screen, and a straight answer on what it would cost you. No slide deck.

We reply within one business day. Your details go to our team and nowhere else.

Stop being the sync engine.
Run the kitchen.

مطبخك جاهز خلال دقائق — بالعربية والإنجليزية.