Why Cleaning Supply Orders Are Harder to Read Than They Look

  • Reading time:9 mins read

Industrial floor cleaner smells like nothing else, a sharp, faintly sweet chemical-pine smell that comes straight back whenever I walk past a janitor’s closet, because my first summer job was stocking the supply cupboard at a school. That cupboard held rows of identical white jugs with small labels, and I mixed them up constantly (the floor cleaner and the glass cleaner came in the same jug with the same cap, and only one word in small print told them apart). A few windows came out streaky that summer, and at least one hallway was briefly sticky.

Years later I was looking at a large pile of real order data from a cleaning supply distributor, anonymized and unnamed here, while working on AI data entry software for distributor orders. My first reaction was relief. After months of food orders, with their lot numbers, best-before dates and items sold by weight, here was a category with no expiry dates at all! I announced, to anyone who would listen, that it was a weekend job. Nobody who actually works in janitorial supplies would have made that promise.

It took three weeks.

Reading the text was never the slow part. Deciding what each line meant was, and cleaning supplies turn out to be a category where the product name on an order says surprisingly little until you also pull apart the form, the pack and the units. If you run a janitorial supply distributor, your order desk already knows this (better than I did, and without needing a spreadsheet to prove it); I just had to learn it from the data.

Is that the concentrate or the ready-to-use?

Take a single all-purpose cleaner. Many cleaners like it come both as a concentrate and as a ready-to-use version, in a quart spray bottle, a gallon jug, a pail and a drum, and the concentrate label often lists more than one dilution depending on how dirty the job is. One state purchasing listing for an all-purpose cleaner puts a general-use ratio and a stronger heavy-soil ratio in the same sentence. Multiply the dilutions by the sizes and one chemical can fill most of a catalog page on its own.

Plain white cleaning-chemical jugs in several sizes on a warehouse shelf

Buyers, reasonably, do not write catalog pages. They write what is printed on the jug in their closet, or what they half remember, so the office manager at a small building might send “all purpose, the gallons” while a school district sends a full line with an item code, a ratio and a case count. Both are fine orders, but only one of them carries enough to pick a single item off your shelf.

My first mistake came from two lines that looked almost identical. One read “All purpose cleaner 1 gal concentrate 1:64”, meaning a single jug of concentrate that the buyer mixes at 1 part to 64 parts water, so it becomes dozens of gallons of solution before it is empty.

A different buyer wrote “All purpose cleaner 4x1gal RTU”: a case of four one-gallon jugs of the ready-to-use version, already diluted, ready to pour into a bucket or a spray bottle.

Strip both lines down the way a simple text matcher reads them and the heaviest tokens are identical: all, purpose, cleaner, gal. The words “concentrate” and “RTU” are still there, but next to a strong product-name match they barely move the score. Both scored well against the same product name in the catalog. Yet one is a single jug of concentrate that a buyer stretches across weeks of cleaning, and the other is a case of pre-mixed solution that runs out far sooner, at a different price per unit and usually under a different item code. Merged, they produce an order that looks right on screen and is wrong in the warehouse. (It is also wrong on the invoice, which is the part the customer notices.) My first version merged them happily, every single time.

What the buyer wrote What a plain text match weighs most What it actually is
All purpose cleaner 1 gal concentrate 1:64 all purpose cleaner, gal (plus “concentrate”, treated as minor) One jug of concentrate, sold each, diluted by the buyer
All purpose cleaner 4x1gal RTU all purpose cleaner, gal (plus “RTU”, treated as minor) One case of pre-diluted jugs, sold by the case

The fix was to stop treating the product name as the whole line. Each line now gets split into separate fields before any matching happens: the product family, the form (concentrate or ready-to-use), the pack (how many units of what size, and whether the quantity means cases or jugs), and the dilution. Only the product family gets compared with names in the catalog, while form and pack have to agree exactly or the match is thrown out. Dilution needed the most thought, because on a concentrate it usually describes how the buyer uses the product rather than what you sell them (the same jug can go out at a light ratio for daily mopping and a strong one for a neglected floor). A ratio on the line settles the form, concentrate, and leaves the size and pack exactly as open as before.

That last point cost me most of the second week.

Paper goods play the same trick with sizes instead of dilutions. A buyer who writes “roll towels” might mean hardwound rolls for a lever dispenser or center-pull rolls for a different one, and toilet tissue comes in standard rolls and jumbo rolls that only fit their own dispensers. The dispenser on the buyer’s wall decides which item is right, and the dispenser is never on the order.

A big name on the order, and it isn’t on your shelf

Some buyers write a famous brand name the way people ask for “a tissue” when any facial tissue will do, and some write it because their facility has approved that exact product and nothing else. From the order alone you cannot tell which. In the data I looked at, a line naming a brand the distributor didn’t stock was not an error to correct; it was a question for the person who knows the customer, and the right answer was sometimes the house equivalent and sometimes a phone call. Disinfectants made this sharper, since a buyer may have chosen one for its kill claims and contact time, and those don’t carry over to a lookalike just because the jug is the same size.

So my matching stopped guessing on these lines. It flags them, shows the nearest item the distributor actually carries, and leaves the call to someone who has met the customer.

“Same again,” written on last year’s invoice

The orders that looked easiest were the repeat ones copied from an old invoice. A buyer digs out the last invoice, photographs it, circles a few lines and writes “same again” in the margin, or retypes the item codes into an email. Your own item codes coming back to you sounds like a gift, and mostly it is (they were the cleanest matches in the whole pile).

Trouble comes from the time in between. Since that invoice was printed, a product may have been discontinued and replaced, an item once sold by the jug may now ship only by the case, and the prices on the old paper are the prices from back then, which the buyer may quietly treat as the price they expect to pay. Several codes in the data pointed at items that had since been replaced, and those matches looked perfect precisely because the code was exact. A perfect match to a dead item is worse than an obvious miss, because nobody stops to look at it.

Handwriting on top of the printed invoice adds its own layer: a crossed-out quantity, a new number squeezed beside it, an arrow that might mean “more of this” or “skip this”. I ended up sending every handwritten change on an old invoice to a person to confirm, since a wrong guess there changes a quantity on a real order.

So what can a cleaning supply distributor actually do?

None of this needs a new system on day one. Most of it is about making your product list say out loud what your order desk already carries around in its head, in roughly this order:

  • Give every item its own fields for form (concentrate or ready-to-use), unit size and case pack, instead of burying them in the description.
  • Keep a short list of the brand names your customers write and the item each one usually means for that customer, including the ones where the answer is “call them first”.
  • Leave discontinued codes in the list, pointed at their replacements, so a photo of an old invoice still lands somewhere sensible.
  • Note which dispensers each regular customer has on the wall, because that decides the paper and the concentrate packs.

Software can carry some of this load, as long as it is honest about what it doesn’t know. That is roughly how Botowski treats janitorial supplies: it reads orders from email, PDFs, scans and photos, matches each line to the distributor’s own product list and prices, and when a line could be either the concentrate or the ready-to-use, it asks a person instead of picking one. What comes out is a clean file for your accounting or inventory tool, and the decisions about substitutes stay with your people.

On the last afternoon of that summer job I took a fat black marker and wrote a big C on the cap of every concentrate jug, so nobody would pour one neat into a spray bottle. The following summer I opened that cupboard once. Every jug had been replaced, all plain white, and not one cap had a letter on it.

Leave a Reply