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.
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.
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.
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
- Cloud Kitchen Inventory: Forecast Prep by Delivery Platform With AI — Forecast prep by order channel in a delivery-only kitchen.
- Pizza Shop Inventory: Plan Dough and Toppings From Weekend Orders — Plan dough and toppings from weekend orders.
- How to Use AI to Set Reorder Points and Prevent Stockouts — Set reorder points so key items stop running out.
- How Food Trucks Can Use AI to Plan Stock, Pitches and Posts — How a truck can use AI across stock, pitches and posts.
- Bakery Production Planning: Oven Slots and a Prep Timeline With AI — How a small bakery turns tomorrow's orders into oven slots and a 6am to 2pm prep timeline with an AI assistant, plus the checks that catch its mistakes.
- Can AI Write a Business Plan for a Food Truck? A Worked Example — A worked food truck plan: AI drafts the text and formulas, you verify menu costs, pitch fees, loan terms and break-even before a lender or organiser sees it.
- Food Truck Pricing: Set Menu Prices After Fees, Fuel and Pitch Costs — One Saturday market worked through with numbers: overhead per service day, cost per portion and the menu prices that clear a 12% margin.
- Hotel Breakfast Food Waste: Predict Buffet Demand With AI — A worked breakfast-covers forecast from occupancy, with an accuracy test, buffet replenishment rules and a five-minute waste log for a small hotel.
- Street Food Stall Business Plan: Pitch Fees, Margins and Stock With AI — Cost every portion, compare pitch fees on wet, normal and busy days, and plan stock and gas for a street food stall, with illustrative numbers and AI prompts.
- Food Truck Ordering App: Pre-Orders, Pitches and Where AI Helps — Compare Square, Toast and food-truck platforms on pre-order slots, location sharing and fees, then see where AI helps and what an app will never do.
- AI Tools and AI Development: The Complete 2026 Guide — the AI hub, including every tutorial in the AI-for-business series.
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.