Comprehensive guide to PhoneSeal's Area Code Correction Process

If you want to know how to use PhoneSeal, (rather than how PhoneSeal works), then we recommend that you continue on to the PhoneSeal Tutorial page, which will give you screenshots showing what the program looks like and descriptions on how you would use it.


We receive many questions about PhoneSeal that result from the incorrect assumptions people make about how the software works. Hopefully this page will explain to you everything you will want to know, and then some, so you will understand perfectly how PhoneSeal actually works.

Access to data

PhoneSeal's first problem is getting access to your data. It can access your data in two basic ways:

  1. Text files

  2. ODBC database access

Most programs make their address and phone data available by one of these two methods. If neither of these two methods will work for you, please contact us.

For text files, you tell PhoneSeal what file to look at, what columns the program should examine, and how PhoneSeal can identify the columns -- PhoneSeal currently works only with "delimited" text files, which means the columns are separated by a character, called a "delimiter", usually a tab or a comma. Most programs that export data to text files will also put quote marks around the data. If PhoneSeal encounters this, it will look at the data inside the quote marks. If you are running Corrector, PhoneSeal will correct the number inside the quote marks without removing the quote marks.

For ODBC access, PhoneSeal can either access a Microsoft Access database or a System DSN (data source name). We have a special option for Access, so Access users don't need to go through the process of creating a System DSN, but Access databases are still accessed through ODBC just like all the others. Please consult your database vendor's information on ODBC database access for more information.

PhoneSeal will create a standard SQL query based on the table and field names you enter. If there is a problem with the query, PhoneSeal will not be able to access your data. PhoneSeal always uses simple SQL statements rather than advanced database features because it can access more different database systems that way. If you are running PhoneSeal Corrector, it will correct the data by issuing SQL update statements.

If you find that PhoneSeal can read your database quickly but is slow up perform updates, it's probably because the database is taking a long time searching the database to find the records to update. Putting indexes on every field with a phone number will speed this up.

When using text files, PhoneSeal writes the updates to a new file. The new file contains every record from the original file, including every number, whether corrected or not corrected. The new file keeps quote marks and any other formatting found in the original. The idea is that after PhoneSeal creates the new file, you examine it to make sure it is okay, and then replace the original file with the new one. (Or re-import it into whatever program it came out of).

PhoneSeal is fastest on text files, especially with the "Professional" flavors which use our new code which was rewritten to run fast.

We also allow OLE DB access, but to our knowledge nobody uses this feature yet.

PhoneSeal Advanced/Professional can also access ZIP and date fields. The ZIP codes can be either 5-digit ZIP or ZIP+4 or Zip+4+2. Any other format will be rejected by PhoneSeal and it will not use the ZIP code on that record. For the date, on text files, PhoneSeal uses Windows API's to translate the date. So if PhoneSeal is reporting problems processing your dates, try changing your date settings in the Control Panel. The place to do this is on the "Regional Settings" control panel, on the "Date" tab. For databases, if your database vendor returns the date as a OLE Date data type (Microsoft databases, such as Access and SQL Server, do this), then PhoneSeal will understand it. If the date is returned as a text string, then PhoneSeal will try to interpret the date as a text string, the same way it does with text files. PhoneSeal never changes the date that it reads from your file or database.

Phone Number Parsing

The next thing PhoneSeal needs to do is interpret your phone number. PhoneSeal needs to know what part of the number is the area code, what part is the exchange code, and what is the rest of the local number.

To do this, PhoneSeal compares the number to a list of phone number formats. This includes most common 10-digit phone number formats, such as using dashes to separate the fields, putting the area code inside parenthesis, and putting the US country code at the begnning with a plus sign or brackets. However, we don't guarantee that PhoneSeal can figure out all 10-digit formats that exist out there.

Some people have the area code in a separate field from the rest of the number in their files or databases. If you do it this way, what PhoneSeal will do is combine the fields together to make a number, and then try to parse it. PhoneSeal does not put a space in between the fields. PhoneSeal has 3 formats just for recognizing the combined number. PhoneSeal is generally able to interpret the number this way.

If PhoneSeal does not recognize the input as a phone number, it will put a message about it in the error log and leave that field alone. It will not be used in any of the counts in PhoneSeal Analyzer, it will not be checked for area code ambiguities by PhoneSeal PreCleaner, and it will not be corrected by PhoneSeal Corrector.

PhoneSeal is very picky about the phone number format. It wants to be absolutely certain that it is interpreting the number correctly, so it won't misinterpret the number and update something that is not, in fact, an area code!

PhoneSeal Advanced/Professional allows the program to be extended with custom formats.

PreCleaner: Checking for Ambiguities

The job of PhoneSeal PreCleaner is to find all the "ambiguous" numbers in your file or database.

An "ambiguous" number is a number where the area code cannot be determined for certain. For example, suppose the number is (206) 231-7777. The 206 area code split on January 15, 1995, to 206 and 360, with the 231 exchange assigned to 360. On April 27, 1997, the 206 code split again to 206 and 425, with the 231 exchange assigned to 425.

So, if the phone number (206) 231-7777 was active before Jan 15, 1995, it would have changed to (360) 231-7777. If it was active between Jan 15, 1995 and April 27, 1997, it would have changed to (425) 231-7777.

So, you see, it is not possible to tell what the correct new area code should be: 360, or 425.

The purpose of PreCleaner is to find the ambiguous numbers and report them to you. You will have to actually call these numbers to determine which new area code is the correct one.

We find that the number of ambiguous numbers varies greatly from file to file. Some files have none at all. Some have a very high percentage. It all depends on where, geographically, the phone numbers are -- are they in an area where there have been lots of multiple splits?

PhoneSeal will also perform what we call "recursion" on the ambiguities. For example, the number (205) 296-1111 could have changed to (334) 296-1111 in a 1995 split. Then 334 splits again, into 334 and 251. PhoneSeal will report not only the 334 possibility, but also 251, as a possible new area code. Again, you will have to actually call each number to find the correct new area code.

Now, if there is just one new area code, PhoneSeal will use the new area code and won't report an ambiguity. You may notice, it's possible for the number to have been issued after the split. Consider the number (206) 882-8080. PhoneSeal finds only one split for the 882 exchange of the 206 area code, in 1997, assigning the new area code 425. But what if the number was issued after 1997? It's impossible to tell, so won't PhoneSeal report this as an ambiguity?

The answer is: no it won't. The reason is that this would mean every phone number involved in a split would be reported as an ambiguity (between the new area code and the original area code) -- too many to call by hand, for even the smallest of files! So we take a gamble: that if there is one split, the area code should be changed to the new area code.

We believe we are right almost all the time. We got some idea from a file with 6.4 million numbers in it. (6,497,387 to be exact). When running PhoneSeal Analyzer Professional and using the Time Traveler "date-per-record" feature (described in the next paragraph), the number of "need correcting" numbers decreased by about 14,000 (from 2,036,450 to 2,022,785). That is about 0.2% of the file. So we believe PhoneSeal guesses wrong about 0.2% of the time. That means it guesses right 99.8% of the time.

Since a typical file, if it is 5 or so years old, has wrong area codes for about 30% of the numbers, you can see, it is still clearly very cost-effective to run PhoneSeal, even with the 0.2% error rate.

If you're using ZipChecker, which is described below, there is an option in PhoneSeal called "Use ZIP codes to verify all changes within the date bracket" which will disable the automatic application of single splits that was just described. It is also disabled whenever you're using dates that come from fields in your data (described next), on the assumption that the dates from your data narrow down the dates of the phone numbers sufficiently.

PhoneSeal Advanced/Professional has a special feature, which we call "Time Traveler", for addressing these ambiguities. If your database has a date in each record, indicating exactly when the phone number was active, then the ambiguities usually disappear completely! The only ambiguities that remain are when area codes were split down the middle of an exchange, and you can't tell from the exchange code what the new area code is. We know this is very rare -- affects only certain exchanges in area codes 612, 914, 516, and 716. Most of the time, PhoneSeal Advanced/Professional will reduce ambiguities to zero! The catch is, you must know the date for each record in your database.

If you have dates in your database, but the dates do not indicate the last day the phone number was known to be working, then you may be able use the date as a boundary. You can indicate to PhoneSeal that the date is the "earliest possible" or "latest possible" date for the phone number. For example, if the date indicates the date that a store opened, that would make it an "earliest possible" date. If the date indicates the last time the record was updated, but the phone number might not have been updated or checked at that time, then the date indicates the "latest possible" date.

If you don't know the date for each record in your database, PhoneSeal Advanced/Professional will allow you to assign two dates for the entire file or database. The first date is the "most recent all good date". The second is the "most recent update" date. The first date is the most recent date that you are certain every number in the file or database was working. The second date is the last date that any change was made.

The way PhoneSeal uses these two dates is as follows: If PhoneSeal finds a split that occured before the first date, it will ignore it. The number is assumed to have been working on that date, so PhoneSeal will assume that the split does not apply. If PhoneSeal finds a split that occured after the second date, it will change the area code to the new area code, and then check that area code for splits. If that area code, with the same exchange, splits, PhoneSeal will change the number again. PhoneSeal will do this any number of times, applying all splits in time-sequential order. The number will not be flagged as "ambiguous", but will be changed to the final area code.

If, on the other hand, PhoneSeal encounters a split that lies between the dates you entered, then it has to handle it more carefully. If there is only one split, PhoneSeal will change the area code to the new code. The reason for this is our estimate, described above (in the paragraph about the 6.5 million number database), that such guesses are right almost all the time, all but 0.2% of the time. If, on the other hand, PhoneSeal encounters two or more splits, even if the other splits occur outside the two dates you enter, PhoneSeal will still flag the number as "ambiguous" and will not correct it. At the current time, the number will be flagged as "ambiguous" regardless of whether the subsequent splits outside of the dates you enter are splits off the original area code or splits off the new area code that the ambiguous split within the dates you enter split to. This means that PhoneSeal will err somewhat on the side of reporting more ambiguities than might be absolutely necessary. We are considering changing this for subsequent versions of PhoneSeal. Please contact us if you have an opinion on this issue.

PhoneSeal can substitute a date from a record for either the first or second date, or both. So the two dates combine to define a "ambiguity range". This "ambiguity range" may be set for an entire database, or it may be different for each record in the database.

The more accurately you know the dates, the better PhoneSeal will do at correcting your files or databases. Entering dates always reduces the number of ambiguities reported. If you enter the wrong dates, PhoneSeal will either report numbers as "ambiguous" which it could correct, or it will correct numbers that it should report as "ambiguous". So be sure to enter correct dates so that you will get a clean correction from PhoneSeal.

Corrector: Area Code Correction

As you have undoubtedly figured out so far, PhoneSeal uses the area code and exchange code to analyze a number and determine what corrections to apply to it.

This is because area codes are usually split by exchange. In the example above, if (206) 231-7777 was active before Jan 15, 1995, it would have changed to (360) 231-7777. This is because all the numbers in the 231 exchange were reassigned to area code 360 on Jan 15, 1995. When deciding the split, the telcos and state regulators will decide which exchanges to leave in the original area code and which ones to assign to the new one. This is usually based on where the exchanges are located, geographically. In rare cases (currently just in area codes 612 and 914), they split on a physical line (such as a county line), and the exchange code isn't enough -- some numbers go one way, some go the other. In this case, PhoneSeal has no choice but to report the number as "ambiguous" (see above). Unless you are also using Zip Checker (see next section below).

Corrector will only correct an area code on a number if the correction is not ambiguous. A number can be ambiguous if the area code is involved in more than one split (which we call "multiple" splits), or if any splits it is involved in split again later on (which we call "recursive" splits).

The rules for determining ambiguity are explained in the section above on PreCleaner, because identifying ambiguities is PreCleaner's main job. Corrector will use exactly the same rules, and will therefore identify the same numbers as ambiguous (and won't correct them).

PhoneSeal Advanced/Professional: Time Traveler

Normally PhoneSeal Corrector just rejects any ambiguous numbers and is not date-sensitive. But the "Advanced" and "Professional" versions of PhoneSeal have a special set of features known collectively as "Time Traveler", and one of these special features is the ability to use dates to resolve ambiguities.

If the date for a number is known exactly, from a date stored in the record along with the number, there are no possible ambiguities (unless you happen to hit one of the 612/914/etc numbers mentioned above):

  • If there is only 1 split for the given area code/exchange, then the date determines whether the split applies or not.
  • If there are 2 or more splits for the given area code/exchange ("multiple splits"), then the date determines which of the splits applies.
  • If the number goes through a split, and then that area code splits again ("recursion" on splits), with the given exchange getting the new area code on the second split, then the date determines whether both splits apply or not. And just in case any area code is ever split a 3rd time, PhoneSeal can follow any number of recursive splits.
  • PhoneSeal Advanced/Professional can handle any combinations of multiple and recursive splits.

On the other hand, if you give PhoneSeal Advanced/Professional a date for your entire file/database, then PhoneSeal Advanced/Professional can only perform splits deterministically, as described above, for splits after the "most recent update" date you give. Before that date, PhoneSeal Advanced/Professional can't tell. If PhoneSeal Corrector Advanced/Professional detects ambiguity in splits prior to the given date, the number will not get corrected. (And PhoneSeal PreCleaner Advanced/Professional will report the number as ambiguous).

Splits that occur prior to the "most recent all good date" are ignored completely and won't result in corrections or ambiguities.

As explained above, PhoneSeal now allows you to use dates in your database records as either a "earliest possible" (known good) date or a "latest possible" (last update) date.

If one or both of the dates come from database records, the dates may "cross". This means that the second date comes before the first date. In this case, PhoneSeal behaves as follows:

  • If PhoneSeal reads a last known good date from the file or database record, and it comes after a last update date that you entered in the UI, PhoneSeal will use the date read from the record as both the last known good date and last update date (that is, it will treat the last known good date read from the file or database as the phone number's exact date).
  • If PhoneSeal reads a last update date from the file or database record, and it comes before a last known good date that you entered in the UI, PhoneSeal will use the date read from the record as both the last known good date and last update date (that is, it will treat the last known good date read from the file or database as the phone number's exact date).
  • If PhoneSeal reads both the last known good date and the last update date from the file or database and the last update date preceeds the last known good date, phoneseal will flag it as an error and will not update the phone number.

Time Traveler's other job is allowing you to pick a target date for the corrected list. If this date is in the future, PhoneSeal Advanced/Professional will change the area code for the split, even if today's date is before the beginning of the permissive dialing period for the split.

The permissive dialing period is the period of time between when the new area code can be used for calling a number, and when it must be used. In other words, there is a period of time when both the old area code and the new area code will work, and then at the end of that time, only the new area code will work.

PhoneSeal uses the two dates differently. PhoneSeal compares the closing date of the permissive dialing period with the dates that you enter as "last known good" or "last updated" dates, whether they come from the UI or from your data. PhoneSeal compares the beginning date of the permissive dialing period with today's date (or the target date, if you have chosen a different date), to decide whether to apply a split.

PhoneSeal Advanced/Professional: Zip Checker

Zip Checker is a set of features, part of the Advanced/Professional suite, which allow PhoneSeal to use ZIP code information. If your file or database has ZIP codes in it, you can use Zip Checker. Most files and databases contain both phone numbers and addresses, which means the ZIP code is available.

For ZIP Checker, in addition to consulting its list of area code splits, PhoneSeal Advanced/Professional also comes with a list of ZIP codes and their associated area codes.

Zip Checker can do two things: first, it can assign an area code when the area code is missing. It will do this if the phone number has a "000" placeholder where the area code should go, or if the area code is simply not present (and the field is accordingly shorter).

If you are using a separate field for the area code, PhoneSeal puts the area code into that field. (See note at bottom of page on custom formats for details).

The second thing Zip Checker can do is to use the ZIP code to resolve ambiguities.

It's important to understand that PhoneSeal Advanced/Professional usually does not consult the ZIP code field. It only does it when necessary to assign an area code or to resolve an ambiguity!

Here is the procedure that PhoneSeal Corrector Advanced/Professional uses for each number in your file or database:

  1. If the area code is missing, look up the ZIP code, and assign the area code, based on the ZIP code. If there is more than one area code, no area code is assigned.
  2. Look up the new area code(s) in the area code split list -- using procedure described above, including employing all the Time Traveler features
  3. If the area code was looked up by ZIP code, the area code can be changed again by checking the area code split list. This is important because the ZIP code list is not as current as the area code split list. The ZIP list is assumed to be up to 6 months out of date, so only splits for the past 6 months are checked.
  4. If the exchange was not affected by any splits, but the area code was assigned by a ZIP code lookup, correct the number to the new area code, count the number as a "corrected number", and go on to the next phone number.
  5. If the exchange was not affected by any splits, and the area code was not assigned by ZIP code, then leave the number alone, and go on to the next.
  6. If the resulting number is unambiguous, that is, there is exactly one possible new area code, correct the number to the new area code, and go on to the next number.
  7. If the resulting number is ambiguous, look up the ZIP code.
  8. If none of the number(s) indicated by the ZIP code are one of the possible new area codes, log it as an error, count the number as "ambiguous", add the new number to the list of numbers for the user to dial, do not perform any correction, and go on to the next number.
  9. If one of the number(s) indicated by the ZIP code is one of the possible new area codes, then correct the area code to the area code indicated by the ZIP code, and go on to the next phone number.
  10. If several of the number(s) indicated by the ZIP code are possible new area codes, log it as an error, count the number as "ambiguous", add the new number to the list of numbers for the user to dial, do not perform any correction, and go on to the next number.

In this way, PhoneSeal Advanced/Professional's various features interact to give you the cleanest update possible with the phone numbers, dates, and ZIP codes that you can make available.

TOP OF PAGE

 

 
     
Copyright © 2001-2002 Apollo Group International Inc. All rights reserved.