Duplicates in Address Book: Some Progress on my next iPhone App

After trying out a few things during my last train rides to my consulting engagement, my next iPhone app is slowly taking shape.

Development progress

Here is a very rough, “in work” screenshot of what I have for now (using some test data):


Each cell in the TableView represents the contacts in the address book. The number in braces shows how “similar” another contact record is. (The number shown is for the “closest” record.) I want to make things a bit easier to spot by coloring the cells (e.g. red = 100% match, yellow between 90 and 100% match). I’ll also add some way to filter the displayed records (i.e. display only records above a certain threshold).

In the detail view, I want to display the “closest” records for one address and provide some way to look at the details of the involved contacts. (As this might require quite some back and forth between the different contact records, an iPad with additional screen estate may be a good idea here.) The detail view should also have some functionality to “remove” unwanted records (duplicates) or “merge” two records (collect all different phone numbers, email addresses etc. into one contact record and remove the other one).

Obviously, there is still a lot of work to do, but I’m making some progress. While I’m still looking for a good name, I already have an icon for the app: colored_background_clear_glass_512

Emerging Tiers

I’m also getting a clearer picture of which different modules I can offer:

  • Comparison – reading the address book and figuring out which records are close
  • Removing exact duplicates – Often, there are exact duplicates in the address book (for example after some technical problems with synching). These should be relatively simple to identify and delete.
  • Merging contact records – This is a lot more complicated as there are quite a few different scenarios. For example, you have to pick a “surviving” name (as there can be only one name), but there can be multiple addresses, phone numbers or email addresses.
  • Standardization – For some fields, different content can mean the same thing, e.g. “1231234567” is the same phone number as “123 123 4567” or “(123) 123-4567” or “+1-123-123 4567”. I’m not sure how much there can be done here, especially in addresses (Memory Lane = Memory Ln).
  • Once I get started, there’ll probably be more modules that make sense in the given context.

However, this looks like a good way to provide different tiers of the app:

  • entry level (low cost, maybe even free) – just offering the base comparison module
  • mid level – comparison plus dealing with exact duplicates
  • pro level – all modules as outlined above

This will also be a good scenario for “in app purchases” that I want to look into.


Tell me what you're thinking...
and oh, if you want a pic to show with your comment, go get a gravatar!