Inteligencia de riesgo telco en tiempo real
Evalúa MSISDNs con señales Open Gateway, ajusta reglas y comunica decisiones en un entorno unificado.
Score de Riesgo
?Señales Detectadas
- SIM Swap
- Device Status
- Device Swap
- Number Verification
- KYC Match
Decisión interna
Esperando evaluación
Política aplicada: —
Motivos
- —
Alertas
- —
Insights
- —
Trazabilidad
—
Respuesta JSON
—
Respuestas crudas APIs
—
Console multi-tenant (demo)
Monitoreá señales Telco, fraude y SLA en un solo panel. Datos simulados para presentación.
Mapa de calor de riesgo geográfico
Visualización geográfica de eventos recientes (Device Status / Location).
Resumen: El mapa de calor muestra la distribución geográfica de eventos recientes relacionados con el riesgo.
| Señal | Latencia | Objetivo |
|---|---|---|
| SIM Swap | — | < 400 ms |
| Device Status | — | < 450 ms |
| Device Swap | — | < 500 ms |
| Number Verification | — | < 420 ms |
Historial de evaluaciones
| Fecha | MSISDN | Score | Riesgo | Modo |
|---|---|---|---|---|
| No hay evaluaciones registradas. | ||||
Gestión de API Keys & toggles
| Nombre | Scopes | Último uso | Estado |
|---|---|---|---|
| Cargando... | |||
Señales habilitadas por tenant
¿Qué es RISKNET?
RISKNET es un motor de scoring que consulta señales telco (Open Gateway) como SIM Swap, Device Status, Number Verification y Device Swap, las normaliza y calcula un score 0–100 con pesos configurables. Expone un endpoint REST para integrarse a onboarding, login, transacciones y antifraude, y suma un portal multi-tenant para que las áreas de riesgo monitoricen KPIs, SLA y señalización en tiempo real.
Arquitectura del Sistema y Flujo de Transacción
Desde el usuario final, una transacción se valida pasando por el Banco/App, el **RISKNET Engine** y las **APIs Open Gateway** de Telefónica, para devolver un score de riesgo en tiempo real y asegurar la operación.
Usuario Final
Intento de Transacción
Banco / App
Consulta a RISKNET
RISKNET Engine
- Paralelismo
- Scoring
APIs Open Gateway
- SIM Swap
- Device Status
Ejemplo de integración (REST)
POST /api/risk-eval.php
Content-Type: application/json
{
"msisdn": "+541122358032",
"country": "AR",
"signalsEnabled": ["simSwap","deviceStatus","deviceSwap","lineVerified"],
"signalWeights": { "simSwap": 40, "deviceStatus": 20, "deviceSwap": 20, "lineVerified": 20 }
}
Características técnicas clave
- ✅ Autenticación OIDC (Client ID + Secret) con cacheo automático del token.
- ⚡ Paralelismo de señales con control de latencia y fallback inteligente.
- 🧠 Scoring modular configurable (ponderación y activación de señales).
- 🔄 Cobertura de señales core: SIM Swap, Device Status, Device Swap y Number Verification.
- 📊 Logging estructurado y trazabilidad en JSON.
Cómo se calcula el Score
El motor convierte cada señal en una probabilidad de riesgo pi (0..1),
normaliza los pesos wi de las señales activas y agrega por
media geométrica ponderada. El resultado se expresa en 0..100.
αᵢ = wᵢ / Σⱼ wⱼ (solo señales activas)
FraudProb = 1 - Πᵢ (1 - pᵢ)^(αᵢ)
riskScore = round(100 × FraudProb, 2)
Clasificación:
- low si riskScore < 33
- medium si 33 ≤ riskScore < 67
- high si riskScore ≥ 67
Mapeo de señales → probabilidad pᵢ
| Señal | Valor crudo (API) | pᵢ (riesgo) | Nota |
|---|---|---|---|
| SIM Swap | true, "success", "recentChange"… |
0.90 | Evento reciente = alto riesgo |
| SIM Swap | otro/false | 0.05 | Sin cambio reciente |
| Device Status | "CONNECTED_DATA" |
0.10 | Buen indicador |
| Device Status | "OFFLINE" |
0.60 | Riesgo elev. |
| Device Status | "UNKNOWN" |
0.40 | Riesgo medio |
| Device Status | otro | 0.20 | Neutral suave |
| Device Swap | "swapped": true / fecha reciente |
0.85 | Dispositivo cambió recientemente |
| Device Swap | "swapped": false |
0.15 | Sin cambios relevantes |
| Device Swap | Valor no determinístico | 0.30 | Respuesta desconocida |
| Number Verification | true / "VERIFIED" |
0.10 | Línea verificada |
| Number Verification | false / "UNVERIFIED" |
0.80 | No verificada |
| Number Verification | otro | 0.40 | Indeterminado |
Pesos y normalización
Los pesos provistos por la UI (signalWeights) se normalizan sobre las
señales activas para obtener αᵢ. Si todos los pesos son 0, se reparte en partes iguales.
Ejemplo: weights = {simSwap: 40, deviceStatus: 20, deviceSwap: 20, lineVerified: 20}
Σw = 100 → α = {0.40, 0.20, 0.20, 0.20}
Contrato de respuesta (fragmento JSON)
{
"riskScore": 74.54,
"riskLevel": "high",
"signals": { "...valores crudos por señal..." },
"signalProbabilities": { "simSwap": 0.90, "deviceStatus": 0.20, "deviceSwap": 0.85, "kycMatch": 0.45, ... },
"signalWeights": { "simSwap": 30, "deviceSwap": 20, "kycMatch": 20, ... },
"weightNormalized": { "simSwap": 0.40, "deviceSwap": 0.20, ... },
"fraudProbability": 0.7454
}
Esta sección documenta exactamente lo que implementa el backend
(compute_weighted_score()), por lo que el Gauge debe leer
riskScore y el texto de nivel riskLevel del API sin recalcular.
¿Querés probar la integración?
Accedé a la documentación técnica o pedí acceso al sandbox de pruebas.