Assessing Risk in FrankieOne
This guide provides a comprehensive overview of how to implement and configure the Risk-Based Onboarding Engine in FrankieOne v2.0.0. It covers the core concepts of risk calculation, workflow integration, and the detailed configuration of risk factors.
How Risk Works in Workflows
The FrankieOne v2 Risk Engine transforms static, check-based verification into a dynamic, intelligence-driven framework. This enables you to design sophisticated, risk-based user journeys where the level of due diligence is directly proportional to the calculated risk of an entity.
Core Concepts
Entity
The subject of the risk assessment, which can be an INDIVIDUAL
or an ORGANIZATION
.
Service Profile
A container for a specific customer context (e.g., KYC Onboarding). Each service profile is assigned one and only one risk profile.
Risk Profile
The central JSON configuration that governs all risk calculations. It defines the risk levels (e.g., LOW, MEDIUM, HIGH) and the factors to be evaluated.
Risk Factor
A specific rule that extracts data, applies scoring logic, and produces a numerical score. Each factor is an independent unit of risk logic.
Risk Assessment
The final output of a risk evaluation generated at the end of a workflow. It contains the aggregated score, the corresponding risk level, and a detailed list of all contributing factors.
The Risk Assessment Lifecycle
Risk is assessed in a multi-stage process integrated directly into the workflow execution.
Workflow Start
The system loads all VALID
risk factors already associated with the entity’s service profile into the workflow’s context. The initial risk score is based on this pre-existing state.
Data Collection Steps
As the workflow progresses, steps like AML, IDV, and Onboarding Fraud checks generate processResults
, which serve as the source data for many risk factors.
Risk Calculation
A dedicated RISK
step is triggered. This step evaluates all factors defined in the risk profile, applies the configured scoring logic (scoreMethod
), and aggregates the results to produce a final score for each factor.
Risk Factor Statuses
Each risk factor has a status to manage its lifecycle and ensure calculation accuracy:
Risk Profile Configuration
The entire risk engine is driven by the risk_profiles.json
configuration file. Each profile defines the levels
and factors
for risk calculation.
levels
Schema
The levels
array defines the qualitative risk bands and their corresponding numerical score ranges.
- label: The name of the risk level (e.g.,
LOW
,HIGH
). - range: Defines the numerical score boundaries.
min
andmax
are inclusive. - extra.GenerateIssue: An optional object that instructs the engine to generate a workflow issue when the risk level is reached.
factors
Schema
The factors
array lists all risk factors to be evaluated. Each factor object is a rule for calculating a specific risk score component.
- name: The unique identifier for the risk factor (e.g.,
fraud_email
). - description: A human-readable description for display and auditing.
- handler: The name of the internal service responsible for data extraction and scoring logic (e.g.,
jurisdiction_lookup
). - scoreMethod: The method for assigning a score (
lookup
,lookup_range
,bool
). - aggregate: The method for aggregating multiple scores into a single factor score (
sum
,max
,min
,average
,count
). This applies only when a handler returns multiple values. - scores: An array of objects defining the value-to-score mapping.
- defaultScore: A fallback score to apply if the input data cannot be mapped via the
scores
array.
Risk Factor Library
This section provides a comprehensive catalogue of the risk factors available in the FrankieOne platform. Each factor is designed to assess a specific element of risk during the onboarding process.
KYC Risk Factors (Individuals)
These factors are applicable to INDIVIDUAL
entities and focus on identity attributes, jurisdiction, and AML signals.
entity_age
Calculates risk based on the individual’s age at the time of workflow execution.
- Handler:
entity_age
- Score Method:
lookup_range
- Data Source:
individual.dateOfBirth.normalized
document_type
Applies risk based on the type(s) of identity documents provided. It aggregates scores if multiple documents are present.
- Handler:
document_type_lookup
- Score Method:
lookup
- Aggregate Method:
max
(Typically used to take the score of the riskiest document) - Data Source:
individual.documents.IDENTITY[].type
nationality_risk
Scores risk based on the provided nationality.
- Handler:
jurisdiction_lookup
- Score Method:
lookup
- Aggregate Method:
max
- Data Source:
individual.nationality
residential_country_risk
Scores risk based on the current residential address country.
- Handler:
jurisdiction_lookup
- Score Method:
lookup
- Aggregate Method:
max
- Data Source:
individual.addresses[]
wheretype
isRESIDENTIAL
AML Factors (is_pep, has_sanctions, etc.)
These boolean factors check for the presence of corresponding data in AML processResults
.
- Handlers:
is_pep
,has_sanctions
,has_adverse_media
,on_watchlist
- Score Method:
bool
- Data Source:
processResults[]
wheresupplementaryData.type
isAML
is_pep
):pep_level
Scores risk based on the numerical PEP classification level (1-4).
- Handler:
pep_level_lookup
- Score Method:
lookup
- Aggregate Method:
max
- Data Source:
processResults[].supplementaryData.pepData[].level
workflow_attempts
Scores risk based on the number of times an entity has executed a specific workflow.
- Handler:
workflow_attempts_counter
- Score Method:
lookup_range
- Data Source: Historical workflow execution records for the entity.
custom_attribute_risk
Scores risk based on custom key-value data provided by the client in the individual.customAttributes
object.
- Handler:
custom_attribute_lookup
- Score Method:
lookup
- Data Source:
individual.customAttributes
unresolved_duplicates
Scores risk based on the number of potential duplicate profiles for the entity that have not yet been resolved.
- Handler:
unresolved_duplicates
- Score Method:
lookup_range
- Data Source: Duplicate check process results.
true_positive_duplicates
Scores risk based on the number of duplicate profiles that have been confirmed as TRUE_POSITIVE
.
- Handler:
true_positive_duplicates
- Score Method:
lookup_range
- Data Source: Duplicate check process results.
Onboarding Fraud Risk Factors
This section details the risk factors derived from Onboarding Fraud checks. These checks provide signals for device, IP address, phone number, and email address risk.
fraud_count_session
This factor scores risk based on the number of sessions used during an onboarding workflow. An excessive number of sessions can indicate suspicious behavior.
- Handler:
fraud_count_session
- Score Method:
lookup_range
- Returns: A single integer value representing the session count.
fraud_ip_address
This factor aggregates risk signals from IP address checks across one or more sessions.
- Handler:
fraud_ip_address
- Score Method:
lookup
- Aggregate:
max
(to capture the highest risk signal from any session) - Returns: An array of risk levels (e.g.,
[“HIGH”, “LOW”]
).
fraud_device
This factor aggregates risk signals from device checks across one or more sessions.
- Handler:
fraud_device
- Score Method:
lookup
- Aggregate:
max
(to capture the highest risk signal from any device) - Returns: An array of risk levels (e.g.,
[“HIGH”, “LOW”]
).
fraud_email
This factor scores risk based on the fraud signal for the selected entity email address.
- Handler:
fraud_email
- Score Method:
lookup
- Returns: A single risk level value (e.g.,
“MEDIUM”
).
fraud_phone_number
This factor scores risk based on the fraud signal for the selected entity phone number.
- Handler:
fraud_phone_number
- Score Method:
lookup
- Returns: A single risk level value (e.g.,
“HIGH”
).
Risk in Workflows: The Fraud Step
The Onboarding Fraud solution is integrated into workflows via a dedicated Fraud Step.
Step Results
The Fraud Step can return one of three results:
Impact of Resolving Results on Risk Calculation
When an operator resolves a HIT
, their action directly impacts how risk is calculated on subsequent workflow runs.
Advanced Configuration
Aggregation Methods
Aggregation applies only when a factor’s handler yields multiple input values (e.g., multiple device risk scores). The engine first calculates an “item score” for each value and then collapses them into a single “factor score” using one of the following methods:
Connector-Level HIT/CLEAR Mapping
For some third-party providers, you can configure how their risk levels map to FrankieOne’s HIT
or CLEAR
results at the connector level. This allows for fine-tuning of your risk appetite.
By default, the mapping is:
HIGH
,MEDIUM
,UNACCEPTABLE
-> HITLOW
-> CLEAR
You can override this behavior in the connector configuration. For example, to treat MEDIUM
risk as CLEAR
: