Menu - Menu Engineering
Updated Wed 28 Oct 2026
Running the report
Report options
Select your start date
The first day to include. It starts as today's date. The time of day is ignored: the whole day counts, from midnight.
Select your end date
The last day to include. It starts as today's date. The whole of this day counts too. If you pick the two dates the wrong way round, the report swaps them for the figures, so nothing goes missing.
Hide items with no sales or no recipes
A tick box, ticked by default. Ticked, the last section of the report (Cannot be classified) is hidden, which keeps the report short. Untick it to see every item on your menu that did not sell, sold for nothing, or has no costed recipe. The four groups above it are the same either way.
The report at a glance
The brand name and logo are at the top. The date line shows the whole month name when you chose a full calendar month, and otherwise the two dates, for example For 1 Sep 2026 to 15 Sep 2026. Every day is a calendar day, from midnight to midnight in your brand's local time.
- Selected parameters: the option you chose, on the first page only.
- The quadrant map: four boxes showing how many rands each group sold and earned.
- The item lists: Stars, Puzzles, Plowhorses and Dogs, each with its items, a bar, net sales and gross profit.
- Cannot be classified: items that cannot be placed, and why (only when you untick the option).
Selected parameters
A small panel under the heading, on the first page only. It repeats the one option that changes what the report prints.
| Selected parameters | |
|---|---|
| ITEMS WITH NO SALES OR RECIPES | Hidden |
It says Hidden when the tick box is ticked and Shown when it is not.
The quadrant map
The four boxes at the top of the first page summarise the whole report. Across the page, gross profit percentage goes from lower on the left to higher on the right. Down the page, value sold goes from more at the top to less at the bottom.
| LOWER GROSS PROFIT % | HIGHER GROSS PROFIT % | |
|---|---|---|
| MORE VALUE SOLD | Plowhorses High net sales, low GP% - reprice or re-engineer the recipe Net sales: R51 100 GP: R24 375 (48%) | Stars High net sales, high GP% - protect these Net sales: R64 735 GP: R48 492 (75%) |
| LESS VALUE SOLD | Dogs Low net sales, low GP% - candidates for delisting Net sales: R4 550 GP: R1 775 (39%) | Puzzles Low net sales, high GP% - promote, or move on the menu Net sales: R11 350 GP: R8 157 (72%) |
1 Net sales and GP
Each box shows the net sales of every item in that group (what you actually sold, after discounts, without tax), the gross profit they made in rands, and that profit as a percentage of the sales in brackets. In the example, the Stars sold R64 735 and made R48 492, which is 75%.
2 What each group means
- Stars
- Sell a lot and earn a good margin. Protect them: keep them on the menu, keep the recipe and the price steady.
- Plowhorses
- Sell a lot but earn a low margin. Look at the price, or at the recipe cost, because even a small improvement is multiplied by high sales.
- Puzzles
- Earn a good margin but do not sell much. Promote them, or move them to a better place on the menu.
- Dogs
- Sell little and earn a low margin. These are the candidates for removing from the menu.
3 How an item is placed
Only items that sold, have a costed recipe and made some net sales are placed. They are first ranked by net sales (rands, not units) and split into two equal halves: the higher-selling half and the lower-selling half. Each half is then split in two again by gross profit percentage, again into equal halves. The result is four groups that are as near as possible the same size. If the number of items is odd, the extra item goes to the higher side.
4 How profit is worked out
Gross profit is net sales less the cost of the stock used. The cost comes from the recipe that was in force on the day of each sale, so a recipe change in the middle of the period is handled correctly. Both direct stock items and named recipes in the item's recipe are counted. Where an item takes a different amount for eat in and take away, each sale uses the amount for the way it was sold.
The item lists
Below the map there is one list for each group, in this order: Stars, Puzzles, Plowhorses and Dogs. Each list has a heading with the group name, what it means and how many items it holds, then the items from the biggest seller to the smallest, then a section total.
| Net sales | Item | Net sales (excl) | Gross profit (excl) |
|---|---|---|---|
| Stars: High net sales, high GP% - protect these | 3 items | ||
| ████████████████████ | 412 x Burgers - Classic Cheeseburger (BG01) @ 72% GP | 41 200.00 | 29 664.00 |
| ███████ | 318 x Sides - Large Fries (SD02) @ 80% GP | 14 310.00 | 11 448.00 |
| ████ | 205 x Shakes - Vanilla Shake (SH01) @ 80% GP | 9 225.00 | 7 380.00 |
| Section total 3 items 74.9% GP | 64 735.00 | 48 492.00 | |
1 The bar
A row of blocks drawn in proportion to net sales. The biggest seller in the group always gets the longest bar (20 blocks), so bars are only compared within the same group, never between groups.
2 The item line
Reads as quantity sold x category - item name (PLU code) @ gross profit %. For example 412 x Burgers - Classic Cheeseburger (BG01) @ 72% GP means 412 were sold and each rand of net sales earned 72 cents of gross profit. An item without a PLU code, or without a category, simply leaves that part out. Quantity is shown for information only: groups are decided by rands sold, not by units.
3 Net sales (excl) and Gross profit (excl)
Both figures are without tax. Net sales is what the item sold for, after its share of any discounts. Gross profit is net sales less the model cost of the recipe. A figure that is shown in pale grey as a dash means there is no figure to show.
4 Section total
The number of items, the group's gross profit percentage, and the group's total net sales and gross profit. These are the same figures as in the quadrant map at the top.
The other three lists look exactly the same. Here they are with the example figures:
Puzzles
| Net sales | Item | Net sales (excl) | Gross profit (excl) |
|---|---|---|---|
| Puzzles: Low net sales, high GP% - promote, or move on the menu | 3 items | ||
| ████████████████████ | 55 x Salads - Greek Salad (SL01) @ 70% GP | 4 950.00 | 3 465.00 |
| ███████████████ | 30 x Burgers - Mushroom Swiss (BG07) @ 72% GP | 3 600.00 | 2 592.00 |
| ███████████ | 40 x Desserts - Brownie Sundae (DS02) @ 75% GP | 2 800.00 | 2 100.00 |
| Section total 3 items 71.9% GP | 11 350.00 | 8 157.00 | |
Plowhorses
| Net sales | Item | Net sales (excl) | Gross profit (excl) |
|---|---|---|---|
| Plowhorses: High net sales, low GP% - reprice or re-engineer the recipe | 3 items | ||
| ████████████████████ | 290 x Burgers - Bacon Double (BG04) @ 50% GP | 33 350.00 | 16 675.00 |
| ███████ | 150 x Chicken - Wings 6 Piece (CK03) @ 45% GP | 11 250.00 | 5 100.00 |
| ████ | 260 x Drinks - Soft Drink 440ml (DR01) @ 40% GP | 6 500.00 | 2 600.00 |
| Section total 3 items 47.7% GP | 51 100.00 | 24 375.00 | |
Dogs
| Net sales | Item | Net sales (excl) | Gross profit (excl) |
|---|---|---|---|
| Dogs: Low net sales, low GP% - candidates for delisting | 3 items | ||
| ████████████████████ | 45 x Sides - Onion Rings (SD05) @ 40% GP | 2 025.00 | 810.00 |
| ██████████████ | 20 x Desserts - Lemon Tart (DS04) @ 40% GP | 1 400.00 | 560.00 |
| ███████████ | 25 x Kids - Chicken Strips (KD02) @ 36% GP | 1 125.00 | 405.00 |
| Section total 3 items 39.0% GP | 4 550.00 | 1 775.00 | |
A negative gross profit percentage can appear, usually on a cheap add-on such as a topping, when its recipe costs more than the price it is sold for. Those are worth a second look.
Cannot be classified
Items that cannot be placed in a group are kept out of the split, so they cannot distort it, and listed here instead, each with the reason. This section only prints when the Hide items with no sales or no recipes tick box is not ticked.
| Net sales | Item | Net sales (excl) | Gross profit (excl) |
|---|---|---|---|
| Cannot be classified: No net sales, or no costed recipe - kept out of the split | 3 items | ||
| 12 x Extras - Extra Sauce (EX01) | no recipe or no model costs | 84.00 | - | |
| 0 x Desserts - Seasonal Pie (DS09) | no sales in this period | 0.00 | - | |
| 30 x Burger Options - No Onion (BO02) | net sales value is zero | 0.00 | - | |
| Section total 3 items | - | - | |
- no recipe or no model costs
- The item sold, but its recipe is missing, or the stock in it has no model cost, so its gross profit cannot be worked out. Fix the recipe or the stock costs and the item will be placed next time.
- no sales in this period
- The item is on your current menu but sold nothing between the two dates you chose. Good candidates for a look at whether they still belong.
- net sales value is zero
- The item was sold, but for nothing, or was fully discounted, so a margin cannot be worked out.
Items are listed from the highest net sales to the lowest. The section total only counts items, because there is no gross profit to add up.
Frequently asked questions
Why are the four groups almost the same size?
By design. Items are split in half on net sales and each half is split in half again on gross profit percentage, so the four groups are always within one item of each other in size. This stops one group from being empty or huge by accident. It also means an item is judged against your other items, not against a fixed target.
Why is an item in Cannot be classified?
For one of three reasons, printed next to it: it sold nothing in the period, it sold but for a net value of zero, or it has no costed recipe. Untick Hide items with no sales or no recipes to see the section. Add the missing recipe or stock cost and the item is placed the next time you run the report.
Why does the net sales total not match my sales reports?
Only items that could be classified are in the four groups, so items that sold without a recipe, or for nothing, are left out. Net sales here are also without tax and after discounts, and only menu item lines are counted, so charges that are not menu items are not included. Compare against a sales report on the same basis, without tax and net of discounts, and remember that the last section can be hidden.
Why do my figures differ from the cashup or Gross Profit reports at the start or end of a period?
This report counts calendar days, from midnight to midnight in your brand's local time. The cashup reports count trading days, which end when your stores close. If your stores trade past midnight, a sale rung up at 01:30 lands on the calendar day here and on the previous trading day in the cashup reports. Over a whole month the difference is small.
Why is the gross profit different from the Gross Profit or Contribution Margin report?
This report works out gross profit from the recipe cost of each item, using the recipe in force on the day of the sale, and counts both direct stock items and named recipes. The stock costs used are your model costs, not what was paid on the day. Reports that cost sales a different way, or that use actual stock movements, will show different gross profit, so compare trends rather than single figures.
Does one item appear in more than one place if I have several menus?
No. Every store in your brand is included, whichever menu it uses, and an item that sells in several stores is added together into one line. It is ranked against every other item in the brand, so an item that only sells in one region can look weaker than it is. Closed stores are included too, if they traded in the period.
Are online orders and voided sales included?
Online orders are included. Voided invoices are not, because they are not real sales.
Why is a topping or option listed as an item?
Toppings, options and extras that are sold as menu items are counted like any other item, so you can see which add-ons are worth their place. If you would rather not see them, they usually show up as Dogs or in Cannot be classified.
Glossary
- Calendar day
- From midnight to midnight in your brand's local time. This report does not use your stores' close of trade.
- Dogs
- Items in the lower-selling half that also have the lower gross profit percentage. Candidates for removing from the menu.
- GP (gross profit)
- Net sales less the cost of the stock used to make the item, in rands.
- GP %
- Gross profit as a percentage of net sales. 72% means that each rand of sales earns 72 cents of gross profit.
- Model cost
- The cost per unit set for a stock item in your stock setup, used to cost recipes.
- Net sales
- What an item sold for, after its share of any discounts, without tax.
- Plowhorses
- Items in the higher-selling half with the lower gross profit percentage. Reprice them or cut the recipe cost.
- Puzzles
- Items in the lower-selling half with the higher gross profit percentage. Promote them or move them on the menu.
- Stars
- Items in the higher-selling half that also have the higher gross profit percentage. Protect them.
- VAT
- Value-added tax, or your country's equivalent sales tax. Every figure in this report is without it.