Pular para o post

Explicação

O que é um motor de decisão e quando você precisa de um?

Every company that approves, prices or declines something has a decision engine. In most of them it is scattered across a service, a spreadsheet and someone's memory.

A definição simples

A decision engine is the part of a system that takes facts about a case and returns a verdict: approve or decline, price A or price B, review this or let it through. The important word is "part". What makes something a decision engine rather than a pile of conditionals is that the logic is separated from the systems that ask the question, and can be changed without changing them.

Essa separação é a ideia inteira. Seu sistema de originação, seu checkout e seu formulário de onboarding precisam de respostas. Nenhum deles precisa conter a política que produz a resposta. Quando a política vive por conta própria, quem responde por ela consegue vê-la, mudá-la e provar o que ela fez — nada disso é possível quando ela está espalhada por três serviços e um cron.

Ninguém adota um motor de decisão para ter decisões. Você já tem decisões. Adota-se um para tê-las em um único lugar que alguém de fora da engenharia consiga ler.

O problema dos três if

Quase todo motor de decisão começa como três if dentro da aplicação que precisava deles. Esse é o começo certo — três condições não justificam infraestrutura. O problema é que lógica de decisão não cresce de forma linear. Ela cresce por exceção.

A rule gets a carve-out for one segment. The carve-out gets a threshold. The threshold needs to differ by channel. Six months later the function is four hundred lines, only one person is willing to touch it, and nobody can answer "what would this have done last March" without checking out an old commit.

Ninguém consegue ler
Quem responde pela inadimplência ou pela taxa de fraude não consegue abrir o arquivo. Aí a política passa a ser discutida pelo que as pessoas acreditam que ela faz.
Ninguém consegue mudar
Cada ajuste é um chamado, uma revisão, um deploy e uma janela de release — para uma mudança que, no fundo, é um número.
Ninguém consegue provar
Quando um cliente ou um regulador pergunta por quê, a resposta é remontada a partir de logs depois do fato, em vez de ter sido registrada na hora.

O que um motor de decisão realmente entrega

Quatro coisas, mais ou menos na ordem do quanto importam depois que você as tem.

Legibilidade
A política é legível para quem responde por ela. Uma tabela de corte parece uma tabela, e não condicionais aninhadas em uma linguagem que essa pessoa não escreve.
Mudança sem deploy
Editar a política e subir a aplicação viram atos separados. O calendário de release deixa de ser o limite de velocidade da gestão de risco.
Versões
Uma política é um artefato versionado. Dá para apontar a versão exata que tomou uma decisão, rodar uma nova contra casos já registrados e migrar o tráfego aos poucos.
Uma trilha
Toda decisão registra suas entradas, sua saída e o caminho que percorreu até lá. É essa a diferença entre uma explicação e uma reconstituição.

Regras, tabelas, modelos — um motor de decisão guarda os três

A common mistake is treating "rules engine" and "machine learning" as competing answers. Real policies use both, usually in the same decision. A model produces a score; rules decide what the score means for this segment, in this channel, under this month's risk appetite. Hard blocks — a sanctioned party, a failed identity check — do not want a probability at all.

Então a pergunta útil não é qual usar, e sim se os dois moram no mesmo lugar. Quando o modelo roda em um sistema e as regras que o interpretam moram em outro, nenhum artefato descreve a decisão inteira, e os dois se afastam. Quando estão no mesmo fluxo, o score, os limiares e as ramificações são uma coisa só, versionada.

O custo honesto

Um motor de decisão acrescenta uma fronteira de sistema. Sua aplicação passa a chamar algo em vez de calcular algo, o que significa um salto de rede, um modo de falha e um contrato a manter. Se a sua decisão é mesmo três condições estáveis, essa troca é ruim e você deveria ficar com os if.

A troca vira vantajosa em um momento específico e reconhecível: quando o custo de mudar a lógica começa a superar o custo de executá-la. Isso costuma acontecer quando alguém de fora da engenharia passa a responder por um número que o código controla — inadimplência, taxa de aprovação, taxa de falso positivo. Dali em diante, cada semana em que a política não pode mudar é um custo real, e ele se acumula.

O que procurar

Se você está avaliando um, as perguntas que valem a pena são menos sobre funcionalidades e mais sobre quem, no fim, consegue fazer o quê.

O dono da política consegue mudar sozinho?
Not "can they request a change" — can they open it, edit it, test it, and publish it without an engineer in the loop.
Dá para testar antes de valer?
Um sandbox que roda a lógica real contra casos reais, não uma prévia que se aproxima dela.
A decisão é reproduzível?
Dada uma decisão de três meses atrás, dá para ver a versão exata e o caminho exato, ou só a resposta final.
Ele orquestra os seus dados?
A maioria das decisões precisa de um bureau, de um sinal de dispositivo ou de uma checagem de verificação. Se o motor não consegue chamá-los, o código de cola volta e a lógica se parte em duas de novo.

Perguntas

Motor de decisão é a mesma coisa que motor de regras?

Motor de regras é um tipo de motor de decisão — aquele cuja lógica é expressa como regras. Motor de decisão é a categoria mais ampla: pode combinar regras, tabelas de decisão, scorecards, modelos e chamadas a dados externos, e se define por manter a lógica de decisão separada dos sistemas que pedem uma decisão.

Precisamos de um motor de decisão se já temos um modelo?

Normalmente sim, por um motivo que costuma ser subestimado: um modelo produz um score, não uma decisão. Alguma coisa ainda precisa decidir o que aquele score significa para um dado segmento, canal e apetite de risco, e tratar os casos que nem deveriam ser pontuados. Essa camada de interpretação é o motor de decisão, e deixá-la espalhada pelo código da aplicação é o que faz modelo e política se afastarem.

Quando um motor de decisão é exagero?

Quando a lógica é pequena e estável, e quem responde pelo resultado é a mesma pessoa que pode editar o código. Três condições que não mudam há um ano não precisam de infraestrutura. Deixa de ser exagero no ponto em que o custo de mudar a lógica supera o custo de executá-la.

Quando você quiser

Monte a decisão que este texto descreve.

Crie um workspace, desenhe o fluxo no Sandbox e leia a trilha de cada execução antes de ele receber tráfego.

Veja quanto custa