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
Entity
The subject of the risk assessment, which can be an
INDIVIDUAL or an ORGANIZATION.Service Profile
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
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
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
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.Workflow Finish
The scores from all evaluated risk factors are summed to produce the final
workflowRiskScore. This score is then mapped to a workflowRiskLevel. The complete RiskAssessment is added to the workflowResult.Risk Factor Statuses
Each risk factor has a status to manage its lifecycle and ensure calculation accuracy:| Status | Description |
|---|---|
| VALID | The default status. The factor is current and contributes to the risk score. |
| STALE | The underlying data used to generate the factor has changed (e.g., an entity’s address was updated). Stale factors are excluded from future calculations and are replaced by new, VALID factors. |
| OVERRIDDEN | A user has manually overridden the factor’s score. The manualOverrideScore will be used instead of the system-calculated score. |
| DISCARDED | The factor was generated during a workflow but later deemed irrelevant within the same execution. It is excluded from the final risk assessment. |
Risk Profile Configuration
The entire risk engine is driven by therisk_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.
minandmaxare 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
scoresarray.
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 toINDIVIDUAL entities and focus on identity attributes, jurisdiction, and AML signals.
entity_age
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
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
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
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[]wheretypeisRESIDENTIAL
AML Factors (is_pep, has_sanctions, etc.)
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.typeisAML
is_pep):pep_level
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
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
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
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
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
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
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
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
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
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:| Result | Description |
|---|---|
| CLEAR | All underlying checks passed without raising any concerns. No operator action is required. |
| HIT | One or more underlying checks returned results that should be reviewed by an operator. |
| UNCHECKED | The step was unable to generate any results, likely due to a data validation or system issue. |
Impact of Resolving Results on Risk Calculation
When an operator resolves aHIT, their action directly impacts how risk is calculated on subsequent workflow runs.
| Operator Action/Status | Effect on Risk Calculation |
|---|---|
| No manualStatus (Unresolved) | The risk from the provider is used as is. |
FALSE_POSITIVE | The risk for the result is ignored entirely and excluded from the calculation. |
TRUE_POSITIVE_ACCEPT | The risk for the result is forced to LOW to reflect that the signal is real but the risk has been accepted by the operator. |
TRUE_POSITIVE_REJECT | The risk for the result remains as it was from the provider, reflecting that the signal is real and has been rejected by the operator. |
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:| Method | Description |
|---|---|
| max | The final factor score is the highest score from all evaluated items. |
| sum | The final factor score is the sum of all item scores. |
| min | The final factor score is the lowest score from all evaluated items. |
| average | The final factor score is the mathematical average of all item scores. |
| count | The final score is determined by the total number of input items, which is then mapped against the ranges defined in the scores array. |
Connector-Level HIT/CLEAR Mapping
For some third-party providers, you can configure how their risk levels map to FrankieOne’sHIT 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
MEDIUM risk as CLEAR: