1. Your sales export and your costs
Needs an item name, a quantity sold and net sales column; category and a food cost column are used when present. Column names are matched by alias and are unverified against real Toast, Square or Clover exports: if a file is not read, the page says which rows were skipped and why. Refund rows are netted, voided and modifier rows are skipped, duplicate rows are merged.
Choose the export file or paste it, then click Analyze menu.
Result
Price increase on Plowhorses
By item
| Item | Class | Plates | Mix % | Price | Cost | Cost from | Margin / plate | Total margin |
|---|
Items to cut, and items to re-promote
By category
| Category | Items | Plates | Mix % | Net sales | Food cost % | Margin / plate | Total margin | Stars / Plowhorses / Puzzles / Dogs |
|---|
The model, and what it leaves out
- Popularity: an item's plates as a share of all plates. It is popular at or above 70% of an even share (100% divided by the number of items, times 0.7). The bar is shown in the summary.
- Margin: net sales per plate minus plate cost, compared with the weighted average margin per plate (total margin over total plates), not the average of the item margins.
- Classes: Star is popular and at or above the average margin, Plowhorse is popular and below it, Puzzle is unpopular and at or above it, Dog is neither. Classes compare items with each other; they are not a verdict on one dish.
- Plowhorse price rise: each Plowhorse goes up by the percentage you type and sells the percentage fewer plates you type; the change in total margin is the estimate. The volume loss is your assumption, not a forecast, and the table gives the loss at which the rise stops paying.
- Costs: export cost column, else your pasted list, else the default percentage. The default is a placeholder, not a measurement, and items using it are flagged. Items with a zero cost are flagged.
- Reconciles. Item rows add to the category rows and to the totals at the top.
- Not modelled: shared ingredients and prep waste, labour, item bundles and combos, price tiers of the same item, seasonality and menu position, comps and discounts beyond what net sales already shows, delivery-app markups, sales tax and tips, and anything not in the file.
- Unverified: column names are matched by alias and no real Toast, Square or Clover export was available when this was written.
Common questions
How do I do menu engineering from a Toast, Square or Clover report?
Export the item sales report (item name, category, quantity sold, net sales) for a few weeks to a few months, drop it here, and add your plate costs either as a cost column, a pasted item,cost list or a default food cost percentage. The tool works out each item's share of plates sold and its contribution margin per plate, then labels it a Star, Plowhorse, Puzzle or Dog.
What are Stars, Plowhorses, Puzzles and Dogs?
It is the Kasavana and Smith menu-engineering matrix. Stars sell well and earn above the average margin per plate. Plowhorses sell well but earn below it. Puzzles earn above average but sell below the popularity bar. Dogs do neither. The bars are relative to your own menu, so a label compares items with each other rather than judging one dish alone.
What is the 70% rule for popularity?
An item counts as popular when it takes at least 70% of the share of plates it would get if every item sold equally. On a 20-item menu an even share is 5%, so the bar is 3.5%. It is a convention, not a law, and the page shows the exact bar it used.
Where does the food cost come from?
In this order: a cost column in your export, then an item,cost list you paste, then the default food cost percentage you type. The default is a placeholder, not a measurement: it gives every item the same food cost percentage, so those items cannot be judged on margin. The page flags every item that used it, and every item with a zero cost.
How are refunds, voids, modifiers and duplicate rows handled?
Refund rows (negative quantity or sales) are added to the same item, reducing its quantity and sales. Voided rows and modifier rows are skipped and counted. Rows with the same item name and category are merged, summing quantity and sales.
Which file formats and column names does it read?
Comma, semicolon or tab separated text, including UTF-16 files, with dollar signs and thousands separators. Columns are matched by alias, for example Item or Menu Item, Category or Menu Group, Qty or Quantity Sold, Net Sales or Net Amount. No real Toast, Square or Clover export was available when this was written, so the aliases are unverified; a file that is not read says which rows were skipped and why.
Is my sales data uploaded?
No. The file is read in this browser tab and never leaves your device. There are no accounts, cookies or analytics vendors.