Before you start building something too elaborate on top of this, you should play with the tools to get a sense of their limitations. The Geocoder::US module, in particular, has some problems with real-world input (e.g. geocoding "151 Third St San Francisco" doesn't work, but geocoding "151 Third St San Francisco CA" does). Similar caveats apply to the heuristics used by the other tools.<p>There are a lot of these corner cases, and they're hard to solve. As always, nothing replaces experience when you're doing this kind of work.