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_U2FsdGVkX19QxDwas+/ksMZ2wlIJ4ixHstzSLvSBtNU=_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+isAnVvXux2Tleh4tih0FXB9iWGpGA8iFxKsHyc+P/sZXpseA+i5YZ_enc
enc_U2FsdGVkX1+GBe9rYmllEJ7tfWkMt83fmhbks/q6M8OBYTgSQhjxLwH/WBDXRZ362tnWQLlIau/Gr/jvkyfN7/Q+v5qIJjBR0jk8irA490Z5z19KRij9ALQJ59wwzQldNS7h7DSugkUcs0pHWDkxkR8xPtLFH0gdJC8D7M5m8zgWNKE3hWz0V4+ucPDhZOwjqjPhInJVQUlBeVLoYuSslw==_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_U2FsdGVkX18BrGkubzISIWcg+LKcN2vnjqPG0/PcIWk=_enc
enc_U2FsdGVkX18g84lP/7Lpp12qQYb7lFgPyHo5Hd/gHyzCRhvx7KEqzb939giziqahrCPcKWQkuLMmv4iJy90L/jwHGv95ckqdWxgKbXahIobEwkNW/GJytFUD68343CJOEqO8egLIv1XnwkiuQW3UIcHbW+DjWbSsO01KTAH8CnElKKbEP28lhdjaVeTYlYms_enc
Example of a rule decision tree (Go!Risk)
enc_U2FsdGVkX1+mb5oxQYrPvnHjNxgnB8PjFa3s0oOjiUc=_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+DvCfj9/HoZViNxkLZkKRZgDsL3fWy4mY=_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_U2FsdGVkX1+2y4wA9IN5h0LE377XNqbnnsVosD6bO5g=_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_U2FsdGVkX1835fByYaLHk/2wM8H/q7eYBs63NWv6kKY=_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_U2FsdGVkX184pX8+zBS+8t4OtcN+RPv66Xqy+MH4Gnojn4ADnrkSPxq3BaHQSiulYpJNy1kq4lEfEcnFMLOqVR7PAtSiQXTN56kpcSFVUnW1GsRm16r0jtvrjjfBzzJK_enc enc_U2FsdGVkX19lI7tIBMh+rRXn30b1jZjCHGs7DepCpAvQ34LjTEdwl8dcJtXTkSMjCQIsEHxpNcL6az7BhZKsbeRVb9GzN58LumGgF8axZ+CpzVn1VXrS8j/ArmkiDJObLKVw6MpqzTOJAiv7n2hphw==_enc enc_U2FsdGVkX1/RfGYTiqwNS4Oe6v/r94X0DrLPcWcSQYfdVnvC/zeK+T63+6IjgAtRB23NUg3i8L4st9faLYukC2zZ/mQperA4Ur/1xds2aQTsiVxX1ZBxqX+JeEkUiFNV_enc
enc_U2FsdGVkX1/pzaGnM8cbfzCGvelhMKtGH0rNOLUTIeg=_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/5n8zM4/gypGD/RQHwlnQO/F7UGKiBy3V9Bi9qHfkq2C4IGcpqCEPK_enc
enc_U2FsdGVkX19w7a53TpeIms29am4juQcOfIDgV5403vMLn3yJj/BG+kFSs6djMHtG6Uw3BwDlFItsvqJs+a1Iyg==_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_U2FsdGVkX1/Xo/FyvAG3YNFtRtpLVUkAnFth0kJLf8g=_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 |