Skip to content

ImagLend — Pipeline de Originacion Configurable

Proposito

El pipeline de originacion define los pasos que un solicitante debe completar para obtener un credito. Es configurable por producto — cada tenant define que pasos incluir, en que orden, cuales son obligatorios y que condiciones aplican. Esto permite desde un microcredito express (4 pasos) hasta un credito hipotecario complejo (10+ pasos).

Flujo Tipico (Optimizado para Costos)

Nota: La validacion de identidad (paso costoso) se ejecuta DESPUES de la aprobacion para ahorrar costos. Si el credito se rechaza por score o AML, no se gasta en biometria.

Configuracion del Pipeline

El pipeline se define como parte de la product_version en un campo origination_pipeline:

json
{
  "origination_pipeline": {
    "steps": [
      {
        "id": "landing",
        "type": "landing",
        "order": 1,
        "required": true,
        "phase": "public",
        "config": {}
      },
      {
        "id": "register",
        "type": "user_registration",
        "order": 2,
        "required": true,
        "phase": "public",
        "config": {
          "create_keycloak_user": true,
          "require_phone": true,
          "require_email": true
        }
      },
      {
        "id": "consent",
        "type": "legal_consent",
        "order": 3,
        "required": true,
        "phase": "public",
        "config": {
          "documents": [
            { "code": "privacy_policy", "version": "2.0", "required": true },
            { "code": "terms_conditions", "version": "3.1", "required": true },
            { "code": "data_treatment", "version": "1.0", "required": true }
          ]
        }
      },
      {
        "id": "contact_validation",
        "type": "contact_verification",
        "order": 4,
        "required": true,
        "phase": "public",
        "config": {
          "channels": ["sms", "email"],
          "sms_provider": "twilio",
          "check_uniqueness": true,
          "allow_whatsapp": true
        }
      },
      {
        "id": "application_form",
        "type": "form",
        "order": 5,
        "required": true,
        "phase": "public",
        "config": {
          "sections": ["personal", "financial", "employment", "references"],
          "fields_by_section": {
            "personal": ["full_name", "birth_date", "gender", "marital_status", "address"],
            "financial": ["monthly_income", "monthly_expenses", "other_income", "other_debts"],
            "employment": ["activity_type", "company_name", "position", "time_in_job"],
            "references": ["reference_1_name", "reference_1_phone"]
          }
        }
      },
      {
        "id": "bureau_check",
        "type": "compliance_check",
        "order": 6,
        "required": false,
        "phase": "backend",
        "config": {
          "providers": ["datacredito_co", "transunion_co"],
          "check_types": ["credit_score", "aml_lists", "pep_lists"],
          "auto_reject_if": {
            "score_below": 400,
            "in_aml_list": true,
            "in_pep_list": false
          }
        }
      },
      {
        "id": "analyst_review",
        "type": "manual_review",
        "order": 7,
        "required": true,
        "phase": "backend",
        "config": {
          "auto_approve": {
            "enabled": true,
            "conditions": {
              "score_above": 700,
              "amount_below": 1000000,
              "no_aml_flags": true
            }
          },
          "assignment_strategy": "round_robin",
          "sla_hours": 24
        }
      },
      {
        "id": "identity_validation",
        "type": "identity_validation",
        "order": 8,
        "required": true,
        "phase": "post_approval",
        "config": {
          "flow_id": "uuid-del-flujo-de-validacion",
          "trigger": "after_approval",
          "skip_if_validated_within_days": 30
        }
      },
      {
        "id": "signature",
        "type": "document_signature",
        "order": 9,
        "required": true,
        "phase": "post_approval",
        "config": {
          "documents": ["credit_contract", "pagare", "insurance_policy"],
          "signature_type": "electronic_otp",
          "provider_code": "electronic-generic",
          "multi_signer": false
        }
      },
      {
        "id": "disbursement",
        "type": "disbursement",
        "order": 10,
        "required": true,
        "phase": "post_signature",
        "config": {
          "method": "bank_transfer",
          "delay_hours": 0,
          "require_bank_details": true
        }
      }
    ]
  }
}

Tipos de Paso

TipoDescripcionEjecutado porFase
landingLanding page con simuladorFrontend publicopublic
user_registrationCrear usuario en Keycloak del tenantBackend + Keycloakpublic
legal_consentMostrar y registrar aceptacion de documentos legalesFrontend + Backendpublic
contact_verificationValidar telefono (OTP SMS/WhatsApp) y emailBackend + proveedorpublic
formFormulario configurable con secciones y camposFrontendpublic
compliance_checkConsultas a bureaus, listas AML/PEPBackend + proveedoresbackend
manual_reviewRevision por analista humano (con auto-aprobacion opcional)Panel adminbackend
identity_validationValidacion biometrica via ImagFlowImagFlowpost_approval
document_signatureFirma de documentos via ImagSignImagSignpost_approval
disbursementTransferencia de fondosBackendpost_signature

Fases del Pipeline

FaseQuien ejecutaCuando
publicUsuario final (wizard publico)Durante la solicitud online
backendSistema automatico o analistaDespues de que el usuario envia la solicitud
post_approvalUsuario final (notificado)Despues de que el credito es aprobado
post_signatureSistema automaticoDespues de que se firma el contrato

Registro de Usuario (Paso 2)

Al registrarse, el solicitante se crea como usuario del tenant:

AccionDetalle
Crear en KeycloakUsuario en el realm del tenant con rol applicant
Crear en Subject 360Perfil en ImagID asociado al documento
Validar unicidadEmail y telefono no deben estar en uso por otro usuario del tenant
CredencialesSe genera password temporal o se usa passwordless (magic link)
SesionEl usuario queda logueado para completar el wizard
Re-loginPuede volver despues a ver estado de su credito

Despues del registro, el wizard ya no usa access_token sino la sesion del usuario.

Modelo de Datos

json
{
  "legal_consents": [
    {
      "id": "consent-uuid",
      "application_id": "app-uuid",
      "user_id": "user-uuid",
      "document_code": "privacy_policy",
      "document_version": "2.0",
      "document_hash": "sha256:abc123...",
      "accepted_at": "2026-05-18T10:30:00Z",
      "ip_address": "190.25.100.50",
      "device_fingerprint": "fp-xyz789",
      "user_agent": "Mozilla/5.0..."
    }
  ]
}

Reglas

  • Cada documento legal tiene versiones inmutables
  • Si el documento cambia, se crea nueva version
  • Las aceptaciones anteriores siguen validas para su version
  • Se almacena evidencia completa (IP, device, timestamp, hash del documento)
  • El usuario debe aceptar TODOS los documentos marcados como required
  • Los documentos se muestran como PDF descargable + checkbox de aceptacion

Validacion de Contacto (Paso 4)

CanalMetodoValidacion
SMSOTP 6 digitos, TTL 5 min, max 3 intentosNumero valido + codigo correcto
WhatsAppOTP via WhatsApp Business APINumero valido + codigo correcto
EmailLink de verificacion o OTPEmail valido + click/codigo

Unicidad: Antes de enviar OTP, se verifica que el telefono/email no este registrado por otro usuario del mismo tenant. Si ya existe, se ofrece login en vez de registro.

Auto-Aprobacion (Paso 7)

Configurable por producto. Si se cumplen TODAS las condiciones, se salta el analisis manual:

json
{
  "auto_approve": {
    "enabled": true,
    "conditions": {
      "score_above": 700,
      "amount_below": 1000000,
      "no_aml_flags": true,
      "no_active_defaults": true,
      "existing_customer": false
    }
  }
}

Si alguna condicion no se cumple, la solicitud va a revision manual (analista).

Validacion de Identidad Post-Aprobacion (Paso 8)

La validacion de identidad es costosa (proveedores de biometria cobran por transaccion). Se ejecuta DESPUES de aprobar para optimizar costos:

Optimizacion: Si el usuario ya fue validado en los ultimos N dias (configurable: skip_if_validated_within_days), se salta este paso.

Ejemplos de Configuracion por Tipo de Producto

Microcredito Express (minimo de pasos)

json
{
  "steps": [
    { "id": "landing", "type": "landing", "order": 1 },
    { "id": "register", "type": "user_registration", "order": 2 },
    { "id": "consent", "type": "legal_consent", "order": 3 },
    { "id": "contact_validation", "type": "contact_verification", "order": 4 },
    { "id": "application_form", "type": "form", "order": 5 },
    { "id": "analyst_review", "type": "manual_review", "order": 6, "config": { "auto_approve": { "enabled": true, "conditions": { "amount_below": 500000 } } } },
    { "id": "signature", "type": "document_signature", "order": 7 },
    { "id": "disbursement", "type": "disbursement", "order": 8 }
  ]
}

Sin bureau, sin AML, sin validacion de identidad. Auto-aprobacion si monto < 500k.

Credito de Consumo (flujo completo)

json
{
  "steps": [
    { "id": "landing", "type": "landing", "order": 1 },
    { "id": "register", "type": "user_registration", "order": 2 },
    { "id": "consent", "type": "legal_consent", "order": 3 },
    { "id": "contact_validation", "type": "contact_verification", "order": 4 },
    { "id": "application_form", "type": "form", "order": 5 },
    { "id": "bureau_check", "type": "compliance_check", "order": 6 },
    { "id": "analyst_review", "type": "manual_review", "order": 7 },
    { "id": "identity_validation", "type": "identity_validation", "order": 8 },
    { "id": "signature", "type": "document_signature", "order": 9 },
    { "id": "disbursement", "type": "disbursement", "order": 10 }
  ]
}

Bureau + AML, analisis manual obligatorio, validacion de identidad post-aprobacion.

Credito con Codeudor (multi-firmante)

json
{
  "steps": [
    "...pasos 1-8 igual...",
    {
      "id": "signature",
      "type": "document_signature",
      "order": 9,
      "config": {
        "documents": ["credit_contract", "pagare"],
        "multi_signer": true,
        "signers": [
          { "role": "debtor", "source": "applicant" },
          { "role": "co_debtor", "source": "form_field:co_debtor_email" }
        ],
        "strategy": "sequential"
      }
    },
    { "id": "disbursement", "type": "disbursement", "order": 10 }
  ]
}

Estado de la Solicitud por Paso

Cada solicitud trackea en que paso esta y el resultado de cada uno:

json
{
  "application_id": "uuid",
  "current_step": "analyst_review",
  "pipeline_status": {
    "landing": { "status": "completed", "completed_at": "..." },
    "register": { "status": "completed", "completed_at": "...", "user_id": "uuid" },
    "consent": { "status": "completed", "completed_at": "...", "consents": ["privacy_v2", "terms_v3"] },
    "contact_validation": { "status": "completed", "completed_at": "...", "phone_verified": true, "email_verified": true },
    "application_form": { "status": "completed", "completed_at": "..." },
    "bureau_check": { "status": "completed", "completed_at": "...", "score": 720, "aml_clear": true },
    "analyst_review": { "status": "in_progress", "assigned_to": "analyst-uuid", "assigned_at": "..." },
    "identity_validation": { "status": "pending" },
    "signature": { "status": "pending" },
    "disbursement": { "status": "pending" }
  }
}

Portal del Solicitante

Despues del registro, el usuario puede loguearse en el portal del tenant para:

  • Ver estado de su solicitud (en que paso esta)
  • Completar pasos pendientes (si vuelve despues)
  • Ver creditos activos (despues del desembolso)
  • Ver tabla de amortizacion y proximos pagos
  • Descargar documentos firmados

URL: dash.{tenant}.reimaginetech.io (mismo panel admin pero con rol applicant que solo ve sus propios datos)

Integracion con Servicios

PasoServicio invocadoTipo de integracion
RegistroKeycloak (Identity)HTTP sincrono
ConsentImagLend interno (legal_consents table)Local
ContactoProvider Gateway (SMS/WhatsApp/Email)HTTP sincrono
Bureau/AMLProvider Gateway (bureaus, listas)HTTP sincrono
IdentidadImagFlow (trigger flujo)HTTP + evento async
FirmaImagSign (crear solicitud)HTTP + evento async
DesembolsoImagLend interno + bancoHTTP sincrono

Reglas del Pipeline

  • El orden de pasos es configurable pero hay restricciones logicas:
    • landing siempre es primero
    • register debe ir antes de consent (necesita usuario)
    • disbursement siempre es ultimo
    • signature debe ir despues de analyst_review (solo se firma si se aprueba)
  • Pasos en fase public los completa el usuario
  • Pasos en fase backend los ejecuta el sistema o un analista
  • Pasos en fase post_approval requieren que el credito este aprobado
  • Si un paso falla (ej: identidad rechazada post-aprobacion), el credito se cancela
  • El usuario puede abandonar y retomar (estado persistido por paso)

Reimagine Tech LLC — Documentacion Interna