This picks which Packers/Kitchen Managers you'll see as tap-tiles for this login — it's asked every time, not saved to your account.
Daily Fruit — Packing
Needs a packer 0
All caught up — no unassigned orders 🎉
Scheduled 0
Nothing loaded ahead of time right now.
Printed today0
No orders were printed on this day.
Prep totals 0
Nothing to prep right now.
Prep stock0
No prep tiles for today yet. They are created automatically each morning - or tap Generate / recalculate. (Prep items and the products that use them are set up in Admin > Prep.)
Needs processing 0
All caught up — nothing waiting on production 🎉
Scheduled 0
Nothing loaded ahead of time right now.
Completed today0
Nothing completed on this day.
Today's snapshot
Tap a tile above to see the orders behind it.
Orders 0
Nothing here right now.
Production totals 0
Nothing completed in production yet today.
⚠ Needs attention 0
Nothing flagged — the floor is on top of things 🎉
Packers today
No orders printed yet today.
Prep pilot - is it working?
Compares how long production orders take (slip printed to marked complete) before and after prep tiles started. Orders that use a prepped item are compared with all other production orders, so a generally busy or quiet spell isn't mistaken for the tiles working. Tap a tile to see the orders behind it.
Data History
Production totals 0
Nothing was completed in production on this day.
Prep stock 0
No prep stock was made on this day.
Printed0
Nothing was printed on this day.
Completed0
Nothing was completed in production on this day.
Packers
No orders were printed on this day.
Due for delivery0
No orders are scheduled for delivery on this day.
Who's packing this?
No active packers yet. Tap the ⚙ icon to add packers in Admin.
Who's marking this complete?
It'll move back to "Needs processing" and count in the prep tally again.
No active Kitchen Managers yet. Tap the ⚙ icon to add Kitchen Managers in Admin.
Enter how much of each line was just finished - the rest carries over for the next shift.
Admin
Import orders from Sage
Export your order/invoice list from Sage as a CSV, then upload it or paste the contents below. Rows are grouped into orders by the order/invoice number. Items already imported (same order/invoice number) are skipped automatically. Sage's order export doesn't include a category per line, so each item's Packing/Production split comes from the Products tab instead — keep that list up to date.
Recent imports
Unclassified products
Order lines whose product code wasn't found in the list below — they defaulted to Packing on the board. Classify them here (or via a fresh product-list import) and any matching orders already on the board are corrected automatically.
Nothing outstanding — every product on the board is classified.
If something above is already correctly set up in the list below but an order still shows it as unclassified, click this to re-run the match against everything currently classified — no need to edit or re-save the product itself.
Import the Sage product list
Export Sage's item/product list (code, description, category) as a CSV. New products get added there periodically, so re-export and re-import this every so often (e.g. daily) to pick up anything new — importing only ever adds products that aren't in the list below yet; it never changes the category of a product that's already there, so anything you've classified here won't get overwritten by a stale or re-categorised Sage export.
All products (0)
Change any product's category here at any time — not just newly unclassified ones.
Shifts
Define your shifts here (e.g. "Day", "Night"), then assign each Packer, Kitchen Manager and factory-floor User to one on their own tab. Someone logged in under a different shift's account won't see that shift's names as tap tiles — on purpose, so it's obvious at a glance when the wrong account is logged in and forces a switch. Leave a Packer/Kitchen Manager/User's shift blank to make them visible to every shift.
Customer Shelf Life
Every Production label's "Expires" date defaults to Settings > "Label shelf life days". Only add a customer here if they've specifically asked for a different shelf life — everyone not listed (or switched off below) still uses the default.
Label Batch Size
Every Production label normally batches a line item in multiples of 10 (e.g. a 95kg line prints nine 10kg labels plus one 5kg remainder label). Add an override here only for a customer + product combination that's specifically asked for a different batch size - everything else keeps using the normal batches of 10.
Prep planning
Each shift gets prep tiles (e.g. "Peeled Potato - 85 kg") so the next shift starts with prepared stock. The quantity comes from the orders already in the system for that day plus the average of the same weekday over recent weeks (whichever is larger), split equally across the shifts that run that day. Nothing here touches Sage.
1. Prep items
2. Products that use a prep item
Yield = how much of the prepped item one unit of the finished product needs. Example: 1 kg of Potato Chips needs 1.25 kg of Peeled Potato, so the yield is 1.25 (it covers peeling waste). Only Production lines on orders are counted.
Cover a whole family at once: end the product with a *. For example Potato Large - * links every product whose name starts with "Potato Large - " (chips, cubes, wedges, even when a customer's note or a spelling difference is tacked on). A more specific link always beats a family one, so you can give chips their own yield. To leave a product OUT of a family, link it on its own with a yield of 0 (e.g. Potato Large - BAG = 0, because bags are sold unpeeled). You can also type a Sage product code. Names are not case-sensitive.
3. When is each day's prep done? (optional)
Use this to prep a heavy day on the quiet days before it. Example: Sunday ← Friday, Day shift, 30% means the Friday Day shift gets prep tiles worth 30% of Sunday's expected demand (Sunday's production is Monday's deliveries). Add as many rules as you like, and several can feed one day. Pick "All shifts" to split a rule across the shifts that run that day. A weekday that has rules here is prepped only by those rules; a weekday with none keeps the normal equal split between its own shifts. The share is a % of that day's demand, so anything under 100% in total is simply made fresh on the day. (A fixed quantity per shift on a prep item doesn't apply to a weekday that has rules.)
4. Rules
Blank = the system looks at which shifts completed Production orders on that weekday over the history weeks, so a Sunday-only shift doesn't get Monday tiles. Names must match the Shifts tab exactly.
How the day's prep is split across shifts. 1 each = equal. Give a shift with spare capacity a bigger number (2 = twice the share) so it preps more for the busy shift after it; 0 = that shift gets no prep tiles. "Show today's plan" below lists how much production each shift actually completed recently, to help you set these.
Used by "Prep pilot - is it working?" on the Dashboard. Blank = it counts from the first day prep tiles exist.
Check the numbers
Shows what today's tiles would be and why, without creating anything.
Packers
These names appear as tap tiles on the packing screen. Switch a packer off instead of deleting them if they might come back. Tap a shift to check them into it as a tap tile on that shift's account — tap more than one if they work multiple shifts. Leave every shift off to keep them visible on every shift.
Kitchen Managers
These names appear as tap tiles when someone taps Complete on a Production order, to select who's actually marking it complete. Switch one off instead of deleting them if they might come back. Shifts work the same way Packers use them — tap as many as they work, or leave them all off to keep them visible on every shift.
Hidden Customers
Invoices for these customers (internal or own-company accounts) are still imported and logged, but they never show on the Packing or Production boards, the Dashboard, Data History or the prep plan. Type any part of the customer's name (at least 3 letters, capitals don't matter) — "daily fruit" hides every customer whose name contains it. Orders already on the board disappear straight away, and removing a name brings them back.
Users
Everyone who can sign into this app, and what they see once they're in. Factory Floor gets Packing + Production only. Production Manager also gets the Dashboard. Admin gets everything, including this screen. There must always be at least one active Admin — the last one can't be demoted, deactivated, or deleted. Shift is no longer set here — everyone picks their shift right after signing in instead, so it can change login to login.
Add a user
Settings
Used on every printed Production label: Expires = the day it's printed + this many days. One number for every product for now.
Must match the SITE_PASSCODE constant in EmailImport.gs — this is only for that automated inbox watcher, not a personal login. It has no effect on anyone's Users sign-in.
Where EmailImport.gs's automated inbox watcher sends its heads-up emails — an order needing review, a re-imported/replaced order, one requiring a COA, or an import that failed outright. Takes effect on its next 5-minute check, no redeploy needed.
Orders older than this are automatically moved into long-term history once a day, keeping the live board and Dashboard running fast — they're still fully viewable any time on the Data History page, nothing is deleted. An order that isn't fully finished yet (not printed, or a Production line not yet marked complete) is never moved no matter how old — only genuinely finished orders.
Data cleanup
Runs automatically every night. Use this to run it right now instead of waiting — for example, right after lowering the setting above.
Pre-launch testing
Before Packing/Production are actually using this system day to day, real Sage orders still keep flowing in every 5 minutes (nobody's completing them yet) and pile up as test data. Use this to wipe the slate clean while you're still setting things up — unlike Purge above, this deletes every order and item, finished or not, no matter how old. Packers, Users, Settings and Products are never touched. Remove this button once you've gone live and don't need it any more.
Daily Fruit
Packing Slip
Delivery:
Customer:
Notes:
Assigned to: at
* unclassified product — defaulted to Packing, needs checking in Admin
Can't reach the server — check the connection. Retrying…