Logística · 6 meses

Logística (bajo NDA)

Sistema de ruteo dinámico y app para conductores que redujo kilómetros recorridos y mejoró puntualidad sin agregar flota.

-17%
Kilómetros recorridos por ruta
93%
On-time rate
+15 pts
-2.5h
Horas de despacho por día
+12%
Paradas por conductor

Problema

El operador atendía más de 4.000 paradas diarias en cinco ciudades con rutas planeadas en hojas de cálculo y WhatsApp. Los despachadores pasaban 3 horas cada mañana armando rutas; los conductores improvisaban con Waze al llegar a zona. El on-time rate oscilaba entre 76% y 82%.

Solución

Diseñamos un motor de ruteo con restricciones reales (ventanas horarias, capacidad de vehículo, zonas restringidas) sobre un solver mixto (OR-Tools + heurísticas propias) y lo conectamos a una app móvil con tracking en tiempo real. El despacho dejó de armar rutas a mano; el sistema prioriza SLA y costo según tipo de carga.

Stack

  • TypeScript
  • Python
  • Postgres + PostGIS
  • AWS
  • Flutter

"Lo mejor no es el ahorro directo, es que ya no dependemos del mejor despachador para tener un buen día."

COO · Operador logístico

Contexto

La operación tenía ~120 conductores y crecía sumando clientes enterprise que exigían SLA explícito. El despacho manual era el cuello de botella y el costo estaba subiendo: cada conductor adicional sumaba complejidad cuadrática a la planificación.

Decisiones técnicas

Implementamos el solver en Python con OR-Tools, envuelto en un servicio Node (TypeScript) que orquesta planificación + re-planificación cuando hay desviaciones. PostGIS para operaciones geoespaciales. App del conductor en Flutter, offline-first, con cola de eventos que se sincroniza vía MQTT cuando recupera red.

Dimensionamos el solver para resolver rutas de hasta 500 paradas en menos de 3 minutos en CPU normal; para zonas más densas usamos clustering previo y solving paralelo.

Lecciones aprendidas

El solver puro no convence hasta que el despachador lo valida y lo puede override. La primera iteración, 100% automática, generó resistencia. La segunda iteración deja que el despachador mueva paradas entre rutas y el sistema re-optimiza; adopción se disparó.

¿Quieres un resultado parecido?

Cuéntanos tu caso y diseñamos una propuesta en base a tus métricas actuales.