  Food waste and food insecurity are two closely related pressing global
issues. Food rescue organizations worldwide run programs aimed at addressing
the two problems. In this paper, we partner with a non-profit organization in
the state of Indiana that leads \emph{Food Drop}, a program that is designed to
redirect rejected truckloads of food away from landfills and into food banks.
The truckload to food bank matching decisions are currently made by an employee
of our partner organization. In addition to this being a very time-consuming
task, as perhaps expected from human-based matching decisions, the allocations
are often skewed: a small percentage of the possible recipients receives the
majority of donations. Our goal in this partnership is to completely automate
Food Drop. In doing so, we need a matching algorithm for making real-time
decisions that strikes a balance between ensuring fairness for the food banks
that receive the food and optimizing efficiency for the truck drivers. In this
paper, we describe the theoretical guarantees and experiments that dictated our
choice of algorithm in the platform we built and deployed for our partner
organization. Our work also makes contributions to the literature on load
balancing and balls-into-bins games, that might be of independent interest.
Specifically, we study the allocation of $m$ weighted balls into $n$ weighted
bins, where each ball has two non-uniformly sampled random bin choices, and
prove upper bounds, that hold with high probability, on the maximum load of any
bin.
