The 2×2 matrix explained
Menu engineering plots every dish on two axes:
- Popularity — order count over the last 90 days. Not revenue, not margin — pure count.
- Margin — contribution per unit in ₹ (menu price minus food cost, expressed as absolute rupees, not percentage).
Split each axis at the median for your menu. A dish above the median on both is a Star. Above popularity, below margin is a Plough Horse. Below popularity, above margin is a Puzzle. Below both is a Dog.
| High margin (above ₹ median) | Low margin (below ₹ median) | |
|---|---|---|
| High popularity | STAR — protect & promote | PLOUGH HORSE — reprice or re-portion |
| Low popularity | PUZZLE — reposition, rename, re-photograph | DOG — kill or replace |
This is not a theoretical framework. It came from Michigan State hospitality research in the 1980s and every mid-market Indian chain — from Barbeque Nation to Wow! Momo — runs some version of it. The reason your independent restaurant doesn't is not that the tool is complicated; it's that the raw data (90 days of order counts × margin per item) sits inside a POS report nobody has opened this quarter.
Building a cost card — Paneer Butter Masala worked example
Before you can plot anything on the margin axis, you need a cost card for every dish that matters (rule of thumb: any dish contributing 2%+ of monthly revenue). Here is a full worked example for a 250g portion of Paneer Butter Masala priced at ₹280 on the dine-in menu.
Step 1 — Ingredient cost (recipe-based)
| Ingredient | Quantity | Unit cost (2026 wholesale) | Cost per portion |
|---|---|---|---|
| Paneer | 120 g | ₹380/kg | ₹45.60 |
| Tomato purée (from 3 medium tomatoes) | 180 g | ₹40/kg | ₹7.20 |
| Fresh cream | 30 ml | ₹240/L | ₹7.20 |
| Butter (Amul) | 15 g | ₹560/kg | ₹8.40 |
| Cashew paste | 15 g | ₹900/kg | ₹13.50 |
| Kasuri methi, garam masala, chilli | combined | — | ₹4.00 |
| Oil (refined) | 10 ml | ₹160/L | ₹1.60 |
| Ginger-garlic, onion | combined | — | ₹5.50 |
| Sub-total: ingredient cost | ₹93.00 |
Step 2 — Labour allocation
Kitchen labour is a fixed cost, but you must allocate it per dish for a true cost card. The standard method: total monthly kitchen wage bill ÷ total covers served = labour cost per cover. For a 40-seat casual dining kitchen doing 4,500 covers/month with ₹1.35 lakh/month kitchen wage (2 cooks + 1 helper + benefits):
- Kitchen wage bill: ₹1,35,000/month
- Total covers: 4,500
- Labour per cover: ₹30
Paneer Butter Masala is a single-cover main. Assign the full ₹30.
Step 3 — Overhead allocation
Rent, electricity, gas, insurance and depreciation on kitchen equipment are the overhead pool. Same calculation: total monthly overhead ÷ covers = overhead per cover.
- Rent ₹85,000 + electricity ₹18,000 + gas ₹12,000 + insurance ₹4,000 + kitchen equipment depreciation ₹6,000 = ₹1,25,000/month
- Overhead per cover: ₹1,25,000 ÷ 4,500 = ₹27.80
Assign ₹27.80 to the Paneer Butter Masala cost card.
Step 4 — Full loaded cost
| Ingredients | ₹93.00 |
| Labour allocation | ₹30.00 |
| Overhead allocation | ₹27.80 |
| Full loaded cost | ₹150.80 |
| Menu price (dine-in) | ₹280.00 |
| Contribution margin per plate | ₹129.20 (46%) |
| Food cost as % of menu price | ₹93 ÷ ₹280 = 33.2% |
Step 5 — Target food cost check
33.2% food cost is slightly above the 28-32% target for casual dining. Two options: (a) raise menu price to ₹295 which drops food cost to 31.5%, or (b) reduce paneer portion from 120g to 110g which saves ₹3.80 (food cost drops to 31.9%). The 10g portion reduction is invisible to the customer and preserves the ₹280 price point.
Which POS reports feed the exercise
You need three data points per dish, over the last 90 days:
- Order count — how many times was this dish ordered? Feeds the popularity axis.
- Revenue — order count × menu price. Sanity check against gross revenue.
- Contribution margin per unit — from your cost card. Feeds the margin axis.
In Online eMenu's Reports screen, the "Top Items × Revenue" widget serves items 1 and 2 for the last 7, 30 or 90 days. Sort by order count to identify Stars and Plough Horses (top half); sort by revenue to sanity-check that popular items are actually generating meaningful revenue. Export the list to CSV, paste your cost-card margins in a fourth column, and the matrix builds itself in Excel or Google Sheets.
Most operators skip this step because they think they need fancy analytics software. You do not. A single POS report, a cost-card sheet, and 90 minutes is enough. The discipline is the hard part, not the tooling.
The exact spreadsheet layout
| Dish | Orders (90d) | Menu price | Food cost | Margin (₹) | Quadrant |
|---|---|---|---|---|---|
| Butter Chicken | 1,847 | ₹340 | ₹165 | ₹95 (loaded) | Plough Horse |
| Dal Makhani | 1,205 | ₹280 | ₹58 | ₹172 (loaded) | Star |
| Paneer Butter Masala | 1,120 | ₹280 | ₹93 | ₹129 (loaded) | Star |
| Rogan Josh | 218 | ₹360 | ₹135 | ₹167 (loaded) | Puzzle |
| Fish Amritsari | 84 | ₹380 | ₹190 | ₹132 (loaded) | Puzzle |
| Veg Kadai | 340 | ₹240 | ₹105 | ₹77 (loaded) | Dog |
The 4 actions per quadrant
STAR — protect and promote
These are your top-right quadrant winners. Actions:
- Do not raise price. Popularity is elastic. A ₹280 Star that becomes a ₹310 Star may drop 20% in orders and net less.
- Move to top of menu. Both physical and aggregator listings. Physically top-left of a printed menu; category top on Swiggy/Zomato.
- Feature in WhatsApp broadcasts. Stars convert best in "today's special" pushes.
- Photograph professionally. A ₹1,500 investment in a food photographer for 8 hero shots covers your Stars for 12 months.
PLOUGH HORSE — reprice or re-portion
High-popularity, low-margin. These items drive covers but leak money. Four options in order of preference:
- Portion tweak — reduce ingredient quantity 8-10% while keeping perceived size. Usually invisible if done to sauce base or non-hero ingredients.
- Ingredient swap — substitute a cheaper equivalent (e.g., desi tomato for hybrid tomato in base gravy, saving ₹4-6 per plate).
- Price nudge — raise ₹15-20 during a menu refresh. If nobody complains for 30 days, the price stuck.
- Combo bundle — pair with a high-margin Star (dal, rice, dessert) at a bundled price that lifts blended margin.
PUZZLE — reposition, rename, re-photograph
Low popularity, high margin. Money on the table if you can move the needle on orders. Four moves:
- Rename — "Slow-cooked Kashmiri Rogan Josh" outsells "Rogan Josh" by 30-40% for the same dish.
- Move up the menu — physically re-order the category. Puzzles buried at the bottom stay buried.
- Staff mention — brief servers to recommend it when customers ask "what's good today?" A one-line SOP moves 15-25% of undecided orders.
- Re-photograph — a bad food photo kills Puzzles. If you cannot afford a photographer, use natural window light and shoot from a 45° angle at 11 AM.
DOG — kill or replace
Low popularity, low margin. Every Dog on your menu costs you inventory space, prep time, and menu real estate. Ruthlessness pays.
- Kill outright — most Dogs should just come off the menu. No customer will notice.
- Repurpose ingredients — before killing, check if the ingredients feed another dish. If yes, consolidate.
- Replace with a Puzzle test — the removed slot is prime real estate for testing a new higher-margin dish for 60 days.
- Never lower price to boost popularity. A price-cut Dog is a bigger Dog.
Common Indian restaurant pitfalls
1. Butter Chicken is not always a Star
This is the single most common error. Butter Chicken uses chicken (₹280-320/kg), butter, cream, cashew and tomato — every ingredient inflating. A typical Delhi/NCR Butter Chicken costs ₹165-180 to make at 250g portion. At a ₹340 menu price your food cost is 49%. That is not a Star, that is a Plough Horse hiding in Star clothing. Yet almost every operator we audit has Butter Chicken parked at the top of the menu marketed as their signature.
2. Biryani portion drift
Chef adds a spoonful of extra rice for "generous plating" and nobody re-costs the card. Six months later your Chicken Biryani food cost has crept from 30% to 36% and you have no idea. Re-weigh a random plate every 30 days. Portion drift is silent margin theft.
3. Ignoring wholesale price shifts
Cooking oil went from ₹120/L to ₹165/L in a single year. Paneer went from ₹320/kg to ₹380/kg. If your cost cards were last updated in late 2024, they are lying. Re-cost your top 20 dishes every quarter using current wholesale prices.
4. Menu bloat
Indian menus average 80-140 items. Most kitchens run efficiently on 40-60. Every extra item is inventory risk, prep complexity, and a Dog waiting to be discovered. Cutting a menu from 130 items to 65 typically improves food cost by 2-3 percentage points and speeds tickets by 15-20%.
5. Not applying to aggregator menus
Menu engineering the dine-in menu and leaving Swiggy/Zomato untouched is half a job. On aggregators, add 30-38% commission to the "cost side" of every card. A dish that is a Star at ₹280 dine-in is a Dog at ₹280 Swiggy — because the ₹98 effective take rate turns ₹129 contribution into ₹31. Either re-price the aggregator listing or move the dish down the category page.
The 90-day cadence
Menu engineering is not a project, it is a discipline. Here is the exact quarterly cycle we recommend:
- Day 1 — pull data. Export the last 90 days of order counts from your POS. Should take 5 minutes.
- Days 2-3 — cost cards. Re-cost your top 20 dishes with today's wholesale prices. Update the spreadsheet.
- Day 4 — plot the matrix. Assign each dish to a quadrant. Sanity-check with your head cook and floor manager.
- Days 5-7 — decide actions. One action per Plough Horse, one per Puzzle, kill or keep decision per Dog.
- Day 8 — implement. Update the menu, brief staff, adjust aggregator listings, re-photograph if needed.
- Day 90 — repeat. Compare quadrants vs the previous quarter to check which actions actually moved the needle.
Get the Top-Items report that feeds the matrix
Online eMenu's Desktop POS and Ordering Suite both surface Top Items × Revenue for the last 7/30/90 days on the Reports screen. See how it looks.
Take the product tourAggregator-specific menu engineering
Your dine-in matrix and your Swiggy/Zomato matrix are almost never the same. Aggregator commission of 30-38% effective take rate can push a Star into Plough Horse territory or a Plough Horse into Dog. Build a parallel matrix:
| Dish | Dine-in margin | Aggregator (35% take) margin | Dine-in quadrant | Aggregator quadrant |
|---|---|---|---|---|
| Butter Chicken | ₹95 | -₹28 | Plough Horse | Dog |
| Dal Makhani | ₹172 | ₹74 | Star | Plough Horse |
| Paneer Butter Masala | ₹129 | ₹31 | Star | Puzzle |
| Fish Amritsari | ₹132 | ₹15 | Puzzle | Dog |
Two actions fall out of this second matrix: (a) either re-price the aggregator listing 20-25% higher, or (b) reduce the depth of the aggregator menu — remove Dogs so the kitchen focuses on what actually makes money. Both work; combining them is best.
Frequently Asked Questions
What is menu engineering?
The discipline of classifying every dish by popularity and margin into a 2×2 matrix — Star, Plough Horse, Puzzle, Dog — with a specific action per quadrant. Done quarterly it typically lifts blended margin by 3-6 percentage points.
What is a food cost card?
A per-dish worksheet with ingredient cost + labour + overhead. Target food cost is 28-32% for casual dining, 25-30% for QSR.
Healthy food cost % for an Indian restaurant in 2026?
Blended 28-32% casual dining, 25-30% QSR. Anything above 33% invites a menu engineering pass.
Why is Butter Chicken often a Plough Horse?
High ingredient cost (chicken + butter + cream + cashew) means the plate cost is ₹165-180, which at typical ₹340 menu prices yields only ₹95 loaded margin. Popular but not high-margin.
How often should I re-run menu engineering?
Every 90 days. Faster is noisy; slower misses inflation.
Which POS reports do I need?
Order count and revenue over 90 days (from your POS), plus a cost-card sheet you maintain. Online eMenu's Reports screen has the first two natively.
The 4 actions per quadrant?
Star — protect and promote. Plough Horse — reprice or re-portion. Puzzle — reposition, rename, re-photograph. Dog — kill.
Same actions on dine-in and Swiggy/Zomato?
No — run a parallel matrix for aggregators with commission added to cost. Different quadrants may need different actions on different channels.