Food Truck Inventory Management: Build Tomorrow's Prep List

Coding Liquids tutorial cover featuring Sagnik Bhattacharya for Food Truck Inventory Management: Build Tomorrow's Prep List.
Coding Liquids tutorial cover featuring Sagnik Bhattacharya for Food Truck Inventory Management: Build Tomorrow's Prep List.

Export yesterday's item sales, turn each item into ingredient quantities with your recipe sheet, subtract what is left on the truck, and prep up to each ingredient's par level for the next service. Paste the sales and your closing count into an AI assistant and it writes the list; you check the counts before anything is cooked.

Yesterday alone is a weak forecast, so the method here scales the same weekday's last result by how this week is running against last week. Rain, a nearby event and a sell-out all bend the numbers, which is why the list has a place for your override. The example is a fictional four-day smokehouse truck, and every figure in it is invented.

Follow me on Instagram@sagnikteaches

A smokehouse truck on a Thursday night: the old routine

The truck trades Thursday to Sunday and sells five things: a pulled pork roll ($11), a brisket sandwich ($13), a tub of mac and cheese ($5), a pot of slaw ($3.50) and loaded fries ($9). Meat goes on the smoker the evening before service. Sides and the cheese sauce are made fresh on the morning of service, and no cooked meat or side carries over to the next day. Rolls, buns, fries, BBQ sauce, pickles and onions do carry over.

Connect on LinkedInSagnik Bhattacharya

The old Thursday routine took an hour. At about 10 pm the owner looked in the fridge, remembered that last Friday was "busy", wrote a shopping list from memory and put on "about 30 kilos" of shoulder. Illustratively, that habit cost about $200 a week in binned food and left the truck sold out of brisket before 8 pm twice a week. Both problems have the same cause: the quantities came from a feeling, not from a count of what had sold.

Subscribe on YouTube@sagnikteaches

The aim is a list that says what to smoke, order and make, with a reason beside each line so that it can be checked in a minute. Everything below builds towards one such list, for Friday, written on Thursday night.

Export the week: four columns and one table

Most point-of-sale systems export item sales as a CSV file. You need four columns: item name, quantity, date and time. Add modifiers (add-ons such as "extra pulled pork") and make sure voids and refunds are either netted off or listed, because a refunded roll was still prepped. Food truck POS features that pay off covers which systems make this export painless; the main thing is that the export is item-level, not just daily totals.

date,time,item,modifier,qty
Fri,17:12,Pulled pork roll ,,2
Fri,17:12,Loaded fries,Extra pulled pork,1
Fri,17:14,Brisket sandwich,,1
Fri,17:14,Mac and cheese tub,,2
Fri,17:19,Pulled pork roll ,No slaw,1

Notice the trailing space after "Pulled pork roll" and the modifier on its own column. Both break a naive total, so ask the assistant to trim item names and to report modifier totals separately; how to clean messy data in Excel covers the usual fixes if you prefer to tidy the file yourself. Here is last week's service plus this Thursday, summed by item and day.

Day Pulled pork roll Brisket sandwich Mac and cheese tub Slaw pot Loaded fries All items
Thursday, last week 58 34 40 22 31 185
Friday, last week 86 52 61 30 48 277
Saturday, last week 112 71 80 41 66 370
Sunday, last week 64 39 45 25 35 208
Thursday, this week (just closed) 66 38 47 25 36 212

Upload the CSV files or paste the rows, and have the assistant produce a table like this one. Then compare two of its totals with your point-of-sale report, because a model can silently drop rows from a long paste. If the totals match, carry on; if not, ask it to list the rows it excluded.

The recipe matrix: from items sold to ingredients used

A recipe matrix lists what one portion of each item uses, in the unit you actually prep. Read down a column and you have a recipe; read across a row and you see every item that draws on one ingredient. That second view is what makes a prep list possible, because the pork you smoke feeds two items and the sauce feeds three.

Ingredient Unit Pulled pork roll Brisket sandwich Mac and cheese tub Slaw pot Loaded fries
Pulled pork, cooked kg 0.15 – – – 0.08
Brisket, sliced kg – 0.14 – – –
Rolls (pulled pork) each 1 – – – –
Buns (brisket) each – 1 – – –
Slaw kg 0.04 – – 0.1 –
Mac and cheese, cooked kg – – 0.25 – –
Fries kg – – – – 0.2
Cheese sauce kg – – – – 0.04
BBQ sauce kg 0.025 0.025 – – 0.015
Pickles kg – 0.015 – – –
Red onion kg – 0.02 – – –

If your costing sheet already exists, this is the same data; a ChatGPT food cost sheet for a food truck builds it with prices attached. If it doesn't, let the assistant draft the matrix from your recipe cards, and keep its job narrow.

Below are my recipe cards for a food truck. Build a matrix: one row per ingredient, one column per menu item, with the amount used in ONE portion in kilograms or pieces. Use cooked weights for meat and sides. Do not round to fewer than 3 decimal places. List every assumption you made, and write "check" where a card is vague.

Then weigh one real portion of each item on a kitchen scale and correct the matrix. A matrix that says 150 g of pork per roll when your cook plates 180 g turns every list that follows into a 20% error. Check the loaded fries row first, since add-ons are where drift hides.

Forecast Friday: last Friday, scaled by this Thursday

The method is simple enough to run by hand. Take last Friday's units for each item and multiply by how this Thursday compares with last Thursday. Last Thursday sold 185 items and this one sold 212, so the trend factor is 212 ÷ 185 = 1.146. Cap the factor at plus or minus 15%, so that one freak Thursday can't double a Friday. Then apply any flag of your own. The forecast for light rain from 6 pm is 8% down, which is a judgement from you, not the assistant.

Item Last Friday After the trend factor (× 1.146) After the rain flag (× 0.92) Forecast units
Pulled pork roll 86 98.6 90.7 91
Brisket sandwich 52 59.6 54.8 55
Mac and cheese tub 61 69.9 64.3 64
Slaw pot 30 34.4 31.6 32
Loaded fries 48 55.0 50.6 51
All items 277 317.4 292.0 293

The forecast for Friday is 293 items. Compare it with the naive approach. Thursday sold 212, and if you had prepped Friday from "yesterday's sales" you would have been 81 items short, because Fridays run about 50% above Thursdays on this truck (277 against 185 last week). That is the reason for scaling the same weekday instead of copying the day before.

An assistant can't see the weather, a festival on the next street or the school holidays, and it shouldn't guess. Put those in the prompt as flags with a percentage you chose, and write them in the same place each week so you can see afterwards whether your judgement helped.

Par levels: what each ingredient must not run out of

Par is the amount you want on the truck at opening. Work it out as forecast use plus a buffer, rounded up to something you can actually prepare or buy. The buffer should reflect what a miss costs. Brisket and pork are expensive to over-prepare and impossible to restock mid-service, so they get a small 5% buffer and a careful forecast. Sauces are cheap and keep, so they get 15%. Rolls, slaw and sides sit at 10%.

Ingredient Unit Forecast use Buffer Par for Friday (rounded up)
Pulled pork, cooked kg 17.73 5% 18.7
Brisket, sliced kg 7.70 5% 8.1
Rolls (pulled pork) each 91 10% 101
Buns (brisket) each 55 10% 61
Slaw kg 6.84 10% 7.6
Mac and cheese, cooked kg 16.00 10% 17.6
Fries kg 10.20 10% 11.3
Cheese sauce kg 2.04 15% 2.4
BBQ sauce kg 4.42 15% 5.1
Pickles kg 0.83 10% 1.0
Red onion kg 1.10 10% 1.3

Two conversions matter on a smokehouse truck. Meat is smoked raw but sold cooked, so the list must show raw weights. With the yields this truck has measured (pork shoulder 55%, brisket 50%; weigh yours, because they vary with cut and cook), 18.7 kg of cooked pork needs 34.0 kg of raw shoulder and 8.1 kg of sliced brisket needs 16.2 kg of raw brisket. The second conversion is pack size: rolls come in twelves, so a need for 87 becomes 96.

For the ordering side of par levels, such as supplier lead times and minimum orders, restaurant inventory management with AI goes further than a truck needs. The point here is only that par comes from forecast use, not from last month's habit.

Waste notes: two minutes at close that keep the list honest

A prep list built from sales tells you what was sold, not what was thrown away. If the truck bins 1.5 kg of slaw on Thursday, the sales say the slaw was fine and the list repeats the mistake on Friday. So the closing routine has two parts: count what's left of the items that carry over, and say out loud what went in the bin. A voice note is the fastest way, and the assistant can turn it into a log.

Turn this voice note into a waste log. One row per item: item, amount, reason, rough cost using the unit costs I paste below. Do not add items I didn't mention, and write "check" if an amount is vague.
Unit costs: roll $0.45; slaw $2.10 per kg; brisket, cooked, $11.00 per kg; mac and cheese $2.80 per kg.
Note: "Thursday close. Binned about six rolls that went hard, a tray of slaw, I made too much, about one and a half kilos, a couple of burnt ends of brisket, maybe four hundred grams, and I dropped half a tub of mac when packing down."
Item Amount Reason Rough cost
Pulled pork rolls 6 Went hard on the shelf $2.70
Slaw 1.5 kg Made too much $3.15
Brisket, cooked 0.4 kg Burnt ends not worth serving $4.40
Mac and cheese 0.6 kg Tub dropped during pack-down $1.68
Total $11.93

One line needs a second look before it goes into the log. "Half a tub" isn't a weight, so the 0.6 kg is the assistant's guess, made despite the instruction to write "check". Weigh a full service tub once, write its weight into the prompt, and the guess disappears. Instructions like that one reduce guessing; they don't remove it, which is why you read the log before saving it.

The log is only useful if it changes something. Here, $11.93 isn't dramatic, but the slaw line shows a pattern: if slaw is binned on three Thursdays out of four, its buffer comes down from 10% to 5%. Rolls binned on a shelf mean the order is one pack too big, or that rolls should be ordered for the first three days and topped up on Saturday morning. Review the log once a week and change one buffer at a time, so you can see what each change did.

Expected stock against the closing count

The list is only as good as the count it starts from, so check the count against sales before you trust it. Sales let you work out what the shelf should hold: opening stock, plus deliveries, minus what the recipe matrix says was used, minus logged waste. Do that for each carry-over item, then count the shelf, and the difference is a free audit. This is Thursday's, using the sales, waste log and openings from earlier.

Item Opening stock Used or binned Expected at close Counted Difference
Rolls (pulled pork) 86 66 sold + 6 binned 14 14 0
Buns (brisket) 47 38 sold 9 9 0
Fries 13.7 kg 36 × 0.2 kg 6.50 kg 6.5 kg 0.00 kg
BBQ sauce 6.3 kg 66 × 0.025 + 38 × 0.025 + 36 × 0.015 kg 3.16 kg 3.1 kg -0.06 kg
Pickles 1.5 kg 38 × 0.015 kg 0.93 kg 0.9 kg -0.03 kg
Red onion 2.0 kg 38 × 0.02 kg 1.24 kg 1.4 kg +0.16 kg

Rolls, buns and fries match exactly, which means the matrix and the waste log are doing their jobs. Sauce and pickles are off by 60 g and 30 g, which is noise. The onions are 0.16 kg over, and that is worth a question: either a small bag arrived and wasn't recorded, or the matrix is using more onion per sandwich than the cook does. A gap of a few per cent doesn't need action; a gap that repeats for a week on the same item does, and the usual suspects are an unrecorded delivery, a recipe quantity that's wrong, or waste nobody logged. Count in the same shelf order every night, because a count taken in a different order each time is how items get counted twice or not at all.

Friday's prep list, line by line

At Thursday's close, count the carry-over items (rolls, buns, fries, BBQ sauce, pickles, onions) and note the numbers: 14 rolls, 9 buns, 6.5 kg of fries, 3.1 kg of sauce, 0.9 kg of pickles and 1.4 kg of onions. The list subtracts those from par and groups the actions by when they happen, so the owner works through it top to bottom.

Do What Amount Why
Smoke tonight Pork shoulder, raw 34.0 kg 18.7 kg cooked par ÷ 55% yield
Smoke tonight Brisket, raw 16.2 kg 8.1 kg sliced par ÷ 50% yield
Order for the morning Pulled pork rolls 87 (8 packs of 12 = 96) Par 101 less 14 on hand
Order for the morning Brisket buns 52 (5 packs of 12 = 60) Par 61 less 9 on hand
Make Friday morning Slaw 7.6 kg Par; nothing carries over
Make Friday morning Mac and cheese 17.6 kg Par; nothing carries over
Make Friday morning Cheese sauce 2.4 kg Par; nothing carries over
Make Friday morning BBQ sauce 2.0 kg Par 5.1 kg less 3.1 kg on hand
Open from stock Fries 4.8 kg Par 11.3 kg less 6.5 kg on hand: open a new 10 kg case
Top up Pickles 0.1 kg Par 1.0 kg less 0.9 kg on hand
Skip Red onion 0 Par 1.3 kg; 1.4 kg on hand

The Why column is not decoration. Every line shows the arithmetic, so a wrong line announces itself: if the count says 14 rolls and you can see 40, the list is wrong, not the shelf. Nothing in the list was typed by hand once the inputs were in. The slowest step is the closing count, which is a good reason to count only the items that carry over and appear on the list.

The prompt that writes the list every evening

With the matrix, buffers and yields saved in a project or a pinned note, the evening prompt only needs the new data. Keep the instruction stable, because a prompt you change every week produces a list you can't compare from one week to the next.

You are building tomorrow's prep list for a food truck. Use only the data below.
Sales: last week's item sales by day, and today's, as pasted.
Method: tomorrow's forecast = the same weekday last week, times (today's total / the same weekday's total last week), capped at plus or minus 15%, then my flags.
Flags for tomorrow: light rain from 6 pm, minus 8%.
Recipe matrix, buffers and yields: [paste].
Closing count of carry-over items: [paste].
Return a table: do, what, amount, why. Group by when each action happens (smoke tonight, order for the morning, make in the morning, open from stock, top up, skip). Round meat up to 0.1 kg raw, bread to whole packs of 12, sauces up to 0.1 kg.
Show your arithmetic for the forecast and for each par. If any number looks odd, say so instead of fixing it.

The reply has the same shape as the table above, plus the arithmetic. Spend ten minutes on it: read the forecast, spot-check two lines against the matrix, correct any count that looks wrong, and send the order. That ten minutes replaces the hour of guessing, and the first week's checks tell you whether the method is good enough to trust.

Check the list against Friday's real sales

On Saturday morning, put Friday's actual units beside the forecast. The error column is the one that matters, and an average error of 7.2% is comfortably good enough for prep.

Item Forecast Sold Forecast minus sold Error against sales
Pulled pork roll 91 96 -5 5.2%
Brisket sandwich 55 52 +3 5.8%
Mac and cheese tub 64 69 -5 7.2%
Slaw pot 32 29 +3 10.3%
Loaded fries 51 55 -4 7.3%
Average error 7.2%

The slaw pot has the largest error, at 10.3%, but a miss of three pots costs a few dollars. The pulled pork roll is the one to watch, because it drives the most expensive ingredient. A simple rule: if any item is off by more than 15% two weeks running, change the trend rule for that item, check the matrix, or look for a missing flag. If the average error sits under 10%, leave the method alone. Changing a method that works usually costs more than the error it removes. For a stock count that disagrees with the system even after all this, the usual causes of stock count variance is a good place to look.

Sell-outs hide demand, and add-ons hide ingredients

Two mistakes in the data make a forecast shrink quietly, and both are fixable. The first is the sell-out. Last Saturday the truck sold 71 brisket sandwiches and ran out at 7:40 pm, with service until 9 pm. Sales say 71, but demand was higher. If the hourly report from a normal Saturday shows that 75% of brisket sales had happened by 7:40, the estimate of real demand is 71 ÷ 0.75 = 94.7, so about 95, and the missed sales are about 24 sandwiches, or $312 at $13. Use 95 as next Saturday's base, and mark sell-out days in the export so the assistant knows not to treat them as demand.

The second is the add-on. The matrix above counts 80 g of pork in each loaded fries, but customers can add "extra pulled pork" for a surcharge, and that modifier arrives as its own line. Suppose last Friday had 14 of them. That is 14 × 80 g = 1.12 kg of cooked pork, or about 2 kg of raw shoulder, that no forecast included. The pork ran out at 8:15 pm and nobody could see why. The fix is a row in the matrix for each add-on, so the quantity flows into the same totals.

Two smaller traps follow the same logic. Shared ingredients should be summed once, in the matrix, and never buffered per item: three items use BBQ sauce, and if each item's share is buffered and rounded up separately, the roundings stack and the par comes out higher than the forecast needs. And once you have four or more weeks of history, replace "last Friday" with the average of the last three Fridays, leaving out sell-out days and weather outliers or correcting them first. One Friday is a noisy base; three are a pattern.

Four weeks on: an illustrative before and after

These figures are invented to show what to measure, not a result to expect. A fictional truck that follows the routine for four weeks might track the following.

Measure (weekly average) Before After four weeks What changed
Food binned at close $214 $131 Slaw and sides cut to par; rolls ordered in packs
Items sold out before 8 pm 2.5 0.5 Brisket and pork par include a buffer and the add-on row
Time spent planning prep and shopping 60 minutes 20 minutes One prompt and a 10-minute check replace guesswork
Time spent on the closing count 25 minutes 15 minutes Only par items are counted, in one fixed order

Notice what the routine doesn't need: a software subscription. It runs on an item-sales export, a saved matrix, a closing count and one prompt. If it works for a month, that is the moment to ask whether a stock tool would add anything. The same forecasting idea, applied to a sit-down kitchen, is in forecasting covers and cutting food waste with AI. The one change worth making tonight is the closing habit: count the carry-over items, say the waste aloud, and save the sales export. Everything else follows from those three.

Prep list questions from food truck owners

How much sales history do I need to start?

One week of item-level sales is enough to build the first list, because the method scales last week's same weekday by how this week is running. After four weeks, average the last three of each weekday and leave out sell-out days. More history smooths the forecast, but a rough list with a closing count beats a perfect forecast with no count.

Can my point-of-sale system do this for me?

Some systems offer inventory features that link sales to stock, and they are worth a look once your menu and suppliers settle. The method here works with any item-level export, so you can start now and judge a built-in tool against a list you already trust and understand.

How do I handle specials and one-off menu items?

Give each special its own column in the recipe matrix and treat it as a separate item with its own history. For a first-time special with no history, forecast from the item it replaces, plan a small batch, and record exactly when it sells out so the next forecast has a real number to start from.

Why does the list round meat up to raw weights?

Meat is bought and smoked raw but sold cooked, so a prep list in cooked kilograms invites a shortfall. Measure your own yield by weighing a batch before and after cooking, divide the cooked par by that yield, and re-measure when you change cut, supplier or method because yields move.

Further reads

Sources: the author's own worked method. The truck, its menu, sales, yields, costs and results are invented for illustration, and the before-and-after figures are examples of what to measure, not outcomes to expect.

Want your closing routine and prep prompt set up?

On a 1:1 call we can look at your item-sales export, build the recipe matrix together, and decide which parts of the evening prep list are worth handing to AI and which stay by hand.

Book a 1:1 call with me