This note is a technical design memo, not legal advice and not a statement that the system is patentable.
The technically distinctive center of the system is a software engine that:
- computes a perishability-based priority score for each harvest lot,
- uses that priority score to influence buyer and destination assignment,
- jointly allocates scarce transport capacity with market assignment,
- can compare whole-lot routing against split-lot routing when split eligibility is present,
- dynamically reassigns destination or slice when thresholded delay, degradation, or feasibility changes occur,
- stores counterfactual candidate scores so each allocation is reconstructable.
- truck booking workflows,
- simple route optimization,
- mandi price dashboards,
- buyer marketplace or auction flows,
- dispatch scheduling without market reassignment logic,
- crop-price prediction alone.
The novelty-preserving element is not any one data source or routing method. It is the joint decision loop:
- lot perishability priority is computed,
- that priority changes assignment eligibility and score,
- transport scarcity is allocated in light of that priority,
- whole-lot and split-lot alternatives are compared in the same decision loop,
- destination behavior risk is evaluated inside the same score,
- destination can be changed later when thresholds are crossed,
- the engine preserves losing alternatives and score components.
- persist
decision_candidate_scoresas first-class records, - compute
PriorityScorebefore allocation and use it in the allocation loop, - apply priority directly inside candidate loss estimation so buyer assignment can change when perishability changes,
- make congestion a projected queue state instead of a flat penalty so assignment changes when unloading feasibility changes,
- model destination reliability, haircut risk, and payment reliability inside the candidate score so buyer-side execution risk changes assignment,
- model commodity-specific unloading behavior so the same queue state can affect tomatoes, onions, and spinach differently,
- degrade buyer behavior continuously under queue, capacity, and lateness pressure rather than only flipping hard feasibility,
- model destination remaining capacity separately from bid slot capacity so market saturation can change buyer assignment,
- represent split eligibility, minimum split size, split penalties, and split handling delay as explicit control variables in the allocator,
- compare the best whole-lot plan against the best split-lot plan instead of treating splits as operator-side post-processing,
- persist slice-level allocations so the parent lot decision remains explainable,
- support slice-level reassignment so only the degraded portion of a lot is rerouted when that is economically superior,
- represent reassignment as an engine output with thresholded triggers,
- optimize adjusted realizable value instead of nominal bid,
- keep route, weather, congestion, buyer behavior, and capacity as factors in the same candidate score.
- deterministic greedy allocator,
- mixed-integer optimization backend,
- processor-focused deployment with tighter quality tolerances,
- cluster-level or lane-level allocation for collection centers,
- destination classes beyond mandis, such as processors or exporters.
- priority score components and weighting,
- priority-adjusted delay or spoilage terms that alter destination ranking,
- queue-derived unloading delay that alters destination ranking,
- buyer acceptance reliability that alters destination ranking,
- expected haircut and rejection loss that alter destination ranking,
- commodity and packaging-sensitive unloading behavior that alters destination ranking,
- destination market capacity depletion that alters destination ranking,
- split penalties and split handling delay that alter whether the lot remains whole,
- comparison of split-lot and whole-lot realizable value under the same perishability-aware score family,
- slice-level reassignment after one branch of a split lot degrades,
- capacity-preservation benefit under scarcity,
- persistence of losing candidate scores,
- threshold-driven reassignment after ETA shock,
- destination-specific latest viable arrival calculations,
- fallback destination generation with explanation metadata.
The current prototype also preserves distinctiveness through deterministic replay artifacts:
- harvest-wave generation for district-level crop surges,
- controlled queue and weather shocks,
- controlled buyer-reliability and queue-sensitivity shocks,
- performance scenarios that keep buyer assignment, transport scarcity, and reassignment in the same loop,
- replayable candidate-score persistence for each stressed run.
These are not the invention by themselves, but they help demonstrate that the distinctive mechanism still behaves as intended under India-like harvest and mandi conditions.
- reducing the system to transport matching,
- presenting priority as dashboard-only information,
- optimizing only for shortest route or highest bid,
- omitting buyer execution risk from the assignment calculation,
- omitting reassignment logic,
- failing to preserve counterfactual candidate data,
- making the product primarily an auction or dispatch console.
The repository now includes deterministic tests and a demo script that specifically verify:
- high-perishability lots can reject the highest nominal bid,
- unreliable higher bids can lose to more dependable destinations,
- queue-sensitive buyers can lose as queue pressure rises,
- low-perishability lots can accept longer routes,
- scarce transport can prioritize fragile cargo,
- split plans can beat whole-lot plans when capacities and destination behavior justify slicing,
- unsplittable or penalty-heavy lots can remain whole even when splitting is technically feasible,
- slice-level reassignment can target only the degraded branch of a split lot,
- delay or capacity shocks can trigger reassignment recommendations.
Those verification artifacts matter because they prove the code is still embodying the distinctive mechanism rather than drifting into generic logistics behavior.