The Path to Hell

I've been contemplating lately a serious problem with BeerHopper's implementation of local search. As it currently stands we use Yahoo local search to find nearby bars and restaurants. Unfortunately there are a few problems with this:

  1. The Yahoo API only allows you to search one category at a time. I worked around this by searching both all_restaurants and all_bars_pubs_and_clubs. Everything's cool right? No, checkout problem 2:
  2. Two examples from the Rochester area: L & M Lanes is categorized as a Bowling Alley. So even though they have a bar they don't show up under the "all bars" category. Also: John's Tex Mex is listed as a "Mexican Restaurant," and doesn't show up under "All Restaurants!" Which brings us to number 3:
  3. There is no way via the API to add businesses. So if one of my users wanted to add a bar, they'd have to go to a web page, enter the info (on their phone) and wait. Sometimes it takes weeks for changes to show up in the database, which mean that there's no way for them to pick that bar in the program. Which is totally fucking useless.

I've been considering changing local search providers. I've examined a few options including Google (totally unsuited to what I'm doing.) Yelp (really good for a couple of reasons, but has some major drawbacks) and Amid.st (better than Yelp in a couple ways, but worse in others.) Let's check them out:

Google

Google local search doesn't return unique identifiers, which means I can't tell if the Tap & Mallet that Jenny is drinking at is the same Tap & Mallet that Laura is drinking at. Also Google returns multiple results for the same place. Thus there may be 3 results for Monty's Krown in the list. Not acceptable.

Yelp

Yelp seems pretty awesome at first blush. They've got a JSON API that lets you add locations, reviews etc. and does local search pretty well. Plus their database is full of great reviews by passionate users. On the down side they are pretty much U.S. only, and require a separate username/password.

Amid.st

Amid.st is pretty much a startup aiming to do local search worldwide. Unfortunately they have about nothing in their database, use XML (bummer, but not insurmountable) and require a separate username/password. My largest concern is that they are a startup. I'd be betting the long term usefulness of my app on someone else's startup. It's one thing if we fail and the few users who care lose all their data, it's another if we succeed and lots of users lose their data because Amid.st fails, or gets bought out or whatever.

The Path to Hell

All these thoughts lead me to an uncomfortable but inevitable conclusion. BeerHopper needs it's own local search. One that will let us add to the database without requiring any extra accounts. One that won't be constrained to arbitrary categories that our users don't care about. One that will be a huge pain in the ass to code and maintain. Yeah!