Why catering jobs lose money even when the bid looked right
Written from the operator side, not the consulting side. Updated July 2026.
The operation this is written from
14
locations I have run in live production
8,000+
meals a day off the same production discipline
$10-12M
P&L owned end to end, catering sitting inside it
90+
staff across kitchen, service and event crews
Inside that P&L food cost holds between 28 and 35 percent depending on the model. Institutional and contract catering does not carry the same line as the retail cafe, and central production and events are different again. Each one holds its own number. Getting there is the subject of this page. I lived inside the failure long enough to recognise it in other people's operations within about an hour of walking the commissary.
The gap I could not explain
The thing that bothered me most, early on, was not that we lost money on catering. It was that I could not say where. Restaurant covers I understood. A restaurant repeats. You sell roughly the same dishes to roughly the same volume of people, and when the food cost moves you have a short list of suspects. Catering does not repeat. Every job is a one-off build with its own menu, its own headcount, its own venue with its own missing power outlet, and its own client who changes something on Thursday.
So the variance never sat in one place. It sat in fifty places, a few points at a time, and by the time the month closed there was no thread left to pull. I would look at a month that underperformed and get four different explanations from four honest people, all of them partly right. One said the protein price moved. One said the venue had no loading access so we burned two hours of crew. One said the client added covers. One said we ran out of the good sheet pans and had to double-batch.
All true. None of it was written down anywhere that connected back to the bid. That was the real problem. Not the variance itself, but the fact that nothing in my operation forced the bid and the delivery to meet each other while anyone still remembered the event.
Four things I got wrong
These are mine. I have since seen every one of them in operations far larger than the one I was running at the time, which is the only reason I am comfortable writing them down.
I priced from the recipe card, not from the walk-in
The recipe card said a case of chicken thighs yielded a certain number of portions. It said that because someone typed it in years ago, probably from a manufacturer spec, probably trimmed by a person who was not on my line at 5am. My actual yield was lower. Not dramatically lower on any single item, but lower on almost every protein, and I was bidding hundreds of covers off numbers that had never been checked against my own kitchen. The bid looked healthy. The event was not. I learned to weigh the trim before I quoted anything.
I treated the day-of add as a service win
A client calls the morning of and says the headcount has gone up. I always said yes, because saying yes is what got me the account. What I did not do for a long time was price the yes. Those extra covers come off product I had not ordered, made by people I had to call in, delivered in vehicles that have to make a second run. I was proud of the save and blind to the cost. Now the answer is still yes, but it is a yes with a number attached, agreed before the truck leaves.
I read labor as a monthly number instead of a weekly shape
Catering weeks are not equal. One week has three small drops and a quiet Thursday. The next has two galas and a corporate lunch series stacked on top of each other. My payroll ran nearly flat across both. On the quiet week I was paying for capacity I had no work for. On the heavy week I was buying that same capacity back at overtime rates from tired people. Monthly, it averaged out into something that looked like seasonality. It was not seasonality. It was me not scheduling from the forward event list.
I let the heroics hide the system
For a long time my hardest weeks were held together by two people. A lead chef who could see three days ahead, and a captain who made the right call on the floor without asking. Nothing was written down because it did not have to be. Then one of them left, and the operation dropped, immediately and visibly, to whatever the written system actually supported. That number was much lower than I thought it was. The heroics were not a strength. They were a debt I had been carrying without recording it.
The morning-after habit that changed the most
The single change that did more than anything else was also the least clever one. I started reconciling every event the morning after it happened, while the crew who worked it was still in the building. Not at month-end. The morning after.
It took fifteen minutes and it was uncomfortable at first, because for the first few weeks all it produced was a list of things I had been wrong about. What we bid. What we actually bought. What came back on the truck untouched. What the crew hours really were versus the schedule. Whether the client added, and whether anyone charged for it.
After about two months, something useful happened. The same three or four items kept showing up. Not fifty problems. Three or four, repeating. One protein whose yield assumption was simply wrong. One venue that always cost us more crew hours than we quoted. One client who always added late. One prep sequence that always got compressed and always generated waste. Those are fixable. A vague month-end variance is not.
The other thing it did was change how the team talked about jobs. When people know the numbers get read out loud the next morning, they start flagging problems during the event instead of after it. That is worth more than the data.
What I would do differently on day one
If I were standing up a catering operation from scratch tomorrow, I would spend the first month doing almost nothing that looks like growth. I would weigh things. Every protein, every high-volume item, trimmed and cooked the way my kitchen actually trims and cooks it, and I would write those yields into the bid template and refuse to let anyone quote off anything else.
I would put the confirmed event list on a wall where the kitchen can see two weeks forward, and I would build prep sequences off that list rather than off last week. Quiet Tuesdays exist to absorb work for heavy Fridays. That only happens if the quiet Tuesday can see the heavy Friday coming.
I would write down what the two people holding the operation together actually know, before they leave, because they will leave. Not a binder nobody reads. The specific decisions they make that nobody else can make yet.
And I would price change orders on day one, before it feels awkward, because it only gets harder to introduce later. The client who adds covers late is not the problem. The problem is an operation that absorbs them silently and calls it service.
None of this is a framework. It is four habits that took me a lot longer to arrive at than they should have, mostly because I kept looking for a pricing answer to what was really a memory problem. A catering operation does not fail on the big event. It fails on the fourth ordinary week nobody planned for, and it fails quietly, and by the time it shows up on the P&L everyone involved has already forgotten enough to make it unfixable.
Related reading
If you want this fixed in your own operation
Everything above is what I learned running it myself. Installing it in someone else's catering operation - the bid template, the morning-after reconciliation, the forward production plan, the labor model - is the work I do through XenoSoft. If that is what you are looking for, the scope and how it runs are laid out here: catering operations consulting at XenoSoft.