Daily Production Report: Summarise Counts, Scrap and Stops With AI

Coding Liquids tutorial cover featuring Sagnik Bhattacharya for Daily Production Report: Summarise Counts, Scrap and Stops With AI.
Coding Liquids tutorial cover featuring Sagnik Bhattacharya for Daily Production Report: Summarise Counts, Scrap and Stops With AI.

A daily production report for a small factory should show output against plan, good units and scrap with reasons, stop minutes by cause, labour hours, and anything that threatens tomorrow's orders. AI drafts it by totalling three shift sheets and writing a one-page summary the owner can read in a minute.

The drafting is the easy part. What makes a report worth reading is a fixed layout, definitions that never change, and a check that the totals add up before anyone acts on them. Below is one complete run: three untidy shift sheets, the prompt, the summary, and the checks that catch the AI when it is wrong.

Follow me on Instagram@sagnikteaches

Five numbers and three flags

An owner who reads the report at 6 a.m. wants to know, quickly, whether yesterday went to plan and what needs a decision today. Keep the top of the page to these:

Connect on LinkedInSagnik Bhattacharya
  1. Attainment: good units made divided by units planned, per product and in total.
  2. Scrap rate: scrap divided by everything produced (good plus scrap), with the top reasons.
  3. Stop time: minutes lost, count of stops, and the largest causes.
  4. Availability: planned run minutes minus stop minutes, divided by planned run minutes.
  5. Output per labour hour: good units divided by hours worked, which tells you when a short-staffed shift was held up by people rather than the machine.

Then add up to three flags in plain words: anything that broke a limit you set (scrap above your threshold, a stop longer than 30 minutes), anything that repeated from a previous day, and anything affecting a customer order. Everything else goes lower on the page or into a weekly roll-up. If you want the same data pushed further into overall equipment effectiveness, an OEE calculator that sorts downtime from notes picks up where this leaves off.

Subscribe on YouTube@sagnikteaches

The raw material: three shift sheets as they really arrive

Say a small wholesale bakery runs one dough line and one oven across three eight-hour shifts, making two products, a white sandwich loaf and a seeded batard. The day's plan is 6,000 loaves and 2,400 batards. Each shift leader fills a sheet, in their own style. Illustrative content, typed up with the names replaced by shift labels:

SHIFT 1 (early) - crew 6 - 8 h
White loaf: good 2150, scrap 70 (dense 40, burnt 20, dropped 10)
Batard: good 700, scrap 25 (misshapen)
Stops: 06:40-07:05 divider jam. 10:10-10:25 waiting on flour delivery.
Notes: planned run 450 min.

SHIFT 2 (day) - crew 6 - 8 h
White loaf  good 2300  scrap 110: oven temp 60, underproof 30, mislabelled 20
Batard good 800 scrap 40 (oven temp 25, misshapen 15)
Stops - oven burner fault 14:20-15:05; film change x3 about 10 min each
Planned run 450. Oven ran hot after burner restart.

SHIFT 3 (late) - crew 5 (one short) - 8 h
WL 1900 good / scrap 60 - slicer tore 40, dropped 20
Batard 650 / 20 misshapen
Slicer blade change 20 min. Quality hold on batch 35 min while QA checked weights.
Run planned 450.

Notice what is wrong with it, because your sheets will have the same problems: three different layouts, inconsistent labels (WL, White loaf, White sandwich loaf), a stop with no clock times, one stop with a vague cause ("quality hold"), a note about the oven that connects two things without saying so. A report built on this will only be as good as the clean-up, which is where AI helps most.

The Complete Excel Course with AI Integration thumbnail

The Complete Excel Course with AI Integration

From formulas and pivot tables to Power Query, DAX, VBA and AI with Copilot, ChatGPT and Claude — hands-on from the first lesson.

By Sagnik Bhattacharya and Virginia Thorn, Primetime Emmy Award winner

Buy now

The prompt, with the rules written in

Give the assistant the plan, the three sheets and definitions that never vary. Keep the instructions in a saved prompt, or in a project so staff cannot reword them. The tutorial on setting up a ChatGPT project with instructions and files shows how. The prompt used here:

You are preparing the daily production report for the owner of a small bakery. Today's plan: white sandwich loaf 6,000, seeded batard 2,400. Planned run time is 450 minutes per shift.
Use ONLY the three shift sheets below. Do not guess any figure. If something is unclear, list it under "Queries" and carry on.
Definitions: Attainment = good units / plan. Scrap rate = scrap / (good + scrap). Availability = (planned run minutes - stop minutes) / planned run minutes. Output per labour hour = total good units / (crew x 8 hours, summed across shifts).
Steps:
1. Standardise product names to "White loaf" and "Batard".
2. For each shift and product, show good, scrap, scrap rate.
3. Group scrap by reason across the day and show the top three with units and share of total scrap.
4. List every stop with duration, cause and shift. If a stop has no clock times, say "duration estimated" and show how.
5. Show the day totals and the five metrics.
6. Write up to three flags in one sentence each. Say "possible link" rather than "caused by" where you are inferring.
7. Show your arithmetic for every total so I can check it.
Output: one page. Tables for numbers, plain words for flags. No advice, no cheerful commentary.
SHEETS: (paste three sheets here)

Two instructions do the heavy lifting. "Use ONLY the sheets" and "list under Queries" stop it filling gaps with invention, and "show your arithmetic" makes the check possible. The line about "possible link" matters for the example above, as you will see.

What comes back, and what to check

An illustrative summary, as the assistant might return it. The totals shown are the correct ones for the sheets above, so you can see what a right answer looks like:

ProductPlanGoodAttainmentScrapScrap rate
White loaf6,0006,350106%2403.6%
Batard2,4002,15090%853.8%
Total8,4008,500101%3253.7%

Stops for the day came to 170 minutes across 8 stops, so availability was (1,350 − 170) ÷ 1,350, which is 87.4%. Output per labour hour was 8,500 good units over 136 crew hours (6 + 6 + 5 people at 8 hours each), or 62.5. And the stops by cause:

CauseShiftMinutes
Oven burner fault245
Quality hold (weight check)335
Packaging film changes (3)230
Divider jam125
Slicer blade change320
Waiting on flour delivery115

Scrap by reason: oven temperature or burnt, 105 units (32% of scrap); misshapen, 60; slicer tearing, 40; dense crumb, 40; underproof, 30; dropped, 30; mislabelled, 20. The three flags might read:

1. Oven: the 45-minute burner fault on shift 2 was followed by 85 units scrapped for oven temperature or burning in the same shift. Possible link. Check the burner log before tonight's run.

2. Batard finished at 90% of plan (2,150 of 2,400) while white loaf ran at 106%. Only shift 2 made 800 batards; shifts 1 and 3 made 700 and 650.

3. Shift 3 ran one person short and still made 2,550 good units, 63.8 per labour hour, close to shift 2's 64.6 and ahead of shift 1's 59.4.

That third flag is arguably not worth the owner's attention, and a good prompt revision would tell the assistant to flag only items that broke a limit. Reports improve by editing the prompt after real use, not by writing it perfectly the first time.

The checks that take five minutes

  • Reconcile. Good plus scrap equals total produced for each shift: shift 1 is 2,150 + 70 + 700 + 25 = 2,945. If a sheet has a "total produced" line, the totals must match.
  • Cross-total. Scrap by reason must add up to scrap by product: 105 + 60 + 40 + 40 + 30 + 30 + 20 = 325, the same as 240 + 85.
  • Stop minutes. Add the six lines in the stop table by hand. If the AI says 170 and you get 165, a stop has been dropped or double counted.
  • Queries. Read what the assistant could not resolve before you read its flags. "Film change duration estimated at 10 minutes each from the note" is honest; if there is no Queries section, ask why.

Put the same arithmetic in a spreadsheet once, with a formula for each metric. Scrap rate in a cell, for good units in C2 and scrap in D2, is simply =D2/(C2+D2), and attainment is =C2/B2. Each day the spreadsheet and the AI should agree, and when they do not, the spreadsheet is right. If you want help writing those formulas, ask the assistant for them in the same chat and test each one on a day you have already totalled by hand.

The same stop counted twice

A factory that ran this process for a few weeks noticed its stop minutes were sometimes a little higher than the machine logs showed. The cause was a stop that straddled a shift change: the late shift wrote "press jammed 20:50 to 21:30" and the next shift wrote "press jam, cleared 21:30, 30 min". Both sheets described the same event, and the assistant reported 70 minutes of stop time where there had been 40.

The fix was in the template and the prompt. Each sheet gained a "stop carried over from previous shift? Y/N" box, and the prompt gained a line: "If a stop appears to continue across a shift change, count it once and list it under Queries." A manual rule would also have worked, but the box catches the problem at the source, where the person who knows the answer is standing. The lesson that applies to any AI summary is to look for the places where two inputs can describe the same thing.

Fix the input, not only the prompt

Most of the effort in this example is tidying inputs the machine should never have received in that shape. A single shared sheet filled in at the end of each shift, with the same columns for every shift, makes the AI's job a formality. A workable layout:

DateShiftProductGoodScrapScrap reasonScrap qtyStop startStop endStop causeCrew
2026-11-032White loaf2300110Oven temp6014:2015:05Oven burner fault6

A drop-down list for product names, reasons and causes removes the "WL" and "White loaf" problem completely. Keep the lists short: eight scrap reasons and eight stop causes cover most plants, with "other" requiring a note. Once the data is in a table like this, much of the report becomes a pivot table and the AI's job is mainly the wording of the flags. The detailed method for reject reasons is covered in grouping scrap reasons from shop notes, and repeating stops are the subject of reading downtime logs to find repeat stops.

Turning vague notes into entries a report can use

The note "oven ran hot after burner restart" is useful to a human and invisible to a total. Part of the discipline is teaching shift leaders to write one extra line in a form the report can count. Before and after, illustrative:

BEFORE
Oven ran hot after burner restart. Lost a few trays.

AFTER
Stop: 14:20-15:05, cause = Oven burner fault, restart 15:05.
Scrap: 85 units, reason = Oven temp, started after restart (first tray 15:20).
Note: hot spot at rear of oven; set point 230, probe read 245.

The second version names the stop cause from the drop-down, gives clock times so the duration can be calculated, ties scrap to its trigger and keeps a short free-text observation for the maintenance person. It takes the shift leader about thirty seconds longer, and it is what allows the report to say "possible link" with some evidence behind it. A short card at the end of the shift sheet reminding people to give a cause, a time and a quantity for anything unusual is usually enough; there is no need for training sessions.

A weekly roll-up from seven daily pages

Once you have a week of reports, ask the assistant to summarise them as a weekly page that the daily one cannot show: trends. Paste the seven daily summaries (not the raw sheets) with this prompt:

Below are seven daily production summaries. Build a weekly view: a table with one row per day showing total good units, scrap rate, stop minutes and availability; the top three stop causes by total minutes across the week; the top three scrap reasons; any cause or reason that appeared on three or more days. Then write three sentences on what changed from Monday to Friday. Use only the figures given. If a day is missing, say so instead of estimating.

Illustrative output for the bakery: "Oven-related scrap appeared on five of seven days, 412 units in total, the largest single reason. The burner fault stop recurred on Tuesday and Thursday. Scrap rate on days with an oven fault averaged 4.3% against 3.1% on days without." That last comparison is the kind of finding a one-day report cannot show, and it turns a hunch into something the owner can take to the maintenance contractor. Check the averages by hand: the assistant gets simple means right most of the time, but a day carried in a table twice will skew them.

If that repeats week after week, the sensible response is a maintenance plan and not a longer report. That is the territory of building a preventive maintenance schedule from manuals.

The same page in a sheet-metal shop

None of this is specific to food. A small HVAC contractor that fabricates its own ductwork in a workshop could use the identical layout with different words. The unit is duct sections. Scrap becomes sections reworked or rejected, with reasons such as "seam misaligned", "wrong gauge" and "damaged in handling". Stops become press brake tooling changes, waiting on coil stock and machine faults. A sheet from one day might read: plan 140 sections, good 128, scrap 9, two stops totalling 55 minutes (tooling change 35, coil delay 20). The assistant's page would show attainment of 91%, scrap rate of 6.6% (9 divided by 137), and flag the tooling change as the largest stop. The structure and definitions stay the same; only the product names, reasons and causes change, and they live in the drop-down lists.

The same holds for a shop making candles, furniture or printed goods. If the definitions are the same each day, the report is comparable across weeks, and that comparability matters more than the choice of metrics.

Revising the prompt after the first fortnight

After two weeks, read the reports with a pen. You will find lines nobody used, flags that fired too often, and questions you keep asking by phone because the report did not answer them. Edit the prompt, one change at a time, and write the date and the change in a note at the top of the saved prompt. Some changes that commonly follow:

  • "Do not report availability by shift, only for the day." (Too much detail for a one-page summary.)
  • "Add a line: units scrapped valued at material cost, using the cost table below." Useful when scrap in money persuades the people who control spending better than scrap in units. Supply the cost table yourself.
  • "Compare with the same weekday last week." This works only if you paste last week's report, so decide whether the extra step is worth it.
  • "If crew is below 6, say so in the header." A short line in the top corner stops people mistaking a staffing shortfall for a machine problem.

Resist adding more than you remove. A report that grows by a line every week ends as three pages nobody reads. The test for each line is whether the owner has ever changed a decision because of it. Where nothing has changed in a month, take it out and move it to the weekly page.

Setting limits so the report can say "act"

A report that only describes the day leaves the owner to decide what matters. Pick limits once and put them in the prompt, so the flags mean something:

  • Scrap rate: flag a product above 4%, or any single reason above 40 units in a shift.
  • Stops: flag any single stop of 30 minutes or more, and any cause that has appeared on two days in a row.
  • Attainment: flag a product below 95% of plan, and say whether the gap came from scrap, stops or short running.
  • Orders at risk: if you give the assistant open customer orders and ship dates, ask it to say which are threatened by a shortfall. Check this against your order system, since the assistant sees only what you paste.

The right numbers are your own: look at a month of past sheets, find the typical figure and set the limit just beyond it. A limit that fires every day gets ignored, and one that never fires is not a limit. For repeat-day detection, give the assistant yesterday's report along with today's sheets, or better, keep a running table of stop causes by date.

Sending it and keeping it

Make the report arrive without effort. A short routine that works for a small plant:

  1. The last shift leader finishes the shared sheet before leaving.
  2. At 5:30 a.m. the office manager pastes it into the saved prompt and reads the draft.
  3. They check the three totals above and fix any Queries by asking the shift leader, then save the page as a PDF named with the date.
  4. The owner receives it by 6:00. Anything flagged goes on the morning huddle list.

Keep each day's PDF and the sheet it came from in a dated folder. After a month, you have an archive you can ask questions of: which stop cause cost the most minutes, which product scrapped most, whether short-staffed shifts differ. Shift-to-shift handover is a related job, covered in turning operator notes into a handover report.

What to leave out of the AI's reach

Operators' names, pay rates and performance comments do not belong in the prompt; the report is about the process, not individuals. Customer names and contract prices are also unnecessary, and so are supplier terms. Use a business-grade AI account that does not train on your content, and keep production recipes and any formulas you treat as trade secrets out of what you paste. If the report ever needs a person's name, such as for a safety incident, put it in a separate note that goes to the right manager, not into a summary that circulates.

Questions about automating the daily production report

What is the minimum a daily production report needs?

Output against plan, good units and scrap, stop minutes with causes, and anything affecting tomorrow's orders. If a figure does not change a decision the owner makes that day, move it to a weekly report instead of cluttering the daily one.

Can AI read handwritten shift sheets?

It can read many, but handwriting is where numbers get misread. Type the figures into a shared sheet at the end of each shift, or photograph neat forms and check every total against the original before the report goes out.

How do I know the AI's totals are right?

Add them up yourself once, then let a spreadsheet do it every day. Compare the AI's totals with the spreadsheet's. If they differ, the sheet wins. Ask the AI to show its working so the mismatch can be traced to a row.

Should operators' names appear in what I give the AI?

No. Use shift names, line numbers and initials instead. The report is about the process, and the AI does not need to know who ran the machine to total the scrap or the stops.

How long does the report take once it is set up?

In the worked example, about ten minutes: paste the three sheets, read the draft, check the totals and send. Building the template and prompt the first time takes an hour or two.

Further reads

Sources: standard production-reporting definitions (scrap rate, attainment, availability); all figures in the worked example are illustrative.

Want a daily report your team can run without you?

On a 1:1 call we can look at your current shift sheets, decide the five numbers worth reporting, and set up a template and prompt so the summary appears in your inbox each morning.

Book a 1:1 call with me