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+X7hTNF4k2eg4rzf0c0cLHZW8JunttwHQ=_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_U2FsdGVkX1+d61RoUkTuiL+eXy9usbgGnXYb0IBrhgzA+KazaQ2b19Aqo9imr8qc_enc
enc_U2FsdGVkX18f2EObJQ7cMgnW3TMNx5WMmRfpMF4gX7qSE868HWPUwLBYIo046PxvJOUjdQ+u92WNuldOM90AeISfhvia4rqtE93XiKsVP0bYEL2y5hH/Tpd2U8UUv9yBP1kpoYsfk1D9ixPlQeyBt6/tYPfpo0kZ/kaNu1ZJf4BhtN4edVCavTTG3S9B4TYvrVqBL6NSm5W90ZYooGaiiw==_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_U2FsdGVkX1/9KA2zXugV4Pw3+BRsqG9/8Bq7QjMQwSo=_enc
enc_U2FsdGVkX1/e95/H5eBe55KiS8yh8BS4G5l4YOUdqpu2Abt9BlZkD+qJ/Tw6aAapbx9BHVFLBgt0Q6gfXoYSYWnpdureng/uq7x+M2ufaoyzb0T8zyTl1fMUKz2OepgDE12gjYmZEthPuRiILDqbu291AQg2K+G9G6trqNw6eDi9IfnZB8buJmMKfyv9rMc/_enc
Example of a rule decision tree (Go!Risk)
enc_U2FsdGVkX1+GIdJ9hfeSKkh1HxbSFMu2pch2JA1MWN4=_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_U2FsdGVkX18aT0lGP58OZqGHQsvn4/+YN+97/hd9Fe0=_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_U2FsdGVkX18Z9pcW7pYdNijFhIUgbGfcyr4xNHuHG7U=_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_U2FsdGVkX1+/kKdyLsXf8pB1RRFW7Cy1qYLdCrXwK6s=_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_U2FsdGVkX1+/cljH3X5KkOv1jvbFoUEB+anUKWlxfmc1CsR9nxLNiDNvs5bNPTlTOxwtU61dhI1qF0zLheGbWGp/pZn5fr4WB11ZX6ZzranfBNAMJUd7VG5EeFRwp/Ed_enc enc_U2FsdGVkX1+pUnNJNvPbGvlyoLUahmp+fzRNmtqxnB3fD+BxGZqhN6upRMwnHddXNezuru1jjlZeq7frVxEvxQxhieMmCzQlSGOnJKgmpgxvdchckwsMFofIDGS/vueJG7TOPuIi/Fm0wh96YifEKw==_enc enc_U2FsdGVkX1+brCkIdW2lF31qbuz0j9POQOSKPMx8N1nTyxxoTLF695zjBGXEUoBQePfOTHggwUAGYD2tm84izd9r+gaB5n2Hjz2pMjB1YA5SnrX+LlQtZ9Vxy4tCUCfi_enc
enc_U2FsdGVkX18vYwo0uDbkul4ifgdwygVL6iredO2q+Xk=_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_U2FsdGVkX1+V5xHDLSh5WYsX5/O+aMRY52kva2J3ID0uwE6FopXIGuh0yjUz5kCX_enc
enc_U2FsdGVkX18E72VGAvZVs0t6Y6QUNIhJ0Hv7uYxP0hvDQEFCUJ6YZdzd8aVGM40ka6zhBKneeSR/CMvB9UDRBw==_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_U2FsdGVkX18PtLgr2pOn6BP6546h9iCCtHaXn/ZGsBc=_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 |