Hospitality procurement is one of the last high-friction operations in the food and beverage industry. A busy kitchen manager runs orders across five or six different suppliers -- each with their own ordering portal, their own CSV format, their own cutoff times. Some still take orders by phone. Others only accept faxed purchase orders. A significant portion of orders get emailed back and forth, manually re-entered, and confirmed by a chain of replies that can span days.

Orders Made Simple (ordersmadesimple.com) was built to replace all of that with one unified platform. Venues order from every supplier in a single basket. Orders route automatically to each supplier in their required format. Spending is tracked in real time. Invoices are captured from a phone camera. Recipes get costed automatically from live supplier prices.

We built the platform end to end -- from the mobile app that kitchen staff use to place orders on the floor, to the serverless infrastructure that routes those orders to supplier systems across the UK, to the AI layer that reads emailed invoices and adds items to the platform automatically.

5
Platform components
80+
Lambda functions
13+
Supplier integrations
42
Redux slices (dashboard)

The Problem: Procurement That Breaks at Volume

A restaurant group with 10 venues and 6 suppliers per venue is managing 60 supplier relationships at once. Each supplier has different ordering windows, different minimum order values, and different preferred contact channels. A head chef or purchasing manager trying to stay on top of this without a platform is doing it through a mix of WhatsApp messages, phone calls, email threads, and memory.

The failure modes are predictable: missed orders, duplicate orders, price discrepancies that nobody catches until the invoice arrives, no visibility into whether spend is in line with budget, and no way to cost a menu item against live supplier prices without manually pulling data from five different portals.

Suppliers face the mirror version of this problem. Their operations teams receive orders through half a dozen channels, manually enter them into their warehouse management systems, and deal with a high rate of errors from phone and email orders that get misheard or misread.

Orders Made Simple resolves both sides: venues get one place to order from all suppliers, and suppliers receive orders automatically in exactly the format their systems expect.

Five Components, One System

The platform is not one application -- it is five components that each serve a distinct role in the procurement lifecycle. We designed and shipped all of them.

  • Mobile app (React Native / Expo -- iOS and Android): The primary interface for kitchen staff and venue managers. Browse supplier catalogues, build orders, submit across multiple suppliers in one checkout, capture invoices by photo, track spending, cost recipes, and manage supplier relationships -- all from a phone on the kitchen floor.
  • Web dashboard (React + Ant Design): The full operations interface for venue admins, head chefs, and finance teams. Complete order history, gross profit calculator, Xero accounting sync, stock takes with valuation and wastage reports, credit note management, supplier analytics, and a receipting workflow for verifying deliveries against purchase orders.
  • Supplier portal (React): A dedicated interface for supplier administrators. Incoming order management, AI co-pilot for processing manually submitted orders, customer analytics, incentive scheme management, price file uploads, and marketing tools for reaching venue customers.
  • Backend API (AWS Lambda + Serverless Framework -- Node.js 20): The core business logic layer. 80+ Lambda functions handling order lifecycle, product catalogue management, venue-supplier relationships, subscription billing via Stripe, Xero integration, Typesense search indexing, invoice workflows, and 8+ scheduled background tasks.
  • Integrations service (AWS Lambda -- Node.js 20): A dedicated serverless microservice that routes confirmed orders to supplier systems via SQS queues. Each supplier has an isolated Lambda function handling the format and protocol their system requires -- GS1 XML over SFTP, CSV to S3, HTTP POST, or fallback email.

AI Order Capture: GPT-4 and OCR on Inbound Supplier Emails

One of the highest-value features in the platform is the AI order capture system in the supplier portal. Many venues still send orders by email -- a line-item list pasted into the body of a message, or a PDF attachment. Before this feature, supplier operations teams read those emails and manually entered each item into the platform.

The AI co-pilot automates that entirely. When a venue order arrives by email:

  1. The Express server processes the inbound message using IMAP and Mailparser
  2. If the order is a PDF attachment, Tesseract OCR extracts the raw text
  3. The raw content is sent to GPT-4 with a structured prompt that maps the unstructured text to line items: product name, quantity, unit, price if present
  4. The parsed order is created in the platform and surfaced to the supplier operations team for review in the AI co-pilot interface before final confirmation
  5. Errors are tracked, notifications fire to the operations team, and a full edit flow lets the supplier correct any parsing discrepancies before the order is locked
Why this matters: A supplier receiving 200 email orders per week was spending roughly 400 staff-hours per month on manual data entry. The AI co-pilot reduces that to a review-and-confirm workflow. The human stays in the loop for quality control -- the manual entry work disappears.

Real-Time Basket Synchronization Across Devices

In a busy kitchen, multiple team members may be adding to the same order from different devices at the same time. A head chef adds proteins from their phone while a sous chef adds dry goods from a tablet. Without real-time sync, those changes would overwrite each other and orders would be lost.

The platform handles this with Socket.IO running on the Express server with a Redis adapter for multi-instance scaling. Every basket event -- item added, quantity updated, item removed, order confirmed -- broadcasts to all connected clients on the venue's socket room. The basket state stays consistent across devices without any manual refresh or conflict resolution required from users.

Redis pub/sub ensures this works correctly even when the Express server runs as multiple PM2 instances behind a load balancer. Events published on instance A are received by clients connected to instance B with no additional application logic.

Supplier Integrations: 13 Distributors, Every Format They Require

The integrations service is the part of the platform that makes it genuinely useful for large hospitality groups. An order placed in the app must arrive at the supplier's warehouse system in exactly the format that system expects -- and every major UK food distributor has a different requirement.

Supplier Format Protocol Standard
Brakes XML SFTP (Blujay B2Bi) GS1
Bidfood XML S3 upload Custom
FreshDirect XML SFTP (FirstB2B) GS3.2
Grahams CSV HTTP POST + S3 Custom
Gilmours CSV S3 upload Custom
Harvey and Brockless XML SFTP (TrueCommerce) Custom
7 additional suppliers Various SFTP / S3 / Email / API Supplier-specific

Each integration handler is an isolated Lambda function triggered by a dedicated SQS queue. This isolation means a failure in one supplier's integration cannot affect order delivery to any other supplier. Every handler includes fallback logic: if the primary transmission fails -- SFTP timeout, API error, malformed response -- the system falls back to sending the order by email and logs the failure for investigation.

For Brakes, the UK's largest food service distributor, orders are transmitted as GS1-format XML files over SFTP to Blujay B2Bi. For FreshDirect, the format is GS3.2 XML over SFTP to FirstB2B. Getting these integrations right required working directly with each supplier's EDI documentation and test environments -- not an off-the-shelf connector.

Authentication: AWS Cognito with Multi-Region Migration

The platform's original Cognito user pool was in us-east-1. As the platform scaled and compliance requirements pointed toward EU data residency, we migrated to a new pool in eu-west-2 (London). The challenge was doing this without any disruption to existing users.

The migration layer is built into the login flow itself. When a user authenticates, the system tries the new eu-west-2 pool first. If the user is not found, it silently retries against the legacy us-east-1 pool. On successful legacy authentication, it automatically migrates the user to the new pool via a dedicated migration endpoint, then re-authenticates them in eu-west-2 -- all within the same login request. Existing users never saw a login screen they had not seen before.

Role-Based Access Control Across Venue and Supplier Tiers

Not everyone who uses the platform should see the same data or have the same controls. A kitchen chef placing orders does not need access to the gross profit calculator or the Xero integration. A supplier's marketing team does not need access to customer invoice data.

The permission system covers two tiers:

  • Platform roles: Platform Admin, Supplier Admin, TFR Admin -- each routed to a different interface with appropriate feature access.
  • Venue roles: Venue Admin (full access), Head Chef / GM (purchasing and reporting, no billing), Chef (ordering and statements), Order Only (basket only). Permissions are enforced at the route and component level across both dashboard and mobile.

A venue admin can invite team members, assign roles, and see the full financial picture including gross profit and Xero sync. A chef can place orders and check their order history. The right people have the right access -- no custom permission requests, no workarounds.

Platform Screenshots

The following screenshots are from the live production platform.

Mobile App (iOS / Android)

OMS mobile app - home dashboard
Home dashboard -- venue spend summary, gross profit indicator, and quick-access actions for placing orders and adding suppliers.
OMS mobile app - supplier catalogue
Supplier catalogue -- browse and search products by supplier with favourites, default quantities, and last-ordered indicators.
OMS mobile app - basket and checkout
Basket screen -- items grouped by supplier with delivery day badges, quantity controls, and a single checkout across all suppliers.
OMS mobile app - spend analytics
Spend tab -- weekly gross profit tracking with daily sales breakdown, giving venue managers real-time cost visibility from their phone.
OMS mobile app - user role permissions
Role permissions matrix -- Admin, Head Chef/GM, Chef, and Order Only roles with feature-level access control across ordering, reports, invoices, and settings.

Web Dashboard

OMS web dashboard - orders
Orders dashboard -- full order history navigable by date, with per-supplier purchase orders, line items, VAT breakdown, and PDF download.
OMS web dashboard - goods receipting
Goods receipting -- verify deliveries against purchase orders across all suppliers, with invoice upload and auto-send to accounting platforms.
OMS web dashboard - supplier management
Supplier management -- active supplier list with delivery days, order cut-off times, minimum order values, and price file status per supplier.
OMS web dashboard - Xero integration
Xero integration -- sync OMS orders and invoices directly to Xero, with tracking category mapping and multi-venue account linking.
OMS web dashboard - recipe management
Recipe management dashboard -- build menus, track GP% per dish, manage allergen grids, and see ingredient costs update in real time from supplier price files.

Full Tech Stack

Layer Technology
Mobile React Native, Expo SDK 53, Redux, Socket.IO, Stripe, TalkJS, Cloudinary, Firebase, Sentry
Dashboard React 17, Ant Design 3, Redux Toolkit, Nivo Charts, jsPDF, Socket.IO, Xero API, TalkJS
Real-time Node.js Express, Socket.IO, Redis (multi-instance pub/sub), OpenAI GPT-4, Tesseract OCR, IMAP
API AWS Lambda, Serverless Framework, Node.js 20, MongoDB, Typesense, Stripe, AWS Cognito, SES, S3
Integrations AWS Lambda, SQS, SFTP, S3, XML (GS1 / GS3.2), CSV, HTTP -- 13 supplier-specific handlers
Auth AWS Cognito (eu-west-2 primary, us-east-1 legacy with auto-migration)
Infra AWS EC2 / ECS, CloudFront, PM2, Bitbucket Pipelines, Sentry

What Shipped

  • Production iOS and Android mobile app with camera-based invoice capture, real-time basket sync, and push notifications
  • Full-featured web dashboard with gross profit calculator, receipting workflow, stock takes, credit note management, and Xero integration
  • Dedicated supplier portal with AI co-pilot for processing emailed orders using GPT-4 and OCR
  • Serverless backend with 80+ Lambda functions covering the full order, product, venue, billing, and notification lifecycle
  • Direct integrations with 13+ major UK food distributors using each supplier's required format and transmission protocol
  • Real-time basket synchronization across devices via Socket.IO and Redis
  • Role-based access control across platform, supplier, and venue tiers
  • AWS Cognito migration from us-east-1 to eu-west-2 with zero disruption to existing users
  • Recipe management with automatic cost calculation from live supplier prices and allergen grid generation
  • Weekly standing orders, spending analytics, and subscription billing via Stripe

Business Outcome

The platform gives venue operators a single interface to manage procurement across their entire supplier network -- without logging into six different portals, making phone calls, or chasing email confirmations. Every order routes automatically to the right supplier system, in the right format, without any manual handling.

For suppliers, the platform removes the operational cost of processing manually submitted orders. The AI co-pilot handles inbound email orders without staff needing to re-enter line items. Order accuracy improves because the parsed output is reviewed and confirmed before it becomes an order -- not entered by hand from a phone call or a scanned PDF.

For leadership, spending data that previously lived in spreadsheets and email threads is now visible in real time. Gross profit tracking, category breakdowns, price change alerts, and supplier analytics give procurement teams the data they need to negotiate better terms and control costs -- without waiting for an accountant to compile a report.

This is what a modern B2B procurement platform looks like: end-to-end automation from basket to supplier warehouse system, AI where the manual work is highest, and data that surfaces to the people who need it in real time.