Rules
Configure scoring rules for the transactions
To define a rule for the real-time system, you must open the Go!KYT rules page.
enc_U2FsdGVkX1+R04y0pFtf/tCOUCkzNN6PDDl5BjggtyM=_enc
Each rule is defined by the following fields, in addition to the decision tree that we will present later:
Field name | Description |
---|---|
name | The name of the rule. |
code | A computer friendly code of the rule. |
description | The description of the rule. |
weight | If not null, the rule will participate to the score average computation, if null the max score will be used (see final scoring) |
active | If false, the rule will be processed but the score will be ignored, it can be use to dry run a rule |
enc_U2FsdGVkX18WFYkW0JtW5fmQTv/97FkCgDwH884oiKn0rTOtukRf+SyVPbMEU5YO_enc
enc_U2FsdGVkX18BfqsL+dWTw4T5YIJWFVDop0ZdBzSLZ2f2yUrjNsoXEzABy8BR3JkOnVk3fYS0VvK7ML/15vLmToiwBcsdUBebqZZOimaPZz/ZFX/OgiahpawrH/Tj+FS0MCMkb9rX/Ag28Q7AQdym/3o4xuU/m3BRf9aIyK00/MchD20ph+ENcOwTr+vGPNfK6dr9ypSyUlepU1Xvrbocnw==_enc
Using this set of rules applied to a transaction:
Code | Description | Weight | Resulting score |
---|---|---|---|
amount_threshold | Transaction amount is more than 100 000 € | null | 80 |
is_pep | Customer is PEP | 1 | 80 |
is_high_risk | Customer is high risk | 2 | 100 |
incoming_payment_wrong_name | Transaction defined recipient name doesn’t match real recipient name | 1 | 0 |
Here first we compute the weighted average which is (80 + 0 + 2 * 100) / 4 = 70
.
Then we take the max of the rules without weight and this average which leads to max(70, 80) = 80
.
The final score for the transaction will be 80 and the transaction will be delayed (if transactions are delayed for score between 70 and 90, see review page).
enc_U2FsdGVkX18TAYgOsnEGuzqTqy9ef43QnFLTDZB2grA=_enc
enc_U2FsdGVkX1+/MNpdY2x3aa+A4FmnwJ/vMo4/YJws+BZlwUBfu33JhmFQu+hmKEnS5PnmW5GhyCDvVMS73gyI7xwGo/7GM6M6RfQ509ZQY5HLeVCAUdWOuLAhxXxCIQaR2FECEkM2lkdbmJTn9JP+cC4M6bB0mxTT7fJWDBzyPy2HMUsT2QS+rfZC+NOq9AMb_enc
Example of a rule decision tree (Go!Risk)
enc_U2FsdGVkX1/GEfsM3hUawemfxkLv0XcZIpeQQ61wGhQ=_enc
A matrix node will compare a variable with a set of values, and output one of four values: “high”, “medium”, “low” or “undefined”.
The matrix node works on strings
, numbers
and booleans
.
It has the following options:
Option name | Description |
---|---|
variable | The variable to compare. |
matrix_id | The matrix to use. |
use_regex | If true, the matrix will use regex to match the variable. |
enc_U2FsdGVkX1/YnTnvfRJJnJdWWUHG9SZ9QF1Y0AJ6JXU=_enc
The comparison node will compare two variables, and output one of three values: “yes”, “no” or “undefined”.
The comparison node works on strings
, numbers
and booleans
.
It has the following options:
Option name | Description | Example |
---|---|---|
variables | The variables code (aggregated to a single value). It can also be a static arbitrary value. | payment_method.code |
comparator | One of the following values: = , != , > , >= , < , <= , regex . | regex |
value | An arbitrary value used for the final comparison. | /^FR.*$/ |
enc_U2FsdGVkX18pZdZePZami3NodfGt5d97PEF3T/JZtnk=_enc
The formula node will compute a number result from multiple variables, compare it to a value and output one of three values: “yes”, “no” or “undefined”.
The formula node works on numbers
and booleans
. Booleans are converted to 0
or 1
.
It has the following options:
Option name | Description | Example |
---|---|---|
variables | A map of named variables. | converted_amount and 30d_average_amount |
formula | A formula using the variables, the formula must return a boolean value and use valid math function defined here. | (converted_amount - 30d_average_amount) / 30d_average_amount |
comparator | One of the following values: = , != , > , >= , < , <= . | > |
value | An arbitrary value used for the final comparison. | 1 |
enc_U2FsdGVkX1874LbM0s5LQtdPDQX5xW898yO4dGAj3Yk=_enc
The API node will call an external API, and output one of three values: “yes”, “no” or “undefined”.
It has the following options:
Option name | Description |
---|---|
endpoint | The URL of the API to call, we will send a JSON object containing the transaction details using POST. The reply must be a TEXT of the format yes or no or a number starting from 0. Any other reply means “undefined”. |
timeout | The timeout in milliseconds, max timeout is 5 seconds. |
enc_U2FsdGVkX18ILs1mW6k2zs9c96GhCDffmT07q2Os4/AXWCNvhdSmWNDMfiqlwB5pKq9sl5nHL+e7qQ2/d99b1C55A79kwmacdpMxQRiG3hsR1FjVn6+HLobF1US6s/3+_enc enc_U2FsdGVkX1+KbJuixQaqNFQWDkqvI/g2VPMltm9mUcKnAjJ6DvsaNv5931IKrqoBO3Mr4iGCe6x0AH+GQYwrIbxGkwymMiweSjl/ONDxe9a3FIuoRMU4bqpas3OQn//T3nBcyjzMt4VGuXE8ZkEQLw==_enc enc_U2FsdGVkX18q1CznWIXKyZ9OtQ6qWp9PkTZQhUud0RZfDVAPJKXsLr4/1Dkv8jLHd2FLFRG0q+9Z0vYKRAT+4mC+2C8HApBOFBxaoERmaF8tjLhsZ4QfIHHAejQcAZJd_enc
enc_U2FsdGVkX1/RSo+0qwmIMW5XastI3/31jjQSwf+PvDU=_enc
Leaf nodes must define the following parameters:
Option name | Description |
---|---|
score | The score to output for the rule if the node is reached, between 0 and 100. |
enc_U2FsdGVkX19dibcvZrEhDztEzMQ54lqRV1T34MJVz2OowZPaRQfLvKnhBm1ecY6c_enc
enc_U2FsdGVkX18B/PkxvvvC4EXSvqBqy3CYrL0hqST6out+mKesb7gizpV1kaYc+gzea8OrXZ14O5wspAZUVaOZHA==_enc
Everything defined in the transaction and its participants is available for the rule engine. If the participants, or institutions matches a known customer in Algoreg, the customer data (participant or institution of participant) will be available too as well as:
Product origin | Variables |
---|---|
Go!Scan | maybe_san , is_san , maybe_pep , is_pep . |
Go!Risk | current value of a risk factor from Go!Risk using the risk_factor.[risk_factor_code] computed variables, or the risk_factor.overall variable (contains UNDEFINED , LOW , MEDIUM , or HIGH values). |
Go!Vid | is_kyc_complete , a boolean. |
Go!Press | press_score , a number between -10 and 10. |
Go!Chat | active_threads_tags , a string containing a list of tags for all non-closed threads. |
enc_U2FsdGVkX183BHtzEOK7IDD42Gn+HvBOJJWiYcNT5iM=_enc
In addition to this variables, the following variables are available on the transaction object:
Variable name | Description |
---|---|
converted_amount | The transaction amount converted in EUR, better suited for comparison and threshold. |
name_match_score | If an external_id was provided, we return a matching score between the customer and the name defined by the emiter of the transaction, 0% for no match, and 100% for exact match. The comparison uses the same algorithms as Go!Scan |
[edge|from|to].[in|out|all].[1|3|7|15|30|60|90|120|180|270|365|all].[max|min|sum|count] | Amount on a rolling window of the from, to or the relation between both participants. Note: in edge mode, out means from->to |