Cómo detectar robo de combustible y fraudes en cargas con IA

    Andrew M., VP of Data and Solutions
    AutorAndrew M., VP of Data and Solutions
    October 30, 2026
    Boquilla de surtidor de combustible hecha de puntos de trama, con un marco alrededor de la empuñadura y la etiqueta: carga 67 L, 87%

    Detectar robos de combustible y fraudes en las cargas a partir de los datos de telemática siempre ha sido un problema interesante. Los sistemas de monitoreo modernos, Navixy entre ellos, lo resuelven bien. Pero los modelos de IA van ocupando poco a poco el lugar de los algoritmos clásicos de detección: pueden clasificar eventos y encontrar anomalías directamente en los datos sin procesar.

    Probamos este enfoque en la práctica. Construimos un prototipo que envía fragmentos de datos de telemática de IoT Query, la plataforma de analítica de Navixy, al modelo Jev de Typesafe AI y recibe la clasificación del evento junto con puntuaciones que ayudan a interpretar el resultado. Aclaremos algo: Jev no se plantea como reemplazo de las soluciones existentes para detectar eventos de combustible. Es una herramienta adicional y una nueva forma de construir soluciones.

    El principal valor de este enfoque es la flexibilidad y la personalización. La combinación de IoT Query y Jev permite a desarrolladores e integradores de sistemas crear sus propias aplicaciones de toma de decisiones, adaptadas con precisión a los procesos de negocio de cada empresa. No se trata de reemplazar lo que ya funciona, sino de ampliar lo que es posible con los modelos de IA.

    Dónde y para qué sirven los modelos de IA como Jev

    Jev no escribe textos ni genera código. Su función principal es devolver decisiones formalizadas y probabilidades que las aplicaciones y los sistemas de decisión pueden usar de inmediato. El modelo recibe dos bloques de entrada:

    1. El estado del sistema (parámetros, valores, contexto en JSON).
    2. Un conjunto de preguntas tipadas.

    Jev evalúa cada pregunta con base en el estado que recibió y devuelve una de las opciones fijas junto con una probabilidad. El usuario o su agente pueden usar después esos resultados en aplicaciones, por ejemplo, para tomar decisiones.

    Cómo encontrar robos y cargas de combustible con Jev

    En la gestión de flotas, los temas de combustible siempre están entre los más delicados. Hoy los robos son menos frecuentes, pero el fraude con comprobantes sigue vivo: el ticket dice 50 litros y al tanque entraron 40.

    Tradicionalmente, para encontrar estos eventos se usan promedios móviles y aprendizaje automático clásico. Ahora una IA puede estar en el centro de la detección de eventos. Sobre los datos sin procesar responde «es una carga», «es un robo», «es una calibración o un trasvase de líquido» o «no estoy seguro», y de inmediato añade la probabilidad y el volumen calculado.

    Para la analítica personalizada en el ecosistema de Navixy, IoT Query es una opción conveniente. Da acceso a todo el espectro de datos del cliente, desde la telemática hasta los datos de negocio que se usan en integraciones y para construir sus propias aplicaciones de analítica. En nuestro prototipo usamos los datos sin procesar como base para analizar eventos, y Jev determina a qué tipo pertenece cada uno.

    El prototipo funciona de forma sencilla:

    1. Un algoritmo vigila el nivel de combustible y marca los eventos candidatos (cambios bruscos de volumen).
    2. Recorta un fragmento corto de la serie temporal con parámetros de telemática.
    3. Envía el fragmento a Jev junto con las preguntas tipadas.
    4. El modelo devuelve la clase del evento, la probabilidad y estimaciones adicionales.

    El resultado es un registro como este: 13:32 — carga, 67 litros, probabilidad 87%

    Cómo se ven la solicitud y la respuesta

    Técnicamente, la interacción es sencilla. Enviamos al modelo un objeto state con los parámetros del evento y un objeto questions con lo que exactamente hay que evaluar.

    La solicitud al modelo:

    {
      "model": "typesafe/jev-1.13",
      "state": {
        "vehicle_speed": "...",
        "vehicle_stationary": "...",
        "gps_quality": "...",
        "..."
      },
      "questions": {
        "real_fuel_increase": {
          "type": "noul",
          "instructions": "Is the observed fuel increase a genuine added volume rather than sensor noise, tilt, a spike, or recovery from zero?",
          "criteria": {
            "true": "Sustained, physically plausible increase from a non-empty tank.",
            "false": "Change is within noise, oscillatory, a recovery from zero, or not a real fill."
          }
        },
        "..."
      }
    }
    

    El state enumera los parámetros y valores de la ventana: el tanque (antes, después, diferencia, velocidad de llenado), el movimiento (velocidad, si el vehículo estaba detenido, GPS), la calidad de la señal (ruido, huecos, número de puntos) y los umbrales del perfil (carga mínima, tanque vacío, velocidad máxima en el surtidor).

    Las questions son preguntas de sí o no (noul): aumento real, disminución real, ruido, vehículo detenido, parece una carga, parece un robo, calibración. Hay además una pregunta de «elegir una clase» (event_type): carga, robo, anomalía, calibración o no estoy seguro.

    La respuesta contiene las puntuaciones de cada indicio y el resultado de la clasificación:

    {
      "answers": {
        "real_fuel_increase": { "noul": 0.87 },
        "real_fuel_decrease": { "noul": 0.11 },
        "sensor_noise": { "noul": 0.07 },
        "vehicle_stationary": { "noul": 0.77 },
        "matches_refuel_profile": { "noul": 0.94 },
        "matches_drain_profile": { "noul": 0.02 },
        "likely_calibration": { "noul": 0.08 },
        "gap_confounds_event": { "noul": 0.07 },
        "event_type": {
          "choice": "REFUEL",
          "confidence": 1.0,
          "probabilities": {
            "REFUEL": 1,
            "FUEL_DRAIN": 0,
            "FUEL_SENSOR_ANOMALY": 0,
            "CALIBRATION_SHIFT": 0,
            "UNKNOWN_FUEL_EVENT": 0
          }
        }
      }
    }
    

    En este ejemplo, el modelo eligió la clase REFUEL, calificó la coincidencia con el perfil de carga en 0.94 y la realidad del aumento del nivel de combustible en 0.87.

    Análisis de eventos de combustible con Jev en el prototipo: una carga de +63.0 L clasificada con 100% de confianza sobre la gráfica del nivel de combustible, con las probabilidades por clase, los motivos y las señales de la decisión

    ¿Qué resultados obtuvimos?

    Probamos el modelo en ventanas semanales de datos, acercando las condiciones a las tareas de un gerente de flota, y comparamos los resultados con los eventos reales.

    Indicador Resultado
    Cobertura de datos 93.8%
    Precisión 98.4%
    Confiabilidad de las cargas y del volumen calculado 99%

    En el prototipo se usaron 25 parámetros de la capa de datos sin procesar de IoT Query, incluidos umbrales que se pueden ajustar para cada flotilla y sensor, además de métricas personalizadas.

    Esta flexibilidad permite reflejar los procesos reales de trabajo: unir cambios consecutivos en un solo evento de carga, distinguir las fallas de telemetría de un posible robo y manejar correctamente los casos límite.

    Lo que sigue

    Las cargas y los robos de combustible son solo un escenario. En el trabajo diario de una flota hay muchas tareas más de este tipo:

    • entrada y salida de una geocerca: un cambio de ruta acordado o una infracción;
    • una parada prolongada: descarga planeada o espera;
    • pérdida de conexión: falta temporal de cobertura o falla del dispositivo.

    En todos estos casos, la combinación de IoT Query (datos sin procesar) + Jev (clasificación determinista con probabilidades) puede convertirse en la base de una solución de analítica de eventos a la medida o de un sistema autónomo de toma de decisiones. ¿Quiere crear sus propias aplicaciones con datos de telemática? Escríbanos.

    Para saber más sobre cómo construir sistemas con agentes sobre datos de telemática, lea nuestro artículo sobre analítica conversacional.

    Compartir artículo