Menu Margin Analyst
Finds the popular dish that is losing you money
- 8hard rules
- Things it must never do, enforced in every run
- 5handover rules
- Conditions where it stops and gives the work to a person
- 8output fields
- A structured result, not a paragraph you have to re-read
- ≤6steps per run
- Bounded work: at most 4 tool calls, enforced by the runtime
Read-only by design. This agent has no path to sending, spending, publishing or committing anything. Where that limit is the product, removing it would remove the reason to trust the output.
Overview
Restaurant profitability is decided by the menu, and almost nobody analyses the menu properly. The operator knows which dishes sell — the till says so daily — and has a rough sense of food cost. What they do not have is both numbers together, per dish, kept current as ingredient prices move.
Put popularity and margin on the same page and the menu splits into four groups, each needing a different action. A dish that sells well and earns well should be protected and made easier to find. One that sells well and earns badly is the dangerous one — busy, feels successful, and quietly the reason the month was flat. One that earns well and sells rarely is a placement and description problem, the cheapest fix in the building. One that does neither is occupying menu space, fridge space and prep time.
What makes it genuinely hard is that recipe costs are calculated once, when the dish is created, and never again. A dish costed at 28% two years ago can be at 41% today and nothing in the business would ever say so.
This agent recosts each dish against current prices, classifies the menu, and quantifies what each change is worth at current volumes. It sets no prices and removes no dish: both are decisions about your guests and your reputation, and neither is arithmetic.
Benefits
Margin found without raising a price
Most of it is portioning, waste and recipe drift.
The menu earns its space
Every dish justified by what it contributes.
You stop being busy and flat
Which is the most demoralising way to run a kitchen.
What it does
Recosts against today's prices
Recipe costs are set once when a dish is created and never revisited. A dish costed at 28% can be at 41% and nothing would ever say so.
Popularity and margin together
Separately, both are already known. Together, the menu splits into four groups with four different actions.
Finds the busy dish that loses money
The dangerous one. It feels successful, and it is why the month was flat.
Reports contribution, not percentage
A 78% margin on a side is worth less than 62% on a main. Percentages decide wrongly and everyone uses them.
Prices each change at current volume
What fixing this dish is worth per month, so the effort goes where the money is.
Sets no prices
A price is a decision about your guests and your position. It gives you the arithmetic behind it.
What this changes
What this changes about your week
- It takes over
- Recosting every dish and putting margin next to popularity.
- Done today by
- The owner, once, when the menu was written.
- How often
- Should be monthly. Is almost never.
- Typical manual effort
- Every recipe recosted against current ingredient prices, then multiplied by actual covers.
Why Restaurants & Food Service in particular. Recipe costs are calculated once and never again. A dish costed at 28% can be at 41% today and nothing in the business would say so — and it is usually a best seller.
Runs unattended
Started by you or by an event, and it finishes on its own. Nothing waits for someone to be at a desk.
The same standard every time
The two-hundredth item is held to the bar the first one was. Consistency is the part people cannot sustain.
It cannot act on its own
Menu Margin Analyst has no path to sending, spending or committing. That limit is why its output is safe to act on.
How it runs
This agent runs server-side through the PROMIVO runtime. Each run is logged step by step and every tool call is permission-checked before it executes.
- 1InputValidated against the agent input schema
- 2Modelclaude-sonnet-5 with automatic fallback
- 3Toolsextract_structured_data
- 4PermissionsRuns READ actions automatically; anything higher waits for approval
- 5OutputStructured result matching the output schema
- 6LoggingTokens, duration and every step recorded
Demo
Demo dataIllustrative sample output, abridged.
Input
{
"dishes": [],
"period": "August 2026",
"currency": "USD"
}Output
{
"dishes": [
{
"dish": "Slow-braised short rib",
"group": "fix-the-cost",
"action": "Your second best seller, and it was costed at 29% when it was written. Beef has moved 56% since. Nothing in the business would have told you.",
"coversSold": 412,
"currentCost": 12.6,
"fullyCosted": true,
"recordedCost": 8.1,
"sellingPrice": 28,
"worthPerMonth": 1854,
"foodCostPercent": 45,
"costDriftPercent": 55.6,
"totalContribution": 6345,
"contributionPerDish": 15.4
},
{
"dish": "Heritage tomato salad",
"group": "improve-placement",
"action": "Strong margin, almost nobody orders it. It sits last in a section of nine. This is a menu design fix, not a kitchen one.",
"coversSold": 61,
"currentCost": 3.1,
"fullyCosted": true,
"recordedCost": 3,
"sellingPrice": 14,
"worthPerMonth": 980,
"foodCostPercent": 22.1,
"costDriftPercent": 3.3,
"totalContribution": 665,
"contributionPerDish": 10.9
}
],
"escalate": true,
"wasteGap": [
"Theoretical food cost across the menu is 31%. Actual is 36.4%. That 5.4 points is 9,100 a month and it is not a pricing problem."
],
"costBasis": "actual-with-waste",
"disclaimer": "An analysis of your own recipes, prices and sales. No price has been set or changed, no dish removed, no recipe or portion altered, and no ingredient cost was estimated where one was missing.",
"partlyCosted": [
"Two specials have no complete recipe, so they are excluded rather than estimated."
],
"escalationReason": "Food cost on the second best seller is 45%, above threshold, with 56% cost drift; and the waste gap is 5.4 points.",
"sharedIngredientRisk": [
"Butter appears in 14 of 31 dishes. A 10% move there costs more than any single recipe change would recover."
]
}Requirements
Integrations
No integrations required.
Before you start
- Dishes with selling price and recipe
- Current ingredient costs
- Sales counts by dish for the period
- Waste records, where you keep them
- Requires the Starter plan or higher
Use cases
Menu redesign
Which dishes earn their place, before it is printed.
After supplier price rises
Which dishes moved, and by how much.
Seasonal changeover
What the last season actually earned, dish by dish.
A flat month with good covers
Usually a menu-mix problem rather than a volume one.
Pricing
Starter
Billed monthly through your PROMIVO subscription. Cancel at any time.
Runs consume your plan allowance for agent executions and tokens. See plan limits
FAQ
Will it change prices or remove dishes?
No. Both are decisions about your guests, your reputation and your positioning. It gives you the numbers and what each option is worth.
Do we need exact recipe costs?
It uses what you have. Where a recipe is incomplete it reports the dish as partly costed rather than estimating around the gap — an invented ingredient cost would be the most quotable number in the report and the least reliable.
Does it account for waste?
Where you record it, yes, and it is often the finding. Where you do not, it says the cost is theoretical rather than actual — the gap between the two is usually where the missing margin is.
Reviews
Reviews open once customers have run this agent.
Need this agent to work differently?
Tell us what to change and our team will scope a customised version for your business.
Customize this agent