What are Duplicate Checks?
Duplicate checks are essential for maintaining data integrity, reducing fraud risk, and ensuring compliance. They prevent the creation of multiple records for the same individual within your system. FrankieOne integrates this capability directly into your KYC workflow via a dedicatedDUPLICATE step. This step provides:
- Automated identification of possible duplicates using configurable, rules-based matching logic.
- Manual review and resolution capabilities for operators to confirm or dismiss flagged duplicates.
- Seamless integration with existing KYC processes to support both operational efficiency and regulatory compliance.
To implement duplicate checks, you must have the
DUPLICATE step added to your KYC workflow. Speak with your FrankieOne representative to configure the duplicate step and its matching rules.How Duplicate Checks Work
The process is designed to flag potential duplicates during onboarding and provide your team with the tools to resolve them.1. Workflow Execution
When you execute a workflow for a new or updated entity, the
DUPLICATE step runs. It compares the entity’s attributes (e.g., name, DOB, document number) against all other entities in your system based on your configured matching rules.2. A 'HIT' is Returned
If a potential duplicate is found, the workflow step returns a
result of HIT, and a DUPLICATE issue is created. This typically causes the overall workflow status to become REVIEW.3. Detailed Results are Generated
For each potential duplicate found, a Process Result Object (PRO) is created. This PRO contains the granular details of the match, including which fields matched and the
entityId of the potential duplicate.4. Operator Review and Resolution
Your compliance team reviews the evidence within the PROs and makes a decision. They then resolve the match by calling the API to update the PRO’s
manualStatus.Implementation and API Guide
Step 1: Interpreting the Duplicate Check Result
When theDUPLICATE step returns a HIT, you need to parse the processResults within that step to understand the match. Each PRO will have class: "DUPLICATE".
The most important information is in the supplementaryData object.
Example: supplementaryData for a Duplicate PRO
Example: supplementaryData for a Duplicate PRO
supplementaryData Fields:
duplicateEntityId: TheentityIdof the existing profile that was matched.matchedFields: An array detailing exactly which attributes matched between the two entities (e.g.,NAME,ADDRESS). It includes the specificobjectIdfor each attribute and thematchStrength.matchedRules: Shows which configured rule was triggered to create this match.
Step 2: Resolving Duplicates
After reviewing the evidence, an operator must classify the match. This is done by sending aPATCH request with the processResultId and a manualStatus.
Endpoint:
manualStatus you send should reflect the operator’s decision.
| Operator’s Decision | manualStatus to Send | Outcome |
|---|---|---|
| ”This is not a duplicate.” | FALSE_POSITIVE | The potential match is dismissed. No relationship is created. |
| ”This is a duplicate. Keep the new entity and mark the old one as the duplicate.” | TRUE_POSITIVE_ACCEPT | A relationship is created. The old entity’s service profile is marked as DUPLICATE. |
| ”This is a duplicate. Keep the old entity and mark the new one as the duplicate.” | TRUE_POSITIVE_REJECT | A relationship is created. The new entity’s service profile is marked as DUPLICATE. |
Example: Resolve a Duplicate as False Positive
Example: Resolve a Duplicate as False Positive
After resolving all duplicate-related
issues, you should re-run the workflow. The DUPLICATE step will re-evaluate based on your resolutions, and the overall workflow status can then update from REVIEW to PASS.Key Concepts: State and Relationships
- Relationships: When a duplicate is confirmed (
TRUE_POSITIVE_ACCEPTorTRUE_POSITIVE_REJECT), a permanentrelationshipis created between the two entities. You can see this in the response ofGET /v2/individuals/{entityId}under therelationships.duplicatesarray. DUPLICATEState: An entity’s service profile is moved to theDUPLICATEstate when a relationship identifies it as such. An entity remains a duplicate as long as at least one relationship points to it. If all such relationships are removed (e.g., by being marked asFALSE_POSITIVEor if the source entity is deleted), itsDUPLICATEstate will be revoked.
Configuration (Reference)
The matching logic for theDUPLICATE step is highly configurable by the FrankieOne team.
Example duplicate.json Matching Rules
Example duplicate.json Matching Rules
Duplicate Check Logic
FrankieOne’s duplicate detection uses configurable rules to compare key attributes between entities. If any rule is matched, the entity is flagged as a potential duplicate. Matching Rule Examples:- External Reference: Exact match on
EXTERNAL_REFERENCE. - Document Identifiers: Exact match on all of
DOC_PRIMARY_IDENTIFIER,DOC_SECONDARY_IDENTIFIER,DOC_COUNTRY,DOC_SUBDIVISION, andDOC_TYPE. - Phone Number: Exact match on
PHONE_NUMBER. - Email Address: Exact match on
EMAIL_ADDRESS. - Full Name: Exact match on both
GIVEN_NAMEandFAMILY_NAME. - Full Name + Date of Birth: Exact match on
GIVEN_NAME,FAMILY_NAME, andDATE_OF_BIRTH. - Full Name + Normalised Address: Exact match on
ADDR_NORM_SHORT,GIVEN_NAME, andFAMILY_NAME.