← Índice de manuales
Manual funcional · Sistema Plenario v14

Motor de Decisión - Configuración de reglas y resultados de evaluación crediticia

El Motor de Decisión es la herramienta con la que la financiera arma sus propios criterios de evaluación crediticia y los aplica de forma automática a cada solicitud de préstamo online.

Módulo: Motor de DecisiónVersión: 1.3Actualizado: 2026-10-25

Detalle

Campo Valor
Manual de Usuario Cómo armar las reglas del Motor de Decisión y consultar los resultados de cada evaluación crediticia (scoring NOSIS, aprobación o rechazo automático de préstamos online).
Módulo Herramientas → Motor de Decisión
Versión del manual 1.1

Introducción

El Motor de Decisión es la herramienta con la que la financiera arma sus propios criterios de evaluación crediticia y los aplica de forma automática a cada solicitud de préstamo online.

Cada motor es un flujo de reglas (un árbol de decisión que se dibuja en pantalla) que va combinando datos del cliente para llegar a una respuesta final: aprobado, observado o rechazado.

Para tomar esa decisión, el motor puede usar:

  • Variables internas de Plenario: líneas de crédito disponibles, datos del cliente, etc.
  • Variables externas de buró: score y antecedentes de NOSIS, Veraz, BCRA, RiesgoNet, IDIC, Credixsa, SIISA y Findo.

Una vez armado, el motor se activa y la solicitud de crédito lo consulta automáticamente. Además, desde la versión 14 (changesets 23750, 23751 y 23754) el Back Office lo usa para validar el CUIT en las altas: firmantes de cheques, clientes, proveedores, proveedores financieros y el cliente y el garante de las solicitudes de crédito (ver Validación del CUIT en las altas del Back Office). Cada evaluación queda guardada en un historial que se puede revisar después por CUIT y por fecha.

Importante: este manual cubre dos tareas distintas pero conectadas: configurar las reglas de un motor (en el editor visual) y consultar los resultados de evaluaciones ya ejecutadas (en el historial). Ambas se acceden desde el mismo listado de motores.

Acceso al módulo

  1. Abrí en el navegador la web del Motor de Decisión (aplicación VPNET_WEBMotor), con la dirección que publica el administrador del sistema.
  2. Se abre el listado de motores (los flujos de reglas ya creados). Desde ahí podés crear uno nuevo, editar, evaluar, ver el historial o actualizar las variables de servicios.

Importante: la opción Herramientas → Motor de Decisión del Back Office abre el Algoritmo anterior (el listado de Algoritmos), no este motor. Las altas, los cheques y las solicitudes de crédito ya no usan el Algoritmo: usan el motor que se arma en esta web.

Pantalla principal

La pantalla principal es el listado Motores de Reglas. Cada fila es un motor configurado y muestra:

Columna Qué muestra
Acciones Botones para ver historial, evaluar y editar el motor.
ID Número que identifica al motor (se usa para invocarlo desde las solicitudes).
Nombre / Descripción Nombre del flujo (ej.: "Aprobación Créditos Personales") y su descripción.
Estado Activo o Inactivo. Solo los motores activos se usan en producción. Se cambia con el botón de encendido.
TTL Días que se reutiliza (cachea) el resultado de una evaluación para el mismo CUIT antes de volver a calcular.
Creado / Modificado Fechas de alta y última modificación.
Zona Peligrosa Botón para eliminar el motor (acción irreversible).

Arriba a la derecha están los botones Actualizar (refrescar el listado), Servicios (descargar/actualizar las variables de los burós) y Nuevo (crear un motor desde cero, abre el editor en otra pestaña).

Parámetros

Cada motor tiene una configuración general que se define en el editor, en la cabecera del flujo:

Parámetro Para qué sirve
Nombre Identifica el motor en el listado y en las solicitudes.
Descripción Texto libre para aclarar qué evalúa el motor.
TTL (días) Tiempo que se conserva en caché el resultado por CUIT. Con TTL = 0 siempre se recalcula. Con TTL = 30, si el mismo CUIT se evaluó hace menos de 30 días, se devuelve el resultado guardado sin volver a consultar los burós.
Nro Grupo (VR) Grupo de variables de NOSIS que usa el motor para el scoring.
Invocar servicio si regla válida Define si se llama al servicio externo cuando la regla lo requiere.
Estado Activo / Inactivo.

Para consultar resultados, el historial (Logs) ofrece estos filtros de búsqueda:

Filtro Para qué sirve
CUIT Trae solo las evaluaciones de ese cliente (acepta el CUIT con o sin guiones).
Desde / Hasta Acota las evaluaciones por rango de fechas.

Resultados

Cuando un motor se evalúa, devuelve un resultado de evaluación con estos datos:

Dato Qué indica
Status La decisión final: Aprobado, Observado, Rechazado o Error.
Observaciones Texto explicativo de la decisión (motivo del rechazo, condiciones, etc.).
Variables de salida Los valores que el motor produjo (por ejemplo monto preaprobado, plazo, tasa).
Traza El paso a paso de la ejecución: qué nodos se recorrieron, qué servicios se consultaron y qué dio cada comparación. Sirve para entender por qué se llegó a esa decisión.
Servicios ejecutados Qué burós se consultaron en esa evaluación (NOSIS, Veraz, etc.).

Los estados internos se manejan con estos códigos: Aprobado (200), Observado (201), Rechazado (401) y Error (500).

En el historial (Logs) cada evaluación guardada muestra el CUIT, la fecha, el TTL aplicado y el detalle completo del resultado. Las filas vencidas (fuera del TTL) aparecen resaltadas. Desde ahí se puede ver el detalle de una ejecución, eliminar un registro puntual o limpiar todo el historial del motor.

Acciones disponibles

Acción Descripción
Nuevo Crea un motor desde cero y abre el editor visual.
Editar Abre el editor para modificar el flujo de un motor existente.
Evaluar Corre el motor con datos de prueba y muestra el resultado y la traza (sin afectar producción).
Guardar Persiste el flujo del motor (cabecera + nodos).
Activar / Desactivar Cambia el estado del motor. Solo los activos se usan en las solicitudes.
Eliminar Borra el motor (irreversible).
Importar / Exportar Guarda o carga un motor como archivo, para reutilizarlo o moverlo entre instalaciones.
Servicios Descarga o actualiza las definiciones de variables de los burós (NOSIS, Plenario, Veraz, BCRA, RiesgoNet, IDIC, Credixsa, SIISA, Findo).
Ver historial (Logs) Lista las evaluaciones ejecutadas, con filtros por CUIT y fecha.
Limpiar historial Elimina todos los registros de evaluación de un motor.

Definir una regla (crear un motor)

  1. En el listado, hacé clic en Nuevo. Se abre el editor en una pestaña nueva.
  2. Completá la cabecera: Nombre, Descripción, TTL y Nro Grupo (VR) de NOSIS.
  3. Agregá nodos al flujo con el botón Agregar Nodo y conectalos entre sí. El flujo siempre arranca en el nodo inicial Motor (Start).
  4. Hacé clic en Guardar.

Armar las condiciones

Cada nodo de Condición compara un dato con un valor y bifurca el flujo en dos caminos (Verdadero / Falso):

  1. Elegí el origen del dato del lado izquierdo: - Servicio: una variable de buró (ej.: score de NOSIS, situación BCRA). - Entrada: un dato que llega con la solicitud (ej.: CUIT, ingreso declarado). - Fórmula: un cálculo combinando varias variables (ej.: edad a partir de la fecha de nacimiento).
  2. Elegí el operador (>, <, =, contiene, etc.) y el valor a comparar.
  3. Conectá la salida Verdadero y la salida Falso a los nodos que correspondan.

Los nodos de tipo Sub-Motor y Motor-Resultado permiten reutilizar otro motor ya armado dentro de este flujo, pasándole variables de entrada y leyendo sus resultados.

Ejemplo de condición: NOSIS.Score > 550 → si es Verdadero sigue por una rama (ej.: aprobar), si es Falso sigue por la otra (ej.: derivar a análisis).

Configurar el resultado

El flujo termina en un nodo de Resultado, que define la respuesta final:

  1. Definí la variable Status con el valor de la decisión: Aprobado, Observado o Rechazado.
  2. Opcionalmente, definí Observaciones con el texto explicativo.
  3. Agregá las variables de salida que necesite la solicitud (monto preaprobado, plazo, tasa, etc.), como valor fijo o como fórmula.
  4. Guardá el motor y, si quedó validado, activalo para que se use en producción.

Findo Score

Findo Score es un buró más que el motor puede consultar, como NOSIS o Veraz. Sus datos se usan en las condiciones como variables del servicio FINDO ([FINDO][variable]).

Qué informa, entre otras cosas:

  • el score de Findo y su percentil, y el ingreso estimado;
  • la deuda en el sistema financiero (Central de Deudores del BCRA): cantidad de entidades, montos adeudados y su variación a 1, 3, 6, 9, 12, 18 y 24 meses, y la peor situación en cada período;
  • si tiene reporte negativo y si figura como fallecido;
  • datos personales: nombre y apellido, fecha de nacimiento y edad, localidad, provincia, código postal y nivel socioeconómico.

Completa los datos del cliente que falten. Findo es el último buró que se tiene en cuenta: solo completa lo que ningún otro resolvió, sin pisar nada. Como informa los datos distinto que el resto:

  • el nombre y apellido viene en un solo campo y se separa en apellido y nombres;
  • no informa el sexo: se deduce del CUIT;
  • no informa calle ni número: como domicilio se usa la localidad.

Configuración. La configura Soporte de Plenario: credenciales, modo prueba o producción y cada cuántos días se puede reutilizar una consulta anterior del mismo CUIT en lugar de volver a consultar (con 0, consulta siempre). Para usar sus variables en un motor, primero actualizalas con el botón Servicios.

Validación del CUIT en las altas del Back Office

Cada punto del Back Office que valida un CUIT con el motor tiene su propio parámetro, con el Id del motor que usa, y su propia alerta, que decide qué pasa si el motor lo rechaza:

Punto Parámetro (Id del motor) Alerta Cuándo valida
Firmante de cheques: alta de cheque, carga masiva e importador por IA Factoring.Cheques.Firmante.Motor.Id Factoring.Liquidaciones.Cheques.Algoritmos.ValidarFirmante Al salir del CUIT del firmante; en la carga masiva y en el importador, al procesar cada cheque.
Alta o modificación de cliente Clientes.Alta.Motor.Id Clientes.Alta.Motor.ValidarCuit Al salir del CUIT y también al grabar, para cubrir el CUIT calculado desde el DNI. Solo en el alta o si cambia el CUIT.
Proveedor Proveedores.Alta.Motor.Id Proveedores.Alta.Motor.ValidarCuit En el alta, o al modificar si cambia el CUIT.
Proveedor financiero (inversor) ProveedoresFinancieros.Alta.Motor.Id ProveedoresFinancieros.Alta.Motor.ValidarCuit En el alta, o al modificar si cambia el CUIT.
Solicitud de crédito: cliente Prestamos.Solicitudes.Cliente.Motor.Id Prestamos.Solicitudes.Algoritmos.ValidarCliente Al cargar el CUIT del cliente de la solicitud.
Solicitud de crédito: garante Prestamos.Solicitudes.Garante.Motor.Id Prestamos.Solicitudes.Motor.ValidarGarante Al salir del CUIT del garante.
  • Solo valida si están las dos cosas: el parámetro tiene el Id de un motor (0 = no valida) y la alerta está activa. Las alertas se crean inactivas la primera vez que el sistema las usa: hay que activarlas en Herramientas → Alertas y Validaciones.
  • Si el motor rechaza el CUIT, se dispara la alerta con los motivos del rechazo. Según cómo esté configurada, avisa, bloquea o pide la autorización de un supervisor; si no deja seguir, el CUIT no se acepta.
  • Si el motor no responde: en cheques no deja seguir con ese firmante; en el resto avisa y deja continuar.
  • Mientras consulta se ve el aviso "Consultando el motor de decisión". Un CUIT que no cambió no se vuelve a evaluar.

Ejemplo práctico

Una financiera arma el motor "Evaluación Crédito Personal" así:

  1. Condición 1 — Entrada.Edad >= 21 y <= 65. Si no cumple → nodo Resultado con Status = Rechazado, Observaciones = "Edad fuera de rango".
  2. Condición 2 — Entrada.IngresoMensual > 150000. Si no cumple → Status = Rechazado.
  3. Condición 3 — NOSIS.Score > 550. Si no cumple → Status = Observado (derivar a un analista).
  4. Condición 4 — BCRA.Situacion = 1 (sin antecedentes negativos). Si cumple todo → nodo Resultado con Status = Aprobado y variable de salida MontoPreaprobado = 500000.

Se le pone TTL = 7 para no reconsultar NOSIS al mismo CUIT durante una semana. Se guarda y se activa. A partir de ahí, cada nueva solicitud de crédito de un cliente consulta este motor y obtiene en segundos el Status, las observaciones y el monto preaprobado, con la traza completa guardada en el historial.

Consejos útiles

  • Empezá por las reglas generales (edad, ingreso) y dejá las condiciones finas (score, antecedentes) para el final del flujo.
  • Usá pocas variables pero significativas: calidad por sobre cantidad.
  • Antes de activar un motor, usá Evaluar con CUIT reales para validar que las ramas devuelven lo esperado; revisá la Traza para ver el paso a paso.
  • Ajustá el TTL según el caso: más alto ahorra consultas a los burós (y costo), más bajo mantiene los datos más frescos.
  • Antes de armar un motor que use un buró, actualizá sus variables con el botón Servicios; para NOSIS, completá el VR y el CUIT requeridos.
  • Para mover un motor entre instalaciones (o respaldarlo), usá Exportar e Importar.
  • Revisá los motores periódicamente: los perfiles de riesgo cambian con el tiempo.

Preguntas frecuentes

¿Qué diferencia hay entre "Aprobado", "Observado" y "Rechazado"? Aprobado: la solicitud cumple todas las reglas y se aprueba automáticamente. Rechazado: incumple alguna regla excluyente y se rechaza. Observado: queda en un estado intermedio para que un analista lo revise manualmente.
¿Por qué una evaluación no volvió a consultar NOSIS? Por el TTL. Si el mismo CUIT se evaluó hace menos días que el TTL del motor, el sistema reutiliza el resultado guardado (se ve "CACHE HIT" en la traza) en lugar de volver a llamar a los burós. Si querés forzar el recálculo, esperá a que venza el TTL o bajalo.
Cambié las reglas de un motor que ya está en uso. ¿Se aplican de inmediato? Sí. Una vez que guardás el motor y está Activo, las solicitudes nuevas usan la última versión. Las evaluaciones ya guardadas en el historial no se modifican.
¿Puedo desactivar un motor sin borrarlo? Sí. Con el botón de encendido lo pasás a Inactivo: deja de usarse en producción pero se conserva, junto con su historial, para reactivarlo más adelante.
¿Qué pasa si un servicio externo (NOSIS, BCRA) falla durante la evaluación? La traza registra el error del servicio y el motor continúa según cómo estén armadas las condiciones. Si la falla impide llegar a un nodo de Resultado, el Status devuelto es Error.
Cargué el Id del motor en el parámetro y el alta no valida nada. ¿Por qué? Falta activar la alerta de ese punto. Las alertas se crean inactivas la primera vez que se usan: activala en Herramientas → Alertas y Validaciones y configurá si avisa, bloquea o pide autorización. Recordá que los parámetros se leen con caché: reiniciá el Back Office después de cambiarlos.
¿Qué diferencia hay entre el Algoritmo y el Motor de Decisión? El Algoritmo es la herramienta anterior, que se abre desde Herramientas → Motor de Decisión del Back Office. El Motor de Decisión es el que se arma en la web, con el editor de flujos. Las altas, los cheques y las solicitudes de crédito usan el motor nuevo.

Permisos

Permiso Qué habilita
Herramientas.Algoritmos La opción Herramientas → Motor de Decisión del Back Office, que abre el listado de Algoritmos (la herramienta anterior). El acceso a la web del motor lo define el administrador.

El permiso lo asigna el administrador del sistema por grupo de usuarios. Sin él, la opción no aparece en el menú Herramientas.

Información técnica

Basada en el análisis del formulario real de la v14.

Formularios principales

Form Rol
Editor web MVC El listado, el editor visual y el historial son una webapp ASP.NET MVC independiente: proyecto VPNET_WEBMotor\VPNET_WEB_Motor. Vistas Views\Home\Index.cshtml (listado), Editor.cshtml (editor de flujo) y Logs.cshtml (historial).
FormAlgortimos No es este motor: es el listado del Algoritmo anterior (Algoritmos_Validaciones_Manager), que abre Herramientas → Motor de Decisión (btnHerr_MotorDeDecision_ItemClick en frmNewMain.vb, permiso Herramientas.Algoritmos). Note la grafía sin la primera "i".
Common\MotorDecisionUI.vb (VisualPlenarioNET) Validación del CUIT en las altas: EvaluarMotorDecision (llama a Motor_Manager.EvaluarMotor y traduce el resultado con MotorResultadoAdapter.ToXmlRespuesta) y ValidarCuitConMotor (parámetro + alerta). La usan frmCheques_AddMod, frmLiquidacionesCheques_AddMod_CargaMasiva, frmClientes_AddMod, frmProveedores_AddMod, frmInversores_AddMod y frmPrestamos_Solicitudes_AddMod; el importador de cheques por IA usa el motor desde ResolutorCheques.

Formularios satélite por función

Form Rol
HomeController.Index Listado de motores.
HomeController.Editor(int IdMotor) Editor visual del flujo (nuevo/editar).
HomeController.SaveMotor Persiste el flujo (POST).
HomeController.EvaluarMotor(EvaluacionRequestDto) Corre el motor con datos de prueba (POST).
HomeController.GetVariablesList / GetMotoresList Catálogo de variables y de motores (GET).
HomeController.ActualizarServicios(UpdateServicesRequest) Descarga/actualiza variables de burós (POST).

Controlador en VPNET_WEBMotor\VPNET_WEB_Motor\Controllers\HomeController.cs. Lógica de negocio en VPNET_DataModel\Manager\Gestion\Motor\Motor_Manager.cs: SaveMotor, GetVariables, GetMotores, EvaluarMotor (por IdMotor o por JSON), EjecutarFlujoRecursivo, GetLog/SaveLog (caché TTL). Tipos de nodo (JsonNodo.TipoNodo, como string en el switch de EjecutarFlujoRecursivo): Condicion, Motor (sub-motor), MotorResultado, Resultado. Estados: enum EnumMotorEstado { Aprobado = 200, Observado = 201, Rechazado = 401, Error = 500 } en VPNET_DataModel\Manager\Gestion\BASE\Base_Manager.cs. Endpoint externo WCF POST Motor/Eval → Motor_Eval(MotorEvalRequest) en VPNET_WCF\VPNET_WCF\Servicios\Externos\Motor.cs (devuelve OperationResultV2<ResultadoEvaluacion>).

Permisos reales

Permiso Acción
Herramientas.Algoritmos Permiso chequeado (clsSeguridad.IsAllowedObject en frmNewMain.vb) para la opción Herramientas → Motor de Decisión, que abre el listado de Algoritmos (FormAlgortimos).

Tablas de base de datos principales

Tabla Uso
Motor Cabecera del motor + el flujo completo serializado en la columna MotorJson.
MotorVariables Catálogo de variables por servicio/buró (Nombre, Descripcion, TipoDato, Servicio, VR, CDA, ...).
MotorLog Historial de evaluaciones; actúa como caché por IdMotor + CUIT según TTL (días). Columnas CUIT, Fecha, TTL.

Mappings EF en VPNET_DataModel\Mappings\Motor\ (MotorMap.cs, MotorVariablesMap.cs, MotorLogMap.cs).

Relación con otros módulos / manuales

Manual relacionado Vínculo operativo
Nueva Solicitud de Crédito Amplía el circuito, la configuración o los datos que utiliza esta funcionalidad.
Alertas y Validaciones Las alertas que deciden qué pasa cuando el motor rechaza un CUIT en las altas.
ABM de Clientes Valida el CUIT del cliente con el motor (Clientes.Alta.Motor.Id).
Cargar, Editar y Administrar Proveedores Valida el CUIT del proveedor con el motor (Proveedores.Alta.Motor.Id).
Liquidaciones en Factoring Valida el firmante de cada cheque con el motor (Factoring.Cheques.Firmante.Motor.Id).

Notas para soporte

  • Findo Score (FindoApi_Manager): configuración en el parámetro JSON Findo.Api.Setup (credenciales, modo QA/LIVE, TTL en días y registro de traza). Las consultas se guardan en Findo_Log y una consulta completa se reutiliza mientras no vence el TTL. Token por OAuth, válido 24 h; si vence en medio de una consulta se renueva una vez. Los datos del cliente se completan en Cliente_Data.CompletarDesdeFindo, al final de la evaluación.

  • MotorLog es la caché: con TTL = 0 siempre recalcula; con TTL > 0, si el mismo CUIT se evaluó dentro del plazo se reutiliza el resultado guardado (CACHE HIT) sin reconsultar burós.

  • Servicios externos resueltos en la evaluación: NOSIS, PLENARIO, PLENARIO_LINEAS, VERAZAPI, BCRA, RIESGONET, IDIC, CREDIXSA, SIISA.
  • El nombre del form FormAlgortimos está mal escrito en el código (sin la primera "i"); usar esa grafía exacta al buscarlo. Ese form es el Algoritmo anterior, no el motor de esta web.
  • Altas del Back Office: ValidarCuitConMotor lee el parámetro con clsParametros.GetParameterValue (default 0) y la alerta con Alertas_Manager.IsAlertaActiva (se crea inactiva). Con el motor en 401 (rechazado) dispara Alertas_Manager.Alerta y registra en el log "El CUIT … fue rechazado por el motor de decisión id: N" con los motivos. Con 500 o una excepción, avisa y deja seguir, salvo en el alta de cheques (bloquearSiFalla = True).
¿Te resultó útil este manual?