At some point in every harvest, the crop stops being a field and becomes product. A field of lettuce is not a sellable thing; a bin of lettuce, cut on a specific morning and moved into a specific cooler, is. The moment that transition happens, it needs a name — a lot code — and the single most consequential decision in vegetable traceability is exactly when that name gets assigned.
The honest answer is: at harvest, and nowhere else. Not at packing, not at the loading dock, not when a buyer’s intake form finally asks for one. The reasons are not bureaucratic. They come down to what a lot code is actually for.
A lot code is an address, not a label
It is tempting to think of a lot code as something you stick on a finished product, the way you might stamp a date on a jar. That model is wrong for traceability purposes. A lot code works like an address — a place that things get written to as they happen, not a label applied after the fact to something already complete.
If the code exists from the moment the first bin comes off the field, then every subsequent event — which cooler it moved to, which truck it left on, which customer it shipped to — is recorded against a real, already-existing address. If the code is invented later, at the dock, then none of those earlier events were ever written against it, because it did not exist yet to receive them. The code looks the same in both cases. Only one of them can actually answer a trace request.
Assigning it late is why traces fail
The most common failure in vegetable lot coding is not a missing code. It is a code assigned a week after harvest, reconstructed from memory or from a scale ticket, to satisfy a buyer’s form. By the time it is created, the person filling it in is guessing at which cooler held which day’s pick and which sale drew from which bin — exactly the kind of reconstruction that a food safety auditor is trained to catch in about one question.
The fix is procedural, not technical: the code gets written on the container, on the field sheet, or in whatever system you use, at the point of harvest, before the product moves anywhere. A tag on the bin, a line in a paper log, a scan on a phone — the medium matters far less than the timing.
Every crew member needs to know the rule, not just the owner
Lot coding fails just as often from an inconsistent crew as from an absent system. If only one person understands when and how a code gets assigned, the discipline holds only while that person is present at harvest — and harvest is exactly the time an operation is short-handed and pulling in extra help. Write the rule down, plainly, and make sure whoever is running a picking crew on a given morning knows it applies to them too.
The bin is where multiple beds quietly become one lot
Vegetable harvest rarely respects the boundaries a planting record drew. A single bin often holds picks from two beds, sometimes from two plantings weeks apart, because that is how harvest labor actually moves through a field. The moment those beds combine in one container, they become one lot, whether or not anyone decided that on purpose.
This is the point where traceability is won or lost. If the beds going into one bin came from the same planting and the same input history, combining them costs nothing — the lot correctly represents a single, uniform batch. If they came from different plantings, the combined bin now carries the wider of the two histories: any question about either planting’s inputs, or any recall touching either seed lot, now has to reach the whole bin, because there is no way to separate them again after the fact.
The discipline is deciding this at the point of harvest, not discovering it later. If the finer distinction matters to you — because one bed was treated differently, or came from a different seed lot worth tracking separately, see the discussion of seed lot traceability — keep those beds in separate containers until sale. Once they are mixed, the lot boundary has already been set for you.
A good lot code carries its own context
The code itself does not need to be clever, but it should not be arbitrary either. A code built from a date and a field or block identifier — something like a harvest date paired with a block letter — tells a reader something useful even before they look anything up. A sequential number with no structure tells them nothing until they cross-reference a separate log, which is an extra step every trace request now has to survive.
Whatever scheme you use, the important property is that it is decided before the season, applied consistently, and never improvised at the moment of shipping under pressure from a buyer who wants a number now.
Consistency matters more than sophistication here. A farm that uses the same simple pattern for every crop, every block, every season is easier to trace than one that invents a clever new scheme each year, because a reader — including you, checking last year’s lots — has to relearn the logic of the code every time it changes. Pick a format once, write it down somewhere durable, and resist the urge to improve it mid-season.
The lot is the join point for everything downstream
Once a lot code exists, it becomes the address that every later event is written to: which customers bought from it, what price, what date, and — going the other direction — which planting and which input applications it came from. This is the join described in the crop management pillar: a harvest lot that can point back through its planting to its inputs and forward to its customers is a complete traceability record. A lot code assigned late has nothing reliable to point back to, because the events it should have captured already happened without it.
Farm40 builds a traceability packet by joining a harvest lot to the inputs applied to it, through the shared planting, and forward to the customers it shipped to — but the join only works because it is a string match on the lot code you entered. If a sale is recorded with a blank or mistyped code, it silently does not link, and no software, this one included, can repair a connection that was never made at the point of harvest. The discipline of coding at the bin, not at the dock, is the part no product can do for you.
The same discipline is worth extending past the pack shed. Once a lot ships, the code should follow it into your yield records, so a customer question about a specific delivery resolves back to the same bin, the same harvest date, and the same block, without anyone having to guess which paperwork from that week matches which truck.
