Low Cost Applications for Leveraging your GIS Investment
This data model enabled us to do the following: We wrote a problem to loop through all the records in the road table. For each road record, the program constructed a 150 foot buffer around the road and found all the demand points within that buffer (see illustration below; the demand point locations are indicated by the black squares):

The program then looped through all the demand points inside the buffer, found the associated CIS service records, and constructed a list of all street names from those service records. The program then determined the street name that was most common among the service records and that name was assigned to the road. We then wrote a program to automatically annotate all the roads. Below is an example of the end result: