Pizza Shop Inventory: Plan Dough and Toppings From Weekend Orders

Coding Liquids tutorial cover featuring Sagnik Bhattacharya for Pizza Shop Inventory: Plan Dough and Toppings From Weekend Orders.
Coding Liquids tutorial cover featuring Sagnik Bhattacharya for Pizza Shop Inventory: Plan Dough and Toppings From Weekend Orders.

Export eight weeks of orders by item, size and day, ask AI to total pizzas by size for each Friday, Saturday and Sunday, and turn that into dough balls, cheese and toppings using your recipe cards. Plan dough to your busiest ordinary weekend, cheese a little lower, fresh toppings to the average, and check one day by hand.

Count sheets and templates tell you what is in the cooler. They do not tell you what Saturday will sell, and dough cannot wait for Saturday: if your recipe needs a day or two in the cooler, the number is fixed on Wednesday. The history in your till is the better guide. AI is good at the dull part, the pivot and the arithmetic. You supply the order history, the recipe cards, the delivery days and the judgement about events.

Follow me on Instagram@sagnikteaches

Pull one export that answers one question

The question is "how many pizzas of each size did we sell on each Friday, Saturday and Sunday?" That needs one row per item sold: date and time, order number, channel (counter, phone, website, app), item, size, quantity and whether the line was sold, refunded or voided. Many tills and online-ordering dashboards can export sales by item or an order list. If yours can only give daily totals, tally pizzas by size from the tickets for four weekends instead. Eight weeks of export is a sound start: once you set aside a holiday week it leaves seven ordinary Saturdays, and anything shorter leaves you guessing about the usual swing.

Connect on LinkedInSagnik Bhattacharya

Delete customer names, phone numbers and addresses before the file goes anywhere near an AI tool. The forecast needs time, item, size and quantity, and nothing else. A few rows of a clean export look like this:

Subscribe on YouTube@sagnikteaches
date,time,order_id,channel,item,size,qty,status
2026-09-05,18:42,10231,phone,Pepperoni,Medium,1,sold
2026-09-05,18:42,10231,phone,Garlic bread,,1,sold
2026-09-05,19:05,10232,website,Family deal,,1,sold
2026-09-05,19:11,10233,counter,Margherita,Large,2,sold
2026-09-05,19:20,10234,app,Vegetarian,Small,1,void

The Family deal row is the trap. It has no size, because the till sells it as one item, so a tool that totals pizzas by size will skip it. Write a small side table of what each deal contains and hand it over with the export: Family deal is two medium pizzas and one garlic bread; Lunch deal is one small pizza and a drink. Do the same for half-and-half pizzas, which should count as one pizza and not two, and for calzones if you make them from the same dough.

Pizzas per weekday: the table AI builds and you check

Upload the export and the deal table to ChatGPT, Claude or another assistant that reads spreadsheet files, and ask for the pivot in a way that forces it to show its working. The tool is only as reliable as its reconciliation, so the prompt asks for one:

Attached: an order export (CSV) and a table of what each deal contains.
Ignore rows with status void or refund. Count one pizza for each pizza line, expanding deals using the table. Half-and-half counts as one pizza.
Build a table of pizzas by size for each Friday, Saturday and Sunday over the eight weeks, with a weekend total.
Use the local date of the order, not the date in the export if they differ.
After the table, list: total rows read, rows skipped and why, and any row you could not classify.
Do not estimate anything. If a size is missing, tell me.

The result, with illustrative numbers, is a table like this. Week 6 was a long weekend:

WeekFridaySaturdaySundayWeekend
1168212121501
2175236134545
3160198118476
4181241140562
5172225129526
6 (long weekend)190262150602
7166219125510
8178230133541

Now check it, before you order a kilo of anything. Pick one Saturday and compare the tool's total with the till's own daily report. If the tool's first pass puts week 3's Saturday at 184 pizzas and the till says 198, the gap of 14 is seven Family deals at two medium pizzas each, which the tool dropped because the size column was blank. Fixing the deal table brings the totals into line, and the tool's row count then matches the export. A second common slip is time: if the export stamps orders in a different time zone, orders after midnight, or late orders on a busy night, land on the wrong day. Spot it by comparing the last order times in the table with your closing time.

The same habit applies to every number in this tutorial: one hand check per table, against a source the AI did not produce. The tutorial on why AI stock forecasts go wrong lists the other ways a tidy table misleads. If you would rather build the pivot yourself in a spreadsheet and use AI for the formulas, the ChatGPT for Excel guide covers that route.

Which weeks to leave out, and what to plan to

A holiday weekend is information, not a baseline. Leave week 6 out of the averages, keep it as the ceiling for the next long weekend, and work from the seven ordinary weeks:

DayAverageLowestHighestWeek 6
Friday171160181190
Saturday223198241262
Sunday129118140150

There are three plausible numbers per day, and the right one depends on what it costs you to be wrong in each direction. A dough ball costs about 20 cents in flour, yeast and salt (check your own recipe card). A medium pizza you cannot make because the dough ran out costs the margin on it, say $9 of a $15 sale. That is roughly 45 to 1, so plan dough to the busiest ordinary weekend: 181, 241 and 140, which is 562 pizzas. Cheese is different if it carries over to the next delivery, because a surplus is stock rather than waste, so plan it halfway between the average and the busiest: 176, 232 and 134, which is 542. Fresh toppings with a short shelf life, such as mushrooms and peppers, are the opposite case: a surplus on Sunday night is likely to be binned, so plan them to the average: 171, 223 and 129, which is 523.

Those three rules are a decision, not a calculation. Tell the tool which one to apply to each item, and re-read your supplier's use-by dates before you settle the fresh-topping rule. The general logic of par levels, and how to set them for a whole kitchen, is in the tutorial on restaurant inventory management with AI.

From pizzas to dough balls, by size

Dough is counted in balls, and a ball is sized to the pizza. Take the share of pizzas by size from the same export: say 24% small, 49% medium and 27% large. Add the dough your sides use, such as one small ball for each portion of garlic bread. With garlic bread at 40, 52 and 30 portions on Friday, Saturday and Sunday, the dough plan at the busiest-ordinary level comes out like this:

DayPizzas plannedSmall balls (pizza and garlic bread)Medium ballsLarge ballsTotal balls
Friday181838949221
Saturday24111011865293
Sunday140646937170
Weekend562257276151684

Check one row by hand. Saturday: 241 pizzas at 24%, 49% and 27% gives 58, 118 and 65, and the 52 garlic-bread portions add to the small balls, 58 plus 52, which is 110. Add 3% for dough lost to bad stretching and drops, which is 9 balls on Saturday, and 21 across the weekend, so the weekend plan is 705 balls. The 3% is a starting guess. The waste log in the last section replaces it with your own figure.

For ordering flour, convert balls to weight. With balls of 180 g, 250 g and 340 g, Saturday's 110, 118 and 65 come to 19.8 kg, 29.5 kg and 22.1 kg: 71.4 kg of dough before the 3% allowance. Your recipe card gives the flour per kilo of dough, so multiply. If your dough needs 48 hours in the cooler, Wednesday's batch covers Friday, Thursday's covers Saturday and Friday's covers Sunday. Say that in the plan, because it is the reason the numbers must be settled early.

Balls per order: the quick rule for the day itself

The till and the phone speak in orders, not pizzas, so keep one more number: dough balls per order. Divide the balls in an ordinary week by the orders in the same week. With the weekend's average orders of 128, 151 and 92, and the garlic bread above added to the average pizzas, it looks like this:

DayOrdersAverage pizzasGarlic breadBallsBalls per order
Friday128171402111.65
Saturday151223522751.82
Sunday92129301591.73

Why keep it? Because plans change at three in the afternoon. If a local event is likely to push Saturday to 170 orders instead of 151, 170 times 1.82 is 309 balls, 34 more than the 275 of an average Saturday, and you can say so in a minute without rebuilding the table. Treat the result as a first answer and add your usual cushion. Keep one rate per day: Saturday's 1.82 is well above Friday's 1.65, so a single weekend rate would leave Saturday short. Refresh the rates every eight weeks from the same export.

Cheese and toppings: par levels from the same table

A par level is the amount you want on the shelf when the delivery lands, so that you do not run out before the next one. For a weekend, it is the planned use from Friday to Sunday, rounded up to the supplier's pack, less what is already on hand. Assume the delivery lands on Thursday morning and covers Friday to Sunday; if yours covers Thursday evening too, add that day's use from the same table. The recipe weights below are illustrative, so replace them with your recipe cards.

ItemPlanned onPer pizza (small, medium, large)Share of pizzasWeekend use
Mozzarella blend542 pizzas90 g, 130 g, 180 gAll72.6 kg, plus 2.0 kg for cheesy garlic bread: 74.6 kg
Pepperoni542 pizzas40 g, 60 g, 85 g38%12.8 kg
Mushrooms523 pizzas30 g, 45 g, 60 g21%5.0 kg
Green peppers523 pizzas25 g, 40 g, 55 g17%3.6 kg

The share column comes from your menu: multiply each named pizza's share of sales by the toppings on its recipe card. With an illustrative menu:

Menu itemShare of pizzasToppings besides cheese
Margherita25%None
Pepperoni30%Pepperoni
Meat feast8%Pepperoni, sausage
Veggie17%Mushrooms, peppers, onion
Chicken and mushroom4%Chicken, mushrooms
BBQ chicken10%Chicken, onion
Other6%Varies

Pepperoni sits on the Pepperoni and Meat feast pizzas, so 30% plus 8% gives 38%. Mushrooms sit on Veggie and Chicken and mushroom, 17% plus 4%, which is 21%. Peppers are on the Veggie alone: 17%. If your till records toppings as modifiers, such as extra mushrooms, add those too, or the share will be understated.

Take the cheese. The 542 planned pizzas split into 130 small, 266 medium and 146 large. That is 130 times 90 g, plus 266 times 130 g, plus 146 times 180 g: 11.7 kg, 34.6 kg and 26.3 kg, so 72.6 kg. Garlic bread with cheese, on 40% of the 122 portions, is 49 portions at 40 g, or 2.0 kg. Total 74.6 kg. If you count 9 kg on the shelf on Wednesday and your cheese comes in 2.5 kg bags, you need 65.6 kg, which rounds up to 27 bags, or 67.5 kg. Rounding is a place where tools slip, so do that last step yourself.

Weather, events and promotions: adjust with your own history

The table already contains one adjustment: week 6 ran 15% above an ordinary weekend (602 pizzas against 523). That is your yardstick for the next long weekend, and you do not need to invent a percentage. Plan the same 602, then split it by size as above. With garlic bread up by 15% as well (46, 60 and 35 portions), the dough plan comes to 236, 322 and 185 balls, which is 743, plus 23 for the 3% allowance: 766 balls against 705 for an ordinary weekend. The extra is only about 9%, because the ordinary plan already sat at the busiest ordinary level.

For everything else, add a notes column to the weekly table and mark each week: wet, dry, school holiday, local event, promotion running. After eight weeks ask AI to compare the average pizzas on the flagged weeks with the ordinary ones. Treat any difference built from fewer than three weeks as a hint, not a rule. A promotion deserves the most careful tag, since a Friday offer shifts demand between nights. If you run slow-night offers, the tutorial on filling slow nights with AI-written offers shows how to check each one's margin, and your weekday table is where you will see whether the offer moved orders or only moved them from another night.

The one thing AI cannot do here is know what is coming. It does not see the football on the big screen next door or the road closure that stops deliveries. Keep a short events line in the prompt for the coming weekend and let the tool apply the adjustment you chose.

The Thursday sheet: one page for the kitchen

Once the plan exists, ask for it as a single page that a prep cook can read in a minute. Give the tool the plan, the stock on hand and the pack sizes:

Using the dough table and par table above, produce a one-page prep and order sheet for Friday to Sunday.
Section 1: dough balls to make, by day and size, with the batch day.
Section 2: cheese and toppings to order = weekend use minus stock on hand, rounded UP to pack size.
STOCK ON HAND (Wednesday count): mozzarella 9 kg; pepperoni 1.5 kg; mushrooms 0.8 kg; peppers 0.4 kg.
PACK SIZES: mozzarella 2.5 kg bag; pepperoni 1 kg; mushrooms 1 kg; peppers 1 kg.
Show every sum on its own line so I can check it. Do not round anywhere except the final order quantity.

A correct result (illustrative) orders 27 bags of mozzarella, 12 packs of pepperoni (12.8 kg less 1.5 kg is 11.3 kg, rounded up to 12), 5 packs of mushrooms (5.0 kg less 0.8 kg is 4.2 kg, rounded up to 5) and 4 packs of peppers (3.6 kg less 0.4 kg is 3.2 kg, rounded up to 4). Check each line by hand. If a line is missing a subtraction or has been rounded down, you will see it in the working. When the sheet has been right three weekends running, you can ask for it automatically each Tuesday from a fresh export; until then the check is the job.

A waste log that tunes the next weekend

The plan levels and the 3% allowance are guesses until the waste log says otherwise. Keep it as a table of three columns a night: what you made, what you used, what you binned, plus one line for any item that ran out. After a first weekend (illustrative):

NightBalls madeUsedBinnedBinned as shareRan out?
Friday228211177.5%No
Saturday30230200%Large from 8:40 pm; 7 orders changed or lost
Sunday1751462916.6%No
Weekend705659466.5%

Two different signals, and two different fixes. Sunday binned nearly one ball in six and never ran out, so the plan was too high: drop Sunday from the busiest ordinary week to the mid level and the waste falls without costing a sale. Saturday ran out of large balls at 8:40 pm and turned away or downgraded seven orders. Add those seven to the large count plus 5%, about ten more large balls, and keep the rest of the night as it was. The tidy rule: if a night binned over 10% and never ran out, drop its plan one level; if it ran out, add what you turned away and a little more.

Waste has a second job. Log toppings the same way, in kilograms, and you will see which fresh item is carrying the cost, so that the safe fix is to buy it in smaller, more frequent deliveries rather than to cut the plan. Follow your own food-safety plan and the shelf-life rules for your dough; the aim is to plan better, never to stretch life to save a few balls.

Three ways a tidy table still leaves you short

Most failures here come from a plausible number, not a visible error. These three are worth looking for before the first order.

The tool hands you the average. Ask for "next Saturday's forecast" and you will often get the middle of the history, 223 pizzas in this example. On the seven ordinary Saturdays that number would have been too low on four of them (236, 241, 225 and 230), by up to 18 pizzas. The average is the right answer for fresh toppings and the wrong one for dough, which is why the plan level is yours to set.

A flagged week sneaks back in. If the long weekend stays in the data, the highest Saturday becomes 262 instead of 241, and every ordinary weekend's dough plan carries 40 pizzas more than it needs (602 against 562), with smaller overshoots on cheese and toppings. Say "exclude week 6" in the prompt, and check that the summary line names the weeks it used.

The count stops at pizzas. Garlic bread alone takes 122 small balls across the weekend, 18% of all the dough in the plan. A forecast built on pizzas only would leave you 122 balls short before the first calzone or kids' pack was counted. Ask for every dough product to be listed, with units on every line, because a tool will happily mix kilograms and grams in a single column.

A weekly rhythm that takes about 50 minutes

The loop only works if it fits into the week without becoming a second job. Here is a rhythm built around a Thursday delivery and a Wednesday order cut-off. Move the days to suit your supplier.

WhenTaskMinutes
MondayExport last week's orders and add the week to the table. Read the waste log and change one plan level if the rule says to.15
TuesdayRun the weekday prompt, check one day against the till, set the plan levels, and ask for the Thursday sheet.15
WednesdayCount stock, adjust the order, place it before the supplier's cut-off.10
Friday to SundayLog balls made, used and binned each night: three minutes.9
Total49

The first run takes longer, because the deal table and the recipe weights have to be written down once. After that the same quarter of an hour on Monday and Tuesday keeps the plan current, and the plan improves because the log feeds the next export. That is the whole loop: export, pivot, reconcile, plan by item, convert, order, log. If you want the same approach for a smaller menu, the bubble tea inventory tutorial forecasts by weekday for a drinks counter, and the comparison of takeaway EPOS systems will help you check what your till can export before you need it.

Questions pizza shop owners ask about weekend planning

What if I have no order history yet?

Tally pizzas by size from the tickets for four weekends, using a tally sheet by the pass, and plan from those totals. Four weekends is thin, so plan dough to the busiest of them and keep the waste log from day one. Once the till has eight weeks of data, switch to the export method.

Does this work if most orders come through delivery apps?

Yes, but add the app orders to the same table. Each app exports its own file, so combine them with the counter, phone and website orders by date, and check that no order appears twice. An app that bundles items into deals needs the same side table that defines what a deal contains.

How far ahead should I lock the dough count?

Lock it when the first batch has to be made. If your recipe needs a long rest in the cooler, that is days before service, so the plan level matters more than a late correction. Where your recipe allows a shorter rest, a small second batch on the day absorbs surprises.

Is it safe to upload my sales export to an AI tool?

An export of items, sizes and times holds no personal data once you delete customer names, phone numbers and addresses, which the forecast does not need. Check the tool's data settings for the plan you use, and keep supplier prices and staff details out of the file.

Further reads

Sources: the order history, recipe weights and prices in this tutorial are illustrative and worked by hand; use your own till export, recipe cards and supplier pack sizes.

Want weekend prep to build itself from your orders?

On a 1:1 call we'll look at what your till can export, set up the weekday table once, and decide whether a spreadsheet or a small automation should produce your prep sheet.

Book a 1:1 call with me