How many offices do they have? I wouldn't even try and maintain a list of zip codes, if its anything like the UK they will be constantly changing, new ones added etc as places are built.
Its surely a job for lua/python rather than tons of IVRs.
I would probably use some sort of google service...