First, I'm not a developer, I'm on the service provider side, moreso for non profits. So bear with me:
I haven't used the contact.module yet, just read the readme and todo. One of the points brought up in the readme is that the contact module uses US zipcodes out of the box, or you need the US zipcode table if you're using it w/o modifications. Hypothetically, how realistic is it to customize the contact module to run w/ the taxonomy module, so that fields for area codes (like zipcodes or whatever they might be called in other parts of the world) can be created via vocabs, as well as state, or province, or region, or street address, or district, or even department, if you wanted to associate contacts and use this module not w/ people organized geographically, but by what department they are in an organization, or by what floor they live on in an apartment building, etc? So, maybe creating a few generic fields which can be for Zipcode, then a generic field for Location (street, state, province, district, departamento, distrital, whatever, but key is that it's setup to run w/ whatever function this generic holder is supposed to do, like zipcode associates w/ state, whereas you could have generic field A associate w/ generic field B, instead of narrowing in on state and zipcode right off the bat) Not sure if this point is clear, partly because not sure of advantages/disadvantages or how generic you could make the fields w/o losing their functionality.