New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.

Issue 618095 link

Starred by 1 user

Issue metadata

Status: Fixed
Owner:
Closed: Jul 2016
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: ----
Pri: 2
Type: Bug



Sign in to add a comment

[Autofill] Expand profile comparison logic and heuristics

Project Member Reported by rogerm@chromium.org, Jun 7 2016

Issue description

Chrome Autofill often create duplicate profiles. These profiles differ lexically, but have identical meaning to the user. While we do perform some level of deduplication, it is insufficient.

We can improve Chrome's ability to detect and resolve duplicate autofill profiles by adopting the following approaches:

- Normalize fields before comparison to fold case, remove diacritics,
  remove punctuation and collapse or remove whitespace.

- Smarter name comparison to account for compound names and the use
  of initials. For example, John Quincy Public and John Q. Public.

- Broaden phone number matching to include missing extensions or area
  codes.

- Use bag-of-words comparison to compare addresses. This accounts for
  different orderings of the information. For example, 23-1 Main St vs
  23 Main St, Apt 1

- Use region specific string replacement rules to unify variations of
  the way an address field may be populated. For example, Street vs
  St, Avenue vs Ave vs Av, First vs 1st, etc.
 

Comment 1 by rogerm@chromium.org, Jun 10 2016

Components: UI>Browser>Autofill>Heuristics UI>Browser>Autofill
Project Member

Comment 2 by bugdroid1@chromium.org, Jun 13 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/a7b3333ea833f2d7e961e970437408a0b346f5f0

commit a7b3333ea833f2d7e961e970437408a0b346f5f0
Author: rogerm <rogerm@chromium.org>
Date: Mon Jun 13 15:27:24 2016

Add an AutofillProfileComparator class.

This CL adds an AutofillProfileComparator class that applies broader
heuristics to identify mergeable autofill profiles. This is the first
of several CLs to more intelligently prevent and eliminate duplicate
autofill profiles.

Chrome Autofill often create duplicate profiles. These profiles differ
lexically, but have identical meaning to the user. While we do perform
some level of deduplication, it is insufficient.

We can improve Chrome's ability to detect and resolve duplicate autofill
profiles by adopting the following approaches:

- Normalize fields before comparison to fold case, remove diacritics,
  remove punctuation and collapse or remove whitespace.

- Smarter name comparison to account for compound names and the use
  of initials. For example, John Quincy Public and John Q. Public.

- Broaden phone number matching to include missing extensions or
  area codes.

- Use bag-of-words comparison to compare addresses. This accounts for
  different orderings of the information. For example,

  23-1 Main St   vs  23 Main St, Apt 1

BUG= 618095 ,  587465 
R=mathp@chromium.org, sebsg@chromium.org

Review-Url: https://codereview.chromium.org/2041413004
Cr-Commit-Position: refs/heads/master@{#399452}

[modify] https://crrev.com/a7b3333ea833f2d7e961e970437408a0b346f5f0/components/autofill.gypi
[modify] https://crrev.com/a7b3333ea833f2d7e961e970437408a0b346f5f0/components/autofill/core/browser/BUILD.gn
[modify] https://crrev.com/a7b3333ea833f2d7e961e970437408a0b346f5f0/components/autofill/core/browser/autofill_profile.cc
[modify] https://crrev.com/a7b3333ea833f2d7e961e970437408a0b346f5f0/components/autofill/core/browser/autofill_profile.h
[add] https://crrev.com/a7b3333ea833f2d7e961e970437408a0b346f5f0/components/autofill/core/browser/autofill_profile_comparator.cc
[add] https://crrev.com/a7b3333ea833f2d7e961e970437408a0b346f5f0/components/autofill/core/browser/autofill_profile_comparator.h
[add] https://crrev.com/a7b3333ea833f2d7e961e970437408a0b346f5f0/components/autofill/core/browser/autofill_profile_comparator_unittest.cc
[modify] https://crrev.com/a7b3333ea833f2d7e961e970437408a0b346f5f0/components/components_tests.gyp

Project Member

Comment 3 by bugdroid1@chromium.org, Jun 15 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/a7b3333ea833f2d7e961e970437408a0b346f5f0

commit a7b3333ea833f2d7e961e970437408a0b346f5f0
Author: rogerm <rogerm@chromium.org>
Date: Mon Jun 13 15:27:24 2016

Add an AutofillProfileComparator class.

This CL adds an AutofillProfileComparator class that applies broader
heuristics to identify mergeable autofill profiles. This is the first
of several CLs to more intelligently prevent and eliminate duplicate
autofill profiles.

Chrome Autofill often create duplicate profiles. These profiles differ
lexically, but have identical meaning to the user. While we do perform
some level of deduplication, it is insufficient.

We can improve Chrome's ability to detect and resolve duplicate autofill
profiles by adopting the following approaches:

- Normalize fields before comparison to fold case, remove diacritics,
  remove punctuation and collapse or remove whitespace.

- Smarter name comparison to account for compound names and the use
  of initials. For example, John Quincy Public and John Q. Public.

- Broaden phone number matching to include missing extensions or
  area codes.

- Use bag-of-words comparison to compare addresses. This accounts for
  different orderings of the information. For example,

  23-1 Main St   vs  23 Main St, Apt 1

BUG= 618095 ,  587465 
R=mathp@chromium.org, sebsg@chromium.org

Review-Url: https://codereview.chromium.org/2041413004
Cr-Commit-Position: refs/heads/master@{#399452}

[modify] https://crrev.com/a7b3333ea833f2d7e961e970437408a0b346f5f0/components/autofill.gypi
[modify] https://crrev.com/a7b3333ea833f2d7e961e970437408a0b346f5f0/components/autofill/core/browser/BUILD.gn
[modify] https://crrev.com/a7b3333ea833f2d7e961e970437408a0b346f5f0/components/autofill/core/browser/autofill_profile.cc
[modify] https://crrev.com/a7b3333ea833f2d7e961e970437408a0b346f5f0/components/autofill/core/browser/autofill_profile.h
[add] https://crrev.com/a7b3333ea833f2d7e961e970437408a0b346f5f0/components/autofill/core/browser/autofill_profile_comparator.cc
[add] https://crrev.com/a7b3333ea833f2d7e961e970437408a0b346f5f0/components/autofill/core/browser/autofill_profile_comparator.h
[add] https://crrev.com/a7b3333ea833f2d7e961e970437408a0b346f5f0/components/autofill/core/browser/autofill_profile_comparator_unittest.cc
[modify] https://crrev.com/a7b3333ea833f2d7e961e970437408a0b346f5f0/components/components_tests.gyp

Project Member

Comment 4 by bugdroid1@chromium.org, Jun 28 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/8b7aad0dfb2118f1f054634969b87372c94205d2

commit 8b7aad0dfb2118f1f054634969b87372c94205d2
Author: rogerm <rogerm@chromium.org>
Date: Tue Jun 28 20:19:30 2016

Expand autofill profile merge logic.

The AutofillProfileComparator expands the range of "mergeable" autofill
profiles that Chrome can detect. This CL adds the corresponding logic
to determine which parts of each profile to prefer when carring out
a merge operations.

The CL adds only the merge logic and unit-tests. It does not integrate
this functionality into the main profile deduplication flow.

BUG= 618095 ,  618095 
R=mathp@chromium.org, sebsg@chromium.org

Review-Url: https://codereview.chromium.org/2088443002
Cr-Commit-Position: refs/heads/master@{#402520}

[modify] https://crrev.com/8b7aad0dfb2118f1f054634969b87372c94205d2/components/autofill/core/browser/autofill_profile_comparator.cc
[modify] https://crrev.com/8b7aad0dfb2118f1f054634969b87372c94205d2/components/autofill/core/browser/autofill_profile_comparator.h
[modify] https://crrev.com/8b7aad0dfb2118f1f054634969b87372c94205d2/components/autofill/core/browser/autofill_profile_comparator_unittest.cc

Project Member

Comment 5 by bugdroid1@chromium.org, Jun 30 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/b457c9197023162148f861d3fb88df2e91b8b3d8

commit b457c9197023162148f861d3fb88df2e91b8b3d8
Author: rogerm <rogerm@chromium.org>
Date: Thu Jun 30 00:23:57 2016

Use AutofillProfileComparator in place of ad-hoc merge logic.

This CL integrates the AutofillProfileComparator into the profile
comparison and merge logic (used during profile creation/update
as well as sync).

 - Use the AutofileProfileComparator::AreMergeabable(p1, p2) API

 - Use the AutofillProfileComparator::Merge* APIs

 - Add (in)equality operators to the autofill profile component
   types (NameInfo, Address, EmailInfo, CompanyInfo, PhoneNumber)

 - Updates the parser for the data driven autofill tests to be
   less sensitive to whitespace.

BUG= 618095 
R=mathp@chromium.org, tmartino@chromium.org

Review-Url: https://codereview.chromium.org/2110563002
Cr-Commit-Position: refs/heads/master@{#403021}

[modify] https://crrev.com/b457c9197023162148f861d3fb88df2e91b8b3d8/components/autofill/core/browser/address.cc
[modify] https://crrev.com/b457c9197023162148f861d3fb88df2e91b8b3d8/components/autofill/core/browser/address.h
[modify] https://crrev.com/b457c9197023162148f861d3fb88df2e91b8b3d8/components/autofill/core/browser/autofill_merge_unittest.cc
[modify] https://crrev.com/b457c9197023162148f861d3fb88df2e91b8b3d8/components/autofill/core/browser/autofill_profile.cc
[modify] https://crrev.com/b457c9197023162148f861d3fb88df2e91b8b3d8/components/autofill/core/browser/autofill_profile.h
[modify] https://crrev.com/b457c9197023162148f861d3fb88df2e91b8b3d8/components/autofill/core/browser/autofill_profile_comparator_unittest.cc
[modify] https://crrev.com/b457c9197023162148f861d3fb88df2e91b8b3d8/components/autofill/core/browser/autofill_profile_unittest.cc
[modify] https://crrev.com/b457c9197023162148f861d3fb88df2e91b8b3d8/components/autofill/core/browser/contact_info.cc
[modify] https://crrev.com/b457c9197023162148f861d3fb88df2e91b8b3d8/components/autofill/core/browser/contact_info.h
[modify] https://crrev.com/b457c9197023162148f861d3fb88df2e91b8b3d8/components/autofill/core/browser/form_group.cc
[modify] https://crrev.com/b457c9197023162148f861d3fb88df2e91b8b3d8/components/autofill/core/browser/personal_data_manager.cc
[modify] https://crrev.com/b457c9197023162148f861d3fb88df2e91b8b3d8/components/autofill/core/browser/personal_data_manager_unittest.cc
[modify] https://crrev.com/b457c9197023162148f861d3fb88df2e91b8b3d8/components/autofill/core/browser/phone_number.cc
[modify] https://crrev.com/b457c9197023162148f861d3fb88df2e91b8b3d8/components/autofill/core/browser/phone_number.h
[modify] https://crrev.com/b457c9197023162148f861d3fb88df2e91b8b3d8/components/autofill/core/browser/webdata/autofill_profile_syncable_service.cc
[modify] https://crrev.com/b457c9197023162148f861d3fb88df2e91b8b3d8/components/autofill/core/browser/webdata/autofill_profile_syncable_service_unittest.cc
[modify] https://crrev.com/b457c9197023162148f861d3fb88df2e91b8b3d8/components/browser_sync/browser/profile_sync_service_autofill_unittest.cc
[modify] https://crrev.com/b457c9197023162148f861d3fb88df2e91b8b3d8/components/test/data/autofill/merge/output/addressLinesLessInfo.out
[modify] https://crrev.com/b457c9197023162148f861d3fb88df2e91b8b3d8/components/test/data/autofill/merge/output/addressLinesMoreInfo.out
[modify] https://crrev.com/b457c9197023162148f861d3fb88df2e91b8b3d8/components/test/data/autofill/merge/output/case.out
[modify] https://crrev.com/b457c9197023162148f861d3fb88df2e91b8b3d8/components/test/data/autofill/merge/output/email.out
[modify] https://crrev.com/b457c9197023162148f861d3fb88df2e91b8b3d8/components/test/data/autofill/merge/output/identical.out
[modify] https://crrev.com/b457c9197023162148f861d3fb88df2e91b8b3d8/components/test/data/autofill/merge/output/moreInfo.out
[modify] https://crrev.com/b457c9197023162148f861d3fb88df2e91b8b3d8/components/test/data/autofill/merge/output/names.out
[modify] https://crrev.com/b457c9197023162148f861d3fb88df2e91b8b3d8/components/test/data/autofill/merge/output/primarycase.out
[modify] https://crrev.com/b457c9197023162148f861d3fb88df2e91b8b3d8/components/test/data/autofill/merge/output/punctuation.out
[modify] https://crrev.com/b457c9197023162148f861d3fb88df2e91b8b3d8/components/test/data/autofill/merge/output/singlemerge.out
[modify] https://crrev.com/b457c9197023162148f861d3fb88df2e91b8b3d8/components/test/data/autofill/merge/output/streetaddress.out
[modify] https://crrev.com/b457c9197023162148f861d3fb88df2e91b8b3d8/components/test/data/autofill/merge/output/validation.out
[modify] https://crrev.com/b457c9197023162148f861d3fb88df2e91b8b3d8/components/test/data/autofill/merge/tools/autofill_merge_common.py

Project Member

Comment 6 by bugdroid1@chromium.org, Jul 7 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/0d2a71a993405545d9a735e5a8d5807815ee24c2

commit 0d2a71a993405545d9a735e5a8d5807815ee24c2
Author: rogerm <rogerm@chromium.org>
Date: Thu Jul 07 16:23:36 2016

Embed address normalization rewriting rules.

This CL adds a table of string rewrite rules, keyed by country
code, to aid in address normalization when comparing autofill
profiles.

The rules for each country code are stored as static constant
string tables and compiled to regular expression replacement
params on first use, and subsequently cached.

R=mathp@chromium.org, sebsg@chromium.org
BUG= 618095 

Review-Url: https://codereview.chromium.org/2121253002
Cr-Commit-Position: refs/heads/master@{#404158}

[modify] https://crrev.com/0d2a71a993405545d9a735e5a8d5807815ee24c2/components/autofill.gypi
[modify] https://crrev.com/0d2a71a993405545d9a735e5a8d5807815ee24c2/components/autofill/core/browser/BUILD.gn
[add] https://crrev.com/0d2a71a993405545d9a735e5a8d5807815ee24c2/components/autofill/core/browser/address_rewriter.cc
[add] https://crrev.com/0d2a71a993405545d9a735e5a8d5807815ee24c2/components/autofill/core/browser/address_rewriter.h
[add] https://crrev.com/0d2a71a993405545d9a735e5a8d5807815ee24c2/components/autofill/core/browser/address_rewriter_rules.cc
[add] https://crrev.com/0d2a71a993405545d9a735e5a8d5807815ee24c2/components/autofill/core/browser/address_rewriter_unittest.cc
[modify] https://crrev.com/0d2a71a993405545d9a735e5a8d5807815ee24c2/components/autofill/core/browser/autofill_profile_comparator.cc
[modify] https://crrev.com/0d2a71a993405545d9a735e5a8d5807815ee24c2/components/autofill/core/browser/autofill_profile_comparator.h
[modify] https://crrev.com/0d2a71a993405545d9a735e5a8d5807815ee24c2/components/components_tests.gyp

Project Member

Comment 7 by bugdroid1@chromium.org, Jul 7 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/fabd01ea0d0b0f9822e18ba5f375568a262ec697

commit fabd01ea0d0b0f9822e18ba5f375568a262ec697
Author: mathp <mathp@chromium.org>
Date: Thu Jul 07 19:48:47 2016

Revert of Embed address normalization rewriting rules. (patchset #3 id:80001 of https://codereview.chromium.org/2121253002/ )

Reason for revert:
Some merging logic could trigger DCHECK on debug builds. Will reland with fix.

Original issue's description:
> Embed address normalization rewriting rules.
>
> This CL adds a table of string rewrite rules, keyed by country
> code, to aid in address normalization when comparing autofill
> profiles.
>
> The rules for each country code are stored as static constant
> string tables and compiled to regular expression replacement
> params on first use, and subsequently cached.
>
> R=mathp@chromium.org, sebsg@chromium.org
> BUG= 618095 
>
> Committed: https://crrev.com/0d2a71a993405545d9a735e5a8d5807815ee24c2
> Cr-Commit-Position: refs/heads/master@{#404158}

TBR=sebsg@chromium.org,rogerm@chromium.org
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG= 618095 

Review-Url: https://codereview.chromium.org/2125383002
Cr-Commit-Position: refs/heads/master@{#404218}

[modify] https://crrev.com/fabd01ea0d0b0f9822e18ba5f375568a262ec697/components/autofill.gypi
[modify] https://crrev.com/fabd01ea0d0b0f9822e18ba5f375568a262ec697/components/autofill/core/browser/BUILD.gn
[delete] https://crrev.com/bb725f3a42fd8caa33c542e46fe4d9fc7a72678f/components/autofill/core/browser/address_rewriter.cc
[delete] https://crrev.com/bb725f3a42fd8caa33c542e46fe4d9fc7a72678f/components/autofill/core/browser/address_rewriter.h
[delete] https://crrev.com/bb725f3a42fd8caa33c542e46fe4d9fc7a72678f/components/autofill/core/browser/address_rewriter_rules.cc
[delete] https://crrev.com/bb725f3a42fd8caa33c542e46fe4d9fc7a72678f/components/autofill/core/browser/address_rewriter_unittest.cc
[modify] https://crrev.com/fabd01ea0d0b0f9822e18ba5f375568a262ec697/components/autofill/core/browser/autofill_profile_comparator.cc
[modify] https://crrev.com/fabd01ea0d0b0f9822e18ba5f375568a262ec697/components/autofill/core/browser/autofill_profile_comparator.h
[modify] https://crrev.com/fabd01ea0d0b0f9822e18ba5f375568a262ec697/components/components_tests.gyp

Project Member

Comment 8 by bugdroid1@chromium.org, Jul 8 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/26ac4e202f50ab9dd60117c529479a14cd3640e8

commit 26ac4e202f50ab9dd60117c529479a14cd3640e8
Author: rogerm <rogerm@chromium.org>
Date: Fri Jul 08 17:45:41 2016

Embed address normalization rewriting rules.

This CL adds a table of string rewrite rules, keyed by country
code, to aid in address normalization when comparing autofill
profiles.

The rules for each country code are stored as static constant
string tables and compiled to regular expression replacement
params on first use, and subsequently cached.

The address rewriting rules are applied when comparing and
merging the state, city, and street address of a profile to
correct for synonyms, abbreviations, and some common mispellings.

R=mathp@chromium.org, sebsg@chromium.org
BUG= 618095 

Review-Url: https://codereview.chromium.org/2137533002
Cr-Commit-Position: refs/heads/master@{#404431}

[modify] https://crrev.com/26ac4e202f50ab9dd60117c529479a14cd3640e8/components/autofill.gypi
[modify] https://crrev.com/26ac4e202f50ab9dd60117c529479a14cd3640e8/components/autofill/core/browser/BUILD.gn
[add] https://crrev.com/26ac4e202f50ab9dd60117c529479a14cd3640e8/components/autofill/core/browser/address_rewriter.cc
[add] https://crrev.com/26ac4e202f50ab9dd60117c529479a14cd3640e8/components/autofill/core/browser/address_rewriter.h
[add] https://crrev.com/26ac4e202f50ab9dd60117c529479a14cd3640e8/components/autofill/core/browser/address_rewriter_rules.cc
[add] https://crrev.com/26ac4e202f50ab9dd60117c529479a14cd3640e8/components/autofill/core/browser/address_rewriter_unittest.cc
[modify] https://crrev.com/26ac4e202f50ab9dd60117c529479a14cd3640e8/components/autofill/core/browser/autofill_profile_comparator.cc
[modify] https://crrev.com/26ac4e202f50ab9dd60117c529479a14cd3640e8/components/autofill/core/browser/autofill_profile_comparator.h
[modify] https://crrev.com/26ac4e202f50ab9dd60117c529479a14cd3640e8/components/autofill/core/browser/autofill_profile_comparator_unittest.cc
[modify] https://crrev.com/26ac4e202f50ab9dd60117c529479a14cd3640e8/components/components_tests.gyp

Comment 9 by rogerm@chromium.org, Jul 18 2016

Cc: zkoch@chromium.org
Labels: Merge-Request-53
Merge requested for the last change attached to this bug.

Review-Url: https://codereview.chromium.org/2137533002
Cr-Commit-Position: refs/heads/master@{#404431}


Comment 10 by dimu@google.com, Jul 18 2016

Labels: -Merge-Request-53 Merge-Approved-53 Hotlist-Merge-Approved
Your change meets the bar and is auto-approved for M53 (branch: 2785)
Project Member

Comment 11 by bugdroid1@chromium.org, Jul 18 2016

Labels: -merge-approved-53 merge-merged-2785
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/6852939d9b7f156119f01c5b95542d939665c37a

commit 6852939d9b7f156119f01c5b95542d939665c37a
Author: Mathieu Perreault <mathp@chromium.org>
Date: Mon Jul 18 18:28:09 2016

[Merge M53] Embed address normalization rewriting rules.

This CL adds a table of string rewrite rules, keyed by country
code, to aid in address normalization when comparing autofill
profiles.

The rules for each country code are stored as static constant
string tables and compiled to regular expression replacement
params on first use, and subsequently cached.

The address rewriting rules are applied when comparing and
merging the state, city, and street address of a profile to
correct for synonyms, abbreviations, and some common mispellings.

R=mathp@chromium.org, sebsg@chromium.org
BUG= 618095 

Review-Url: https://codereview.chromium.org/2137533002
Cr-Commit-Position: refs/heads/master@{#404431}
(cherry picked from commit 26ac4e202f50ab9dd60117c529479a14cd3640e8)

Review URL: https://codereview.chromium.org/2157043002 .

Cr-Commit-Position: refs/branch-heads/2785@{#188}
Cr-Branched-From: 68623971be0cfc492a2cb0427d7f478e7b214c24-refs/heads/master@{#403382}

[modify] https://crrev.com/6852939d9b7f156119f01c5b95542d939665c37a/components/autofill.gypi
[modify] https://crrev.com/6852939d9b7f156119f01c5b95542d939665c37a/components/autofill/core/browser/BUILD.gn
[add] https://crrev.com/6852939d9b7f156119f01c5b95542d939665c37a/components/autofill/core/browser/address_rewriter.cc
[add] https://crrev.com/6852939d9b7f156119f01c5b95542d939665c37a/components/autofill/core/browser/address_rewriter.h
[add] https://crrev.com/6852939d9b7f156119f01c5b95542d939665c37a/components/autofill/core/browser/address_rewriter_rules.cc
[add] https://crrev.com/6852939d9b7f156119f01c5b95542d939665c37a/components/autofill/core/browser/address_rewriter_unittest.cc
[modify] https://crrev.com/6852939d9b7f156119f01c5b95542d939665c37a/components/autofill/core/browser/autofill_profile_comparator.cc
[modify] https://crrev.com/6852939d9b7f156119f01c5b95542d939665c37a/components/autofill/core/browser/autofill_profile_comparator.h
[modify] https://crrev.com/6852939d9b7f156119f01c5b95542d939665c37a/components/autofill/core/browser/autofill_profile_comparator_unittest.cc
[modify] https://crrev.com/6852939d9b7f156119f01c5b95542d939665c37a/components/components_tests.gyp

Cc: tkonch...@chromium.org
Labels: Needs-Feedback
Could you please provide the manual TEST steps to verify the fix.
A recipe for testing:

1. Visit a page having one of more auto-fillable forms
   For example: go/autofill-smoke

2. Enter NEW (not matching an existing profile) form data for the various
   fields: name, email, company name, phone number, address

3. Observe that a new autofill profile was created (chrome://settings/autofill)

4. Revisit the site

5. Enter the same autofill profile information as above but vary the case,
   punctuation, accenting or field specific equivalences of the text (see
   below).

6. Observe that no new profile is created, but information that can be added
   to the existing profile is accepted.

-------

Supported Differences & Test cases

Name: case, punctuation, accenting, initials, given/middle elision

  A - "s-a larson"
  B - "Sven Åke Larsson"

  Final Profile: Sven Åke Larsson
  A and B can be submitted to a form in any order.

Email: case

  A - NyName@Gmail.Com
  B - myname@gmail.com

  Final Profile: the most recently used of A and B

Company Name: case, punctuation, word order, extra words

  A - Nestlé S.A.
  B - Nestle

  Final Profile: The longer name if lengths are different, otherwise the most
     recently used name.

Phone Number (North American):

  A - 8005550199
  B - 555-0199 ext321

  Final Profile: +1 800-555-0199 ext. 321
      Combines A and B to fill in missing information and normalizes to the
      NA International format.

Phone Number (International):

  A - +49492180185611    (International - Germany)
  B - 04921 80185611     (National - Germany)

  Final Profile: +49 4921 80185611
      Also supports extensions as ";ext=22" or " ext. 22"

Address: case, punctuation, word order, extra words, abbreviations

  A -   1 Some St.
        Unit #3
        Carver, CA
        90210

  B -   1-3 Some Street
        Carver City, California
        90210-1234
        USA

  Final Profile:    1 Some St.
                    Unit #3
                    Carver City, CA
                    90210
                    USA

  Merge preferences:
    - 2 line street address, longer street address, most recently used
    - Longer city name, most recently used
    - Shorter state name
    - Most recently used zip-code

Status: Fixed (was: Started)

Sign in to add a comment