To define a rule for the real-time system, you must open the Go!KYT rules page.

enc_U2FsdGVkX1/FVW/ZYE63wMy1FvvmqwNMVxFMjN4Nxos=_enc

Each rule is defined by the following fields, in addition to the decision tree that we will present later:

Field nameDescription
nameThe name of the rule.
codeA computer friendly code of the rule.
descriptionThe description of the rule.
weightIf not null, the rule will participate to the score average computation, if null the max score will be used (see final scoring)
activeIf false, the rule will be processed but the score will be ignored, it can be use to dry run a rule

enc_U2FsdGVkX1/Bd98thc2As8C4zFSLMMvkw0DZYelTP3EHnYyi8DxGuqHbb+dOa6rd_enc

enc_U2FsdGVkX19SpuieOV83lXxRSYcDO6E+Ew0nqXQsohu/kAMWsHKf4FSKQ7+usM9TEaqqDnnn3UcYI4FL2u/5qvtINxpCaXRQB7wAL8eiAx/8YnDfQOR/Mm6arnZYNitxTfi5VQ/X7kQBYcR6nteCU23tKx8Ast2HDJmFZIT+/dbzSydpMWZcAeojKatvjVyBHII/+/FdsxjRA0IjBi2pEg==_enc

Using this set of rules applied to a transaction:

CodeDescriptionWeightResulting score
amount_thresholdTransaction amount is more than 100 000 €null80
is_pepCustomer is PEP180
is_high_riskCustomer is high risk2100
incoming_payment_wrong_nameTransaction defined recipient name doesn’t match real recipient name10

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/CJsPCk8QjcgcZEFDvdeEnadK/wy5Gz6w=_enc

enc_U2FsdGVkX1/AQG1JHHaAjo+lIreeox7vZ2DcGWtzQX65WrSFwBYD0JKDOJx24KzlRXwgQEBSQFwTyEBgZp+uGoKUWrtAGSTmSPkPn/CJVcILY5ObsDgjSGsrU0mQc47t0A+xK5TMI56OOW4jIyir/vm/JEDR548pBgnrM9fR1eLRCiNYWq5t+8jM374ICLGo_enc

Example of a rule decision tree

Example of a rule decision tree (Go!Risk)

enc_U2FsdGVkX187hLhV+c79NLFgqAlsBhyDc17UPOQcEGM=_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 nameDescription
variableThe variable to compare.
matrix_idThe matrix to use.
use_regexIf true, the matrix will use regex to match the variable.

enc_U2FsdGVkX1/2bVIknCDb/fy5OAJIo6W1ruORNVJsMhE=_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 nameDescriptionExample
variablesThe variables code (aggregated to a single value). It can also be a static arbitrary value.payment_method.code
comparatorOne of the following values: =, !=, >, >=, <, <=, regex.regex
valueAn arbitrary value used for the final comparison./^FR.*$/

enc_U2FsdGVkX1/n7Fke80uKPC+op21G75kFPEeRW9iDF2E=_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 nameDescriptionExample
variablesA map of named variables.converted_amount and 30d_average_amount
formulaA 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
comparatorOne of the following values: =, !=, >, >=, <, <=.>
valueAn arbitrary value used for the final comparison.1

enc_U2FsdGVkX1+tS+HVsIe1hliT1wXzwgMUYPJ0iSriipc=_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 nameDescription
endpointThe 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”.
timeoutThe timeout in milliseconds, max timeout is 5 seconds.

enc_U2FsdGVkX1965CK4bzS6NA6ePCM3XnX0zNiAI7KHmoz04KiUP4n5IFB5Tm2MvxOqOtW4n3vziyXuR6mPF64WeICZwZ4gU+wGATsjNxdMvjA7+ryZSsobJzn3wA5dGRBJ_enc enc_U2FsdGVkX18r0rZCOcGKBJfWcszV1UAQywAmdVd99mSbRUZCkaxhGuIGWyMJ8/i/WJbtxgDEAzMRbbYBneFn53jAU1kYscKD9Ge9c+H7lKqDyosw+LAmxsrS0z/wkGIZ+IAQ1FcP/LttKJx+wFMi+Q==_enc enc_U2FsdGVkX1+WXmSQPoEjCcF8JohA2gU3oPKJFbOUxmI0JG0oYGcsgUqXltMpOqKf4KaLp+3Vm5hGZ7MK0RfyDHU/MCR8+QhA93gTLz/JFNsRGncW6Xbst/AHxCAvJ8jj_enc

enc_U2FsdGVkX19GGNhdXth+O0dem09C/SF3llfpKY4VsGY=_enc

Leaf nodes must define the following parameters:

Option nameDescription
scoreThe score to output for the rule if the node is reached, between 0 and 100.

enc_U2FsdGVkX19tYGUp758FH3qKCQB0EROF4ymj8uRVnuFvHeUGbY1HMKz1xjzUnBJU_enc

enc_U2FsdGVkX18GslfKl1J1rDb1o1nbC+3SGvrAeAtryo1fmFEO8/nfEZb3NhgJgiF5p5fAlYTY68UK/w0GzCrVzA==_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 originVariables
Go!Scanmaybe_san, is_san, maybe_pep, is_pep.
Go!Riskcurrent 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!Vidis_kyc_complete, a boolean.
Go!Presspress_score, a number between -10 and 10.
Go!Chatactive_threads_tags, a string containing a list of tags for all non-closed threads.

enc_U2FsdGVkX193dUM0tjIsZ+EvU1HrQmzo0DHU6Ga01Hg=_enc

In addition to this variables, the following variables are available on the transaction object:

Variable nameDescription
converted_amountThe transaction amount converted in EUR, better suited for comparison and threshold.
name_match_scoreIf 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