Skip to content

Software Showcases

Menu management

MenuMaestro

Light up your menus.

MenuMaestro is a head-office portal for multi-brand restaurant groups. HQ builds country menus by store type, costs recipes against ingredient catalogues, and only pushes approved releases to stores through websites, apps and other channels.

Stores do not log in. Publishing is how menus reach them. Every change to items or recipes follows a configurable approval workflow, and a separate publish step decides what channels actually see.

Franchise and independent restaurant groups that need one controlled source of truth for menus across countries, currencies and store formats.

Product showcase

MenuMaestro in action

Full product showcase — title cards, live app footage, chapter beats and original score. Trusted access, menus and tags, bulk replace, channels, approvals, publishing and what-if costing.

Core pillars

  • Country menus

    One menu per brand, country and store type — priced in local currency, with independent items and recipes after copy.

  • Approval workflows

    Multi-stage sign-off by named groups. Changes stay pending until the last stage is approved.

  • Food costing

    Recipes, ingredient costs and what-if scenarios so price and margin decisions are made before go-live.

  • Channel publish

    Releases, rollback, scheduled go-live, pull feeds, signed webhooks and JSON/CSV export.

Capability map

Full functionality

Every major area of MenuMaestro, from country menus and costing through approval workflows to channel delivery.

  • Countries, store types & country menus

    Register countries with currency, define store types per brand, and maintain an independent menu for each country and format.

    • Copy a menu within a brand to seed a new country or store type, then adjust prices to the new currency
    • Sit Down, On the Move and Standard formats share brand-level workflows but keep separate menus
    • Items, prices and recipes never leak between country menus once they are independent
  • Store registry

    Each store belongs to one brand, country and store type for life, and publishes that menu — including any store-specific overrides.

    • No store accounts: head office owns the portal
    • Stores cannot invent local items; add the item to the country menu instead
    • A store with no matching country menu has nothing to publish
  • Change requests

    Adding, changing or removing an item — or editing a recipe — creates a change request. Nothing updates the working menu until the workflow completes.

    • Only one pending request per item (duplicate requests are refused)
    • Stale requests are blocked if the live item changed after the request was raised
    • Requesters are never allowed to approve their own change
  • Approval workflows & groups

    HQ configures named approval groups and ordered stages — any-one or all-members — per brand or for all brands.

    • A brand uses its own active workflow, or the all-brands fallback
    • In-flight requests keep a snapshot of their stages when the request started
    • Group membership is live, so new members can approve pending stages immediately
  • Approvals inbox

    Approvers see every request waiting on them, with stage history, who decided and who is still outstanding.

    • Approve or reject several requests at once with a shared comment
    • Notifications when a stage reaches you, and when your request moves on
    • Rejections require a comment so the trail stays clear
  • Recipes

    Every country-menu item can carry a recipe: ingredients with quantity and unit, maintained through the same approval path.

    • Units include g, kg, ml, l, each, slice, tsp, tbsp, cup and portion
    • Recipes are internal — never part of a release, feed, webhook or export
    • A recipe-only change leaves nothing to publish to channels
  • Ingredient cost catalogue

    HQ keeps a cost price per ingredient per country, in that country's currency, with unit conversion for food-cost calculations.

    • Recipes in g cost against kg prices; ml against l; volume spoons against ml or l
    • Ingredients used without a usable cost are flagged so food cost is not understated
    • Configurable food-cost warning threshold (default 60%)
  • Bulk ingredient replace

    Rename an ingredient across every editable menu you can access, with a preview of food-cost before and after.

    • Both names come from the country ingredient catalogue — no free text
    • Review impact in What-if, or submit one Recipe change request per selected item
    • Items that already have a pending change are skipped safely
  • What-if scenarios

    A private sandbox over one country menu for price, recipe and ingredient-cost experiments before anything hits approval.

    • Only the creator can see a scenario; the live menu never changes from it
    • Trial ingredient costs, single-item edits, or apply all costs +10%
    • Promote chosen differences into ordinary change requests when ready
  • Publishing & releases

    Approved working-menu changes only reach channels when HQ (or an approved publish request) creates a release.

    • Each release is an immutable snapshot with a content hash, country and currency
    • Schedule go-live, skip stores with no changes, and roll back to an earlier release
    • Non-HQ publish requests wait for HQ approval; the requester cannot self-approve
  • Feeds, webhooks & export

    Register each website or app as a channel with its own API key, optional brand scope and webhook endpoint.

    • Pull feed with ETags for store menus, brand menus and releases since a point in time
    • Signed webhooks on publish with retry backoff and delivery inspection
    • Download any release as JSON or CSV when a system cannot integrate yet
  • White-label appearance

    Customer organisations can theme the head-office portal with their own product name, colours and logo. MenuMaestro branding remains the default until HQ overrides it.

    • Primary and accent colours drive buttons, tabs, gradients and login chrome
    • Optional logo replaces the MenuMaestro mark on sign-in and in the shell
    • HQ can restore MenuMaestro defaults in one step
  • Sign-in & access control

    JWT password sign-in with optional MFA, Microsoft Entra ID SSO, and role-based access across HQ, approvers and brand managers.

    • Email OTP or authenticator MFA for password accounts
    • Entra SSO trusts Entra MFA and matches users by email
    • API keys are stored as hashes; webhook secrets are encrypted at rest
  • Audit trail

    Every approval decision, publish, schedule change and rollback is recorded so finance and operations can explain what went live.

    • Release pages show what changed versus the previous release
    • Delivery history for webhook attempts
    • Full audit log for HQ review

Roles

Who uses the portal

Head office runs the system. Approvers and brand managers work inside the same portal with scoped permissions. Stores never sign in.

  • HqAdmin

    All brands

    Request any change; publish directly; approve publish requests; manage brands, countries, menus, stores, users, channels, workflows and the audit log.

  • MenuApprover

    One brand, or all brands

    View menus; request publishes for HQ approval; approve menu changes when in the relevant approval group.

  • BrandMenuManager

    One brand

    Request changes to that brand's country menus and recipes; manage categories; request publishes for the brand's stores.

How it runs

From structure to publish

  1. 01 · Structure

    HQ registers countries, store types and country menus, then attaches stores to the right brand, country and format.

  2. 02 · Change

    Editors request item, price or recipe changes. Requests move through the brand's approval stages until the working menu updates.

  3. 03 · Cost

    Optional what-if scenarios and ingredient catalogues show food-cost impact before changes are promoted into requests.

  4. 04 · Publish

    A release snapshots selected stores. Channels pull the feed or receive a signed webhook; older releases can be rolled back.

Stack

Built on

API
ASP.NET Core Web API, EF Core, Identity + JWT, optional Microsoft Entra ID SSO
Database
SQL Server in development and production; SQLite for automated tests
Web
React, TypeScript, Vite, MUI, React Router and TanStack Query
Delivery
Local or shared image storage, pull feed with ETags, HMAC-signed webhooks, JSON and CSV export