Targeting The Outreach Efforts of the Des Moines Food Bank

Last spring I began working on a project for the Des Moines food bank aimed at answering three questions for them using geospatial data analysis.

Is the food bank accessible to everyone that lives within its service area?
Where do most of the food bank’s current clients live?
Where should the food bank spend its outreach resources to service the most people?

To help answer these questions we were able to collect an anonymized database from the food bank containing the addresses of all of their clients for the full year of 2014.

To give you some background the Des Monies food bank had at the time three permanent employees. Data collection and client profiling were neither the primary focus of these employees nor were they issues that the staff at the food bank had any formal training in.

Problems started to arise as we initially geocoded the addresses in the food bank’s client database and more than half of the entries in the database failed to geocode.

To remedy this problem we used two strategies: By hand validation of failing addresses that described large groups of clients and programmatic address parsing combined a set of fixes for common errors.

Fixing broken address by hand was a straight forward process. Open the .csv file in Excel, organize the rows by the number of times that address occurred in the file, and then plug an address into a Google search to with the hope of finding out where that address is actually located so we can grab the GPS coordinates for that location.

Correcting broken or improperly formatted addresses using our Python script proved to be a more difficult process.

Because the food bank’s record keeping application didn’t have any data entry validation the address strings in the database contained a lot of notes in addition to the addresses. These notes were a part of the address string and their presence caused failures because the Geocoder didn’t know how to handle them.

The solution was to strip away everything but the core components of the addresses.

We did this by stripping away any leading or trailing spaces, converting all letter characters to their upper case variants, and deleting all special characters.

At this point most of the addresses looked like this:


Then we targeted two kinds of common formatting errors in these address strings: Errors in the letter characters that follow the number of the street and errors in the type of the street.

If we had and address like the one above our script would correct 1ND to 1ST and AVEN to AVE.

Then it would run the ‘fixed’ address through the Geocoder.

Because our database had multiple thousands of entries, another issue that we ran into was the amount of time spent waiting for our script to execute. The pain point of course was our Geocoder which only geocoded one address per second to avoid putting a significant load the server.

To speed up the geocoding process we had our script check for duplicate addresses before sending the current address to the Geocoder. This saved us a massive amount of time and processing power because many of the food bank’s clients lived in the same housing units as families or in other group living situations.

With these fixes and optimizations we were able to Geocode more of data in total and do it in less time. Moving our successful geocoding rate from under 50 percent up into the mid 80’s and cutting Geocoding time down from multiple hours to just over one per client database.

Considering Accessibility

With the address from the client database Geocoded we pulled up the 2010 census block boundaries for the city Des Moines and then joined the Median Household Income data from the American Communities Survey. After dropping our address point on to the map we visualized the data in this way to show the accessibility of the Des Moines food bank to its clients.

With this map we can clearly see that the food bank’s clients are from all over the area. As such there don’t appear to be any pressing accessibility problems. This finding fits with our qualitative knowledge that most food bank users in south King County, although low income, own cars and can travel to the food bank on an as-needed basis.

Understanding Food Bank Users

The next issue we needed to address was user ship. To do this we added up all of the clients inside the boundaries of a census block and then divided that number by the total population of the census for that block. Thus giving us a percentile representation of food bank usage in that block. This is the right strategy given that each address in the client database represented a single person receiving food for themselves and that dependents were listed as separate entries in the client database.

Here we have the rate of food bank usage by census block. Clearly you can see that the blocks that are both low-income and in close proximity to the food bank have the highest rates of usage. Yet again we stood in awe of the power of proximity.

Prioritizing Outreach Targets

Given our findings we then decided to compare median household income of a block group to the food bank usage rate of that block group and produced this graph.

Using this graph and a specific list of the block groups in the lower left hand corner of this graph the food bank was able to target specific areas for its community outreach efforts.

The methodology of this targeting effort was to focus on promoting the food bank’s services in the census block with both a sub 4 percent food bank usage rate and a sub $40,000 median household income. The goal of this targeting was to reach out to the folks whose lives could enjoy the greatest positive impact by utilizing the services that the food bank provides.

This project took a whole quarter’s worth of effort from four undergrads. Most of which was spent on collecting and wrangling our dataset into a workable form.

To recap our job was to answer these three questions:

Is the food bank accessible to everyone that lives within its service area?

Yes, accessible by car which is the primary method of transportation in the area and there don’t appear to be any blocks in the service area where no food bank users lived.

Where do most of the food bank’s current clients live?

The food bank’s clients have a diverse geographic distribution that showed some predictable clustering inside of low and middle income census blocks.

Where should the food bank spend its outreach resources to service the most people?

The food bank needs to focus on the census blocks our work highlighted that have a combination of low utilization rates and low median household income.

In the end the food bank seemed happy with our work and our instructors approved as well. No word on the effects of this targeting as a whole year has yet to elapse since the targeting was implemented. But whether or not this work has a significant impact the methods we used for processing dirty data and gauging service utilization rates will no doubt prove useful in the future.