It was simple - we used Google Fusion Tables. These tables are geographically enabled by default and can be shared easily. I made a table with specified columns (this one is for the cities map):
and then configured how the data would be displayed on the map. Locations that can be displayed in a Fusion Table are the same as those that can be found in Google Maps. For instance, try searching Google Maps for "Harvard Yard" or "1600 Pennsylvania Avenue, Washington, DC" or "Boulder, CO". Something like "the starbucks in Lexington, MA" works but only if there is sufficient information and a single point is returned (there are two Starbucks in Lexington) and the location exists in Google's files - which are a nearly comprehensive set of businesses that Google's vendor supplies to them. These can be considered as complete addresses and are stored in a single field in the fusion table, with one or more Coffeeneurs' blogs associated with the location. In our case we are only using cities (city+state+country or city+country) as the locations.
Then I added the maps to a blog post with code that Google Fusion Tables generates for you automatically (this example is also for the cities map):
I changed the symbology for the states map, so you can distinguish between states with few and many coffeeneurs:
Then I shared the editing rights to the two tables to MG, the person running the challenge. She enters the data, which is added to the already published map.
The entire process was very quick. I changed the schema (which columns we used) in the cities map in mid stream but that took less than half an hour, including copying a lot of data. The original work may have taken an hour at most.