Restaurant Menu Profitability Report

Leverage this report to assess the need for price increases, portion adjustments, and/or recipe re-costing.

About this report

This report computes food cost %, contribution margin ($ and %), and item velocity (units sold) per menu item. Based on this data, the report classifies every item into the classic menu-engineering matrix — Stars, Plowhorses, Puzzles, Dogs — based on popularity vs. profitability and renders an HTML dashboard with a quadrant scatter plot and other helpful illustrations. See below for actionable menu engineering notes such as reprice, reformulate, remove, promote.

9
Active menu items
$8.98
Menu avg. contribution margin / unit
1
Items flagged over food-cost target

Popularity vs. profitability quadrant

Each dot is a menu item, sized by revenue. Position (not color) determines the quadrant - the shaded zone and label name it directly. A red-ringed dot means the item's food cost % breaches its category target; see the notes list below.

Menu items

ItemCategoryQuadrantUnits sold RevenueFood cost %Contribution margin
Chicken Chop Main Course Puzzle 4517 $174,160.83 33.6% $27.78 (66.4%)
Kaya Toast Set Appetizers Star 10374 $124,095.32 25.6% $9.25 (74.4%)
Beef Rendang Main Course Puzzle 2391 $106,039.97 35.2% $31.75 (64.8%)
Spaghetti Carbonara flagged Main Course Puzzle 2458 $100,906.22 36.2% $30.89 (63.8%)
Nasi Lemak Main Course Plowhorse 9209 $100,478.37 28.3% $8.42 (71.7%)
Cendol Desserts Plowhorse 7269 $65,259.26 26.3% $7.12 (73.7%)
Teh Tarik Beverages Plowhorse 15535 $59,911.05 17.3% $3.36 (82.6%)
Mushroom Soup Appetizers Puzzle 2518 $45,369.09 28.1% $13.75 (71.9%)
Iced Lemon Tea Beverages Plowhorse 6841 $34,244.32 19.3% $4.35 (80.7%)

Food cost % by category

Items to review

  • Spaghetti Carbonara (Main Course) - Food cost 36% is 3% over the 33% target for Main Course - consider a price increase, portion adjustment, or recipe re-costing.

Metric definitions

Food cost %
The estimated cost of ingredients for one serving, divided by its selling price. Lower means more margin per sale. Estimated here from configurable category benchmarks, not audited invoices - see the admin Settings page.
Contribution margin
Selling price minus estimated plate cost - the dollars each sale contributes toward overheads and profit after ingredient cost. Shown both in dollars and as a percentage of price.
Popularity index
An item's share of total units sold. Compared against "fair share" (1 / number of menu items) to decide whether an item is a high or low seller.
Stars
High popularity, high profitability. Protect these - keep quality and visibility high.
Plowhorses
High popularity, low profitability. Popular but thin margins - consider a price or cost adjustment.
Puzzles
Low popularity, high profitability. Profitable but underordered - consider repositioning on the menu or better promotion.
Dogs
Low popularity, low profitability. Candidates for recipe rework or removal.

Development notes

This application consists of a data importer, metrics/analytics engine, and this live web app. It was built as a deliberately gated, three-phase build (data import → metrics/analytics engine → web app).

A small pre-built dataset (the Kaggle CSV's richest-menu restaurant) is committed to the repo and copied into place automatically the first time the app runs against a DATABASE_PATH that doesn't exist yet. A newer export refresh, or a different location, can be imported using the functionality embedded in the application.

Tech stack

This project uses Python 3, Flask, SQLite, Jinja2, Chart.js, python-dotenv, gunicorn, and pytest.