Skip to content
WaiterPilot™

Running service

Menu engineering: the matrix, a worked example, and what guests asked for

Sort dishes into stars, plowhorses, puzzles and dogs by popularity and margin, worked on an eight-dish menu, plus an input most guides miss: guest questions.

WaiterPilot Operations
Updated , 9 min read

Stars, puzzles and plowhorses

The short answer

Menu engineering sorts each dish by two numbers, how many sell and how much each earns after food cost, into four groups: stars, plowhorses, puzzles and dogs. Each group gets a different action. Guest questions add a third input: WaiterPilot's owner reports list what guests asked for that isn't on the menu and questions the chat couldn't answer.

Key points

  1. Contribution margin is the menu price minus the plate cost; popularity is each dish's share of the dishes sold in the same category.
  2. Stars are popular and profitable, plowhorses popular but low-margin, puzzles profitable but slow, and dogs neither.
  3. Sales data shows what guests chose, not what they wanted and couldn't find; guest questions fill part of that gap.
  4. WaiterPilot's owner reports show top dishes, what guests asked for that isn't on the menu, and questions the chat couldn't answer; they cover phone orders only, so use your POS for full sales.
  5. Ordering technology doesn't fix margins by itself: the peer-reviewed effect of tabletop ordering on check size is about 1%.
On this page

Menu engineering sorts the dishes in each menu category by two numbers: how many you sell, and how much each one earns after food cost. The two numbers put every dish into one of four groups (stars, plowhorses, puzzles and dogs), and each group gets a different action. The method has one blind spot: it only sees what guests chose from what you offered. Guest questions fill part of that gap. If guests order through a chat, the questions they ask show what they looked for and couldn’t find, and which dishes they didn’t understand. This guide walks through the matrix on an eight-dish menu, then adds the guest-question layer.

What is the menu engineering matrix?

Short answer: a two-by-two grid of popularity against contribution margin, with a standard action for each box.

GroupPopularityMarginWhat it usually meansTypical action
StarHighHighGuests want it and it paysKeep it, keep it consistent, give it a good spot on the menu
PlowhorseHighLowGuests want it but it earns little per plateCheck the portion, the plate cost and the price, one at a time
PuzzleLowHighIt pays, but few people order itRename it, describe it better, move it, or have staff mention it
DogLowLowNeitherReplace it, or try one change before you drop it

Two rules keep the matrix honest. Compare dishes only within one category (mains with mains, not mains with desserts), and use the same period for every dish.

How do you calculate it?

Short answer: five columns of arithmetic per dish, then two comparisons.

  1. Pick a category and a period. For example, mains over four weeks.
  2. Count the number sold of each dish. Use your POS, which has every sale.
  3. Work out each dish’s contribution margin: menu price minus plate cost (the food cost of one portion).
  4. Work out the totals: total margin per dish (margin × number sold), and the category totals.
  5. Set the two lines.
    • Popularity line: an equal share of the category. With 8 dishes, that is 1 ÷ 8 = 12.5% of the dishes sold. Some versions of the method set this line lower than an equal share; pick one rule and keep it.
    • Margin line: the category’s average margin per dish sold, which is total margin ÷ total number sold.
  6. Classify. A dish at or above both lines is a star; above popularity only, a plowhorse; above margin only, a puzzle; below both, a dog.

A worked example: Casa Olivo’s mains

Casa Olivo is a fictional restaurant (an example, not a customer). Sales, prices and plate costs are assumptions for the arithmetic.

Four weeks of mains, 1,200 sold in total:

DishSoldMixPricePlate costMarginTotal margin
Grilled sea bass12010.0%$28$11$17$2,040
Chicken Milanese26021.7%$19$6$13$3,380
Lamb shoulder705.8%$32$12$20$1,400
Mushroom risotto18015.0%$18$4$14$2,520
Steak frites21017.5%$30$14$16$3,360
Pesto pasta22018.3%$16$4$12$2,640
Duck confit403.3%$27$11$16$640
Vegetable tagine1008.3%$17$5$12$1,200
Total1,200100%$17,180

The two lines:

  • Popularity line: 12.5% of 1,200 = 150 sold.
  • Margin line: $17,180 ÷ 1,200 = $14.32 per dish sold.

The result:

GroupDishesWhy
StarSteak frites210 sold (above 150) and $16 margin (above $14.32)
PlowhorsesChicken Milanese, mushroom risotto, pesto pastaEach sells 180 or more, but earns $14 or less
PuzzlesGrilled sea bass, lamb shoulder, duck confitEach earns $16 or more, but sells 120 or fewer
DogVegetable tagine100 sold and $12 margin

Two notes a careful owner would add. The risotto is a borderline plowhorse: $14 against a $14.32 line, so a small change in plate cost moves it. And the tagine is the only vegetarian main, so dropping it may cost more than its own sales, because a table with one vegetarian guest may go elsewhere. The matrix can’t see that. Guest questions can help.

What should Casa Olivo do with each group?

Short answer: one change per dish, chosen by its group, and nothing at all for the star.

DishGroupOne change to tryWhat to watch next period
Steak fritesStarNone. Keep the recipe, portion and spot on the menuThat sales and margin hold
Chicken MilanesePlowhorseCheck the portion against the plate cost; a small price rise if the portion is rightWhether sales drop more than the margin gains
Mushroom risottoPlowhorse (borderline)Re-cost it first: one ingredient price can move itIts margin against the line
Pesto pastaPlowhorseA cheaper garnish, or pair it with a side that earns moreMargin per plate
Grilled sea bassPuzzleA clearer description: what comes with itNumber sold
Lamb shoulderPuzzleStaff mention it as the chef’s dishNumber sold
Duck confitPuzzleRewrite “confit” in plain wordsNumber sold and guest questions
Vegetable tagineDogCheck the questions report before dropping itWhether tables with vegetarians still come

Change one thing per dish, and not every dish at once. If you change the price, the description and the position of a dish in the same month, you won’t know which one worked.

What can guest questions add that sales data can’t?

Short answer: what guests wanted and didn’t find, and which dishes they didn’t understand.

Sales data has a blind spot: a guest who wanted a dish you don’t serve leaves no trace. They order something else, or nothing. When guests order through a chat, they ask, and the questions are data.

WaiterPilot’s owner analytics include top dishes, busy hours, what guests asked for that isn’t on the menu, and questions the chat couldn’t answer, along with today against the same day last week. The owner page has a “Tonight at” summary the owner can send from their own phone by text or WhatsApp. Answers in the chat come from your menu; when the menu doesn’t say, the chat tells the guest to ask a staff member, and that unanswered question shows up in the report.

Back at Casa Olivo, suppose four weeks of reports show this (illustrative figures, not real data):

What the reports showWhat it might meanA cheap test
Many guests asked for a burger, which isn’t on the menuDemand Casa Olivo isn’t servingA burger as a weekend special for four weeks; count sales
Guests asked “what is confit?” and “is the duck fatty?”The duck is a puzzle partly because guests don’t understand itRewrite the description in plain words; re-run the matrix next month
Guests asked “is there a vegan main?”The tagine may be vegan but the menu doesn’t say soAdd “vegan” to the tagine if the kitchen can stand behind it
Guests asked what comes with the sea bass, and the chat couldn’t answerThe menu is missing the sideAdd the side to the description

None of these is a sale. A request shows that someone looked; only a test shows whether they’ll order. Treat the question list as a list of experiments.

What are the limits of the guest-question data?

Short answer: it covers only guests who used the chat, it counts questions not sales, and it can’t see your POS.

  • Only chat users. Guests who ordered through a server, or never opened the chat, don’t appear. The reports show what this group asked, not the whole room.
  • No POS link. WaiterPilot doesn’t connect to your POS, so its top dishes cover orders placed in WaiterPilot, not orders rung straight into your till. For the matrix itself, use your POS, which has every sale.
  • Languages. The chat answers in the guest’s language, and the reports split chats only into Arabic and other languages; there is no full language breakdown.
  • Small numbers. A handful of requests in a quiet month is a hint. Wait for a pattern before you change the menu.

What shouldn’t you expect from ordering technology?

Short answer: it won’t fix margins by itself.

Menu engineering works on margin per dish and on which dishes guests choose. Ordering technology doesn’t change those much on its own. The best evidence we have, a peer-reviewed study of tabletop ordering devices across a US casual-dining chain, found about 1% more per check and about 10% shorter meals (Tan and Netessine, Management Science, as reported in 2019). After a guest adds a dish, WaiterPilot may ask once whether they would like anything with it, but we make no claim that it raises check size. Our post on whether tabletop ordering increases check size goes through the evidence.

The value of the questions is the information, not a sales lift: better descriptions, a gap you can test, a dog you understand before you drop it.

Your menu engineering worksheet

Run this each time you change the menu, or once a season:

  1. Export four or more weeks of sales by dish from your POS.
  2. Update the plate cost of every dish from current supplier prices.
  3. Fill in the table: sold, mix, price, plate cost, margin, total margin.
  4. Set the popularity line and the margin line for each category.
  5. Classify every dish.
  6. Read the guest-question report for the same weeks: what was asked for, what couldn’t be answered.
  7. For each puzzle, check whether guests asked what it is.
  8. For each dog, check whether it serves a group (vegetarian, child, allergy) the matrix can’t see.
  9. Pick no more than three changes, one per dish, and write down the date.
  10. Re-run the matrix after the next period and compare.

When you change a dish, mark the old version sold out from your phone the day the new one starts, so guests aren’t offered something the kitchen no longer makes. Our checklist for preparing your menu covers how to write the new descriptions, and what to do when a dish sells out mid-service covers the day-to-day side.

What to do next

Export last month’s sales, fill in the table for your mains, and find your puzzles: they are usually the quickest win, because a better description costs nothing. If you use chat ordering, read the questions your guests asked about those dishes before you change anything. To see the owner reports and the rest of the flow, read how it works or check pricing, which is $200 per location per month with the reports included.

Questions readers ask

What is a menu engineering matrix?

A two-by-two grid that sorts every dish in a menu category by popularity (how many sell) and contribution margin (price minus plate cost). The four boxes are stars, plowhorses, puzzles and dogs, and each suggests a different action.

How do you calculate menu engineering?

For one category and one period, count how many of each dish sold, work out each dish's margin as price minus plate cost, then compare each dish with the category's popularity line and its average margin. High or low on each gives the box.

What are stars, plowhorses, puzzles and dogs?

Stars sell well and earn well: keep them as they are. Plowhorses sell well but earn little: look at portion or cost. Puzzles earn well but sell slowly: describe or place them better. Dogs do neither: replace them or give them one last change.

How often should a restaurant do menu engineering?

Each time you reprint or change the menu, and at least once a season, using at least a few weeks of sales so one odd night doesn't decide the result. Re-run it after any big price or supplier change.

Can I do menu engineering in Excel?

Yes. One row per dish, with columns for number sold, price, plate cost, margin, total margin, menu mix share and the two high or low flags. The worked example in this post fits on one sheet.

Can WaiterPilot tell me what guests want that isn't on my menu?

Its owner reports list what guests asked for that isn't on the menu and the questions the chat couldn't answer. That shows demand you can test, not sales you'll get, and it covers only guests who used the chat.

Sources

  1. At Your Service on the Table: Impact of Tabletop Technology on Restaurant Performance (Management Science), as reported, Tan and Netessine, via Restaurant Technology News, 2019-07 (checked 2026-10-15)

Watch an order go from table to kitchen

Try a sample order on your phone, or book a 20-minute demo. 30 days free, no setup fee, no contract.