A marketplace rebuilt, and menus that load themselves.
A meal-plan marketplace in Dubai asked us to recreate and improve its app and back office, and to work towards menus that upload automatically from the kitchens it works with. We are building the new platform alongside the system the business runs today, which stays live until the switch-over. The client has agreed to this work being shown; their name, their kitchens and their customers are not.
The problem
Menus typed in by hand, and a panel that only hid buttons.
The marketplace's menus were keyed in by hand, and its old admin panel hid buttons from people rather than enforcing what each role could do.
The brief was clear: menus from a known source, kept current; kitchens without a website upload by link; gaps emailed back to the kitchen; every kitchen checks its own menu; and dish photos kept uniform.
What we built
A back office with real roles
Four roles enforced on the server, not just hidden in the interface, across dashboards, kitchens, menus and orders, with an audit log of every change and sixteen data-quality checks.
Menus that load themselves
Each kitchen's menu comes from a known source — its website, an upload or a link — and is read into weeks, days, meals and dishes, with nutrition, by AI.
Kitchens in the loop
A portal where kitchens see each menu and can object, with anything missing emailed back to them.
A customer app
Plan search, a price builder, the real menu before choosing dates, a basket across kitchens, and pause, skip and swap, with a delivery calendar that knows every cut-off.
Health, on the phone
A daily score with meals logged from deliveries, alongside sleep, glucose and fasting, kept on the phone.
A website
The plan builder with menu previews, a calendar and a basket, and an account area to skip, pause, resume and reorder plans, covered by 460 tests.
A running app
A GPS run tracker with a voice coach, splits and crash-safe recording, heat advice for Dubai and checked routes. Group runs are in progress.
A customer API
Email-code and Sign in with Apple, a wallet, checkout priced on the server, and account deletion, with 105 unit tests. In progress.
Under the surface
The engineering
- 01
The menu collector honours robots.txt, skips pages that have not changed, and reads PDFs, photos, spreadsheets and web pages.
- 02
A six-rule check decides whether an imported menu could publish itself. For now the default is review by a person, side by side with the source.
- 03
A week built by hand, or approved by its kitchen, is never overwritten by an import, and no dish photo is ever made by AI.
- 04
The old system's data comes across through a read-only extractor, and an importer that anonymises customers on the way in.
- 05
Staff sessions are signed and last twelve hours, customer tokens are stored hashed, and one-time codes are HMACs.
- 06
Orders are priced on the server and safe to retry, so a repeated request never creates a second order.
- 07
The menu catalogue is served with ETags and compression, taking it from 6.3 MB to 0.6 MB.
Shown with permission
The client has agreed to this work being shown without their name, their kitchens or their customers. The new platform runs as a demonstration with anonymised customers while the business's current system stays live, and none of it is on the App Store yet.
Services this drew on
More work
- Our productVizi PlayerA media player for iPhone and iPad that plays the playlist a person already has. It comes with no content of its own.
- Our productLinkACodeTurns a server address into a short code, like AB123456. Give out the code instead of the address.
- Our productVantanAn iPhone and iPad app for watching the IP cameras you already own, privately: the video goes from the camera to your phone and nowhere else.
- Our productVVS PanelOur foundation for client back offices: a React design system for admin panels built around each client's own data and roles.
- Our own toolFrontalA private AI operations assistant: mail, renewals, deadlines and system health in one phone app, with a local AI model that sorts, drafts and flags.
Start a project
Tell us what you are building.
A few lines about the problem is enough to start. We reply within one business day.
