One row per cafe, coffee, grind and bag size
A cafe usually takes an espresso blend, a filter coffee and a decaf, often in more than one format, so a dozen accounts is thirty to fifty order lines rather than twelve. One row per cafe cannot hold that, and one column per cafe stops working the first time an account adds a coffee.
Twelve-ounce bags are the US specialty retail standard, so a cafe with a retail shelf takes them alongside the 2 lb or 5 lb bags its baristas open. Those are two different lines for the same coffee, and they carry different prices per pound.
Grind belongs in its own column with a fixed set of values
A free-text note reading "grind for batch brew, whole bean for the shelf" cannot be summed, filtered or sorted. Once grind is a column holding one of a short list of values, the sheet answers "which bags go through the grinder on Tuesday" with a filter rather than a read-through.
Espresso needs more rest than filter, so roast day is a per-coffee decision
Most of the CO2 in roasted coffee escapes in the first 24 to 48 hours, and pressurised brewing drives more of it out of the bed than filter does. Every source that splits the two puts espresso's rest longer: filter is commonly cited at two to ten days off roast, espresso at five to fourteen. No standards body publishes a figure, and roast level moves it - darker roasts degas faster than lighter ones.
That is what the two date columns are for. A sheet holding only the delivery day carries no record of whether Friday's espresso was roasted early enough to be drinkable on arrival. Specialty roasters commonly ship within 24 to 48 hours of roasting, so on a shipped account the roast day is also what starts the rest clock running in transit.
Totalling a roast day out of the order lines
Bag size has to be a number in its own column for this to work. With that in place the roast-day total is a pivot over the order lines: roast day and coffee down the side, the sum of bags times bag weight in the body. Nothing is retyped, and adding an account adds rows rather than changing a formula. A cell reading "3 x 5lb" turns every total back into hand arithmetic.
Two things keep the pivot honest:
- Roast day is derived from delivery day, not typed. A lookup from the delivery day plus that account's lead time keeps the two in step when a public holiday moves a run.
- The week is a column, not a tab. A tab per week means last week's structure is frozen in place and the pivot only ever sees one week. A
week startingcolumn keeps one sheet that can be filtered to this week and still totalled across a quarter.
RoasterTools' published guidance on wholesale deadlines is to run two rather than one: a customer-facing order deadline, and an internal production cutoff a few hours behind it so late arrivals land before the roast is committed rather than after. A sheet can carry both as columns. What it cannot do is refuse a change that arrives after them.
The standing bag count is the sheet's real content
Most cafe lines do not move week to week. A small cafe gets through somewhere around 15 to 30 pounds a week depending on hours and site, and the count that reflects that is stable for months. The weekly work is the exceptions: an account closed Monday, a festival week doubling the espresso, a new single origin on for a fortnight.
So the sheet holds the standing count well and the exceptions badly, because the exceptions arrive as messages. What is a standing order in wholesale covers the pattern the bags-per-week column is a manual version of.
Where the sheet stops paying for itself
The sheet is cheapest while one person maintains it and orders arrive in one place. Each of these removes one of those conditions:
- The changes arrive in WhatsApp and the sheet is the transcription. The thread becomes the record and the sheet a copy of it, which is two systems to keep aligned.
- A cafe asks what it ordered last week. Answering means reading the sheet back to them, and there is no version they can check themselves.
- A second person needs it on roast day. Two people in one sheet is when a deleted formula or an overwritten count stops being hypothetical.
- Invoicing is retyping the sheet. Bags times price per bag is already in the columns, but moving it onto an invoice and tracking who paid is a second pass over the same data.
- The cutoff is a sentence repeated rather than something that closes. A column recording a deadline does not enforce one.
None of those are volume thresholds. A roaster doing 400 pounds a week with orders coming in by text hits them sooner than one doing 2,000 pounds with every account on a fixed weekly count.
Roasting software and an order desk are different purchases
RoasterTools is the incumbent in coffee and charges by roasted volume: each tier includes a number of pounds a month with a per-pound overage above it, and bundles its own payment processing and production planning that syncs orders to roast batches. For a roastery that wants green coffee tracked through to roast batches, that is the product, and nothing here is a substitute for it.
The narrower job is getting the orders out of WhatsApp without buying a roastery system. Wholesale Handler is an ordering portal and invoicing desk on a flat monthly fee, with no per-pound charge, no per-user charge and no cut of the order value. Each cafe signs in, sees its own coffees at its own prices and places its own order; a standing order on a weekly to four-weekly cadence generates itself at the cutoff, and the cafe can pause it, skip a week or change quantities. A cutoff can differ per delivery day, so a Wednesday run closes Tuesday morning while the Saturday run stays open until Friday. Orders consolidate into a production schedule and become packing slips and invoices. How to take wholesale coffee orders from cafes covers that setup for a roaster.
What it does not do: green coffee inventory, roast profiles, roast-batch planning or payment processing. Those stay wherever they are now, which for a dozen accounts is often a roast log and a bank account. The demo needs no signup, so the sheet can be imported and tried against real accounts first.
Wholesale Handler



