SUMA

Caso de estudio · Full stack

SUMA

Movilidad de confianza en Fusagasugá: viajes en carro particular y en moto que se piden por WhatsApp, con app para conductores, API, panel de administración y web de seguimiento.

Qué resuelve

Pedidos por WhatsApp

La pasajera elige carro o moto, comparte origen y destino y recibe un precio exacto antes de confirmar.

Carros y motos

Cada tipo tiene sus tarifas por distancia, sus recargos y su comisión; un viaje solo se ofrece a conductores conectados con ese tipo de vehículo.

Registro con escáner de documentos

El conductor escanea su cédula, su licencia y la tarjeta de propiedad desde la app; el equipo valida cada vehículo antes de que pueda trabajar.

Saldo y comisión por viaje

El conductor recarga saldo con Wompi y cada viaje descuenta una comisión configurable. Sin membresías.

Cómo funciona un viaje

Cinco momentos de un mismo viaje en moto: lo que ve la pasajera, lo que ve el conductor y lo que hace el sistema.

  1. 1

    La pasajera pide una moto

    Escribe por WhatsApp, elige moto y comparte dónde la recogen. El conductor ya está conectado con su moto, esperando viajes.

    En el sistema: El bot lleva la conversación paso a paso y solo pregunta «¿Carro o moto?» cuando las motos tienen tarifa configurada.

    Chat con el bot: la pasajera elige moto y comparte la ubicación del Parque Coburgo
    Pasajera · WhatsApp
    App del conductor en línea, buscando viajes
    Conductor · App
  2. 2

    Confirma el precio y un conductor acepta

    Con el destino, recibe un precio exacto y lo confirma. La oferta le llega al conductor más cercano conectado con una moto, con la distancia, el precio y la comisión que se le descontará.

    En el sistema: La API calcula la ruta y cotiza con los tramos de distancia de las motos. Cada oferta se reserva de forma atómica y el conductor tiene 40 segundos para responder; dos conductores nunca toman el mismo viaje.

    Chat con el resumen del servicio, tarifa de $4.000, confirmación y búsqueda de conductor
    Pasajera · WhatsApp
    Nueva solicitud en la app: COP 4.000, cargo del 10 %, ruta del Parque Coburgo a la Universidad de Cundinamarca
    Conductor · App
  3. 3

    Recogida verificada

    La pasajera recibe el nombre del conductor, la placa, un código de 4 dígitos y el enlace para seguir el viaje. Escanea el QR de la moto, en el tanque, y el del casco; el conductor ingresa el código para empezar.

    En el sistema: El código se genera al asignar el viaje y la API lo valida, con intentos limitados, antes de iniciarlo.

    Chat con el conductor asignado, la placa, el código de seguridad y las indicaciones del QR en el tanque y en el casco
    Pasajera · WhatsApp
    Panel del viaje en la app con el campo del código de verificación
    Conductor · App
  4. 4

    Camino al destino

    El conductor sigue la ruta en la app, o en Waze o Google Maps si prefiere. La pasajera ve la moto en vivo desde el enlace del chat.

    En el sistema: La app envía su ubicación cada 15 segundos; la página de seguimiento pide una actualización a la vez y corta a los pocos segundos si la API no responde.

    Mapa en vivo del viaje hacia el destino, con el conductor y la placa
    Pasajera · Web
    Navegación hacia el destino en la app, con la distancia restante y la hora de llegada
    Conductor · App
  5. 5

    Llegada, pago y calificación

    Al llegar, la pasajera paga en efectivo el precio acordado y ambos se califican. Del saldo del conductor se descuenta la comisión del viaje.

    En el sistema: El precio final es el cotizado. La comisión se descuenta una sola vez por viaje, aunque la app reintente, y cada movimiento del saldo queda registrado.

    Chat con el valor final de $4.000 y la invitación a calificar al conductor
    Pasajera · WhatsApp
    Viaje finalizado en la app: $4.000 para cobrar en efectivo
    Conductor · App

Las pantallas de WhatsApp son una recreación con los mensajes reales del bot. Todos los datos son de demostración.

Para los conductores

La misma app con la que reciben viajes les sirve para elegir vehículo, recargar saldo y ver la comisión de cada viaje antes de aceptarlo.

  • Carro o moto, según la jornada

    Un conductor puede registrar carros y motos, o manejar el vehículo de otro dueño que lo invite. Al conectarse elige con cuál trabaja ese día y solo recibe viajes de ese tipo. Cada vehículo lo usa un conductor a la vez.

  • Saldo prepago

    Recarga desde la app con Nequi, PSE o tarjeta a través de Wompi, y cada recarga aprobada deja su comprobante. Si paga por otro medio, el equipo de SUMA le abona el saldo desde el panel.

  • Una comisión por viaje

    Por cada viaje completado se descuenta del saldo una comisión: un valor fijo o un porcentaje de la tarifa, según el tipo de vehículo. La solicitud le muestra cuánto es antes de aceptar, los viajes cancelados no pagan y, si el saldo no alcanza, ese viaje no le llega. El pasajero le paga directamente al conductor.

En el sistema: Se cobra la comisión vigente cuando el conductor aceptó el viaje; un cambio en el panel no altera los viajes que ya están en curso.

Selector de la app para elegir el vehículo de la jornada: una moto MTO12D y un carro JHK413 del mismo dueño
Conductor · Vehículo
Pantalla de Saldo: $27.000 disponibles, botón para recargar, dos recargas sin completar marcadas como vencidas, una recarga por Nequi de $20.000 y un cargo de $400 por viaje
Conductor · Saldo

Panel de operación

El equipo valida conductores y vehículos, define las tarifas, los recargos y la comisión de cada tipo de vehículo, y revisa las recargas de saldo.

Lista de vehículos del panel de SUMA con contadores de total, validados y pendientes, y columnas de placa, tipo (Carro o Moto), dueño, estado y disponibilidad
Vehículos: carros y motos en una sola lista, con los pendientes de validar primero.
Detalle de una moto pendiente con placa, dueña, tipo, marca y modelo, tarjeta de propiedad de ejemplo y botón para validarla
Detalle de una moto pendiente: se valida aquí, después de revisar la tarjeta de propiedad.
Tarifas en vista Moto: hasta 2 km $4.000, hasta 4 km $6.000 y $1.000 por km adicional
Tarifas de moto por tramos de distancia; con al menos un tramo guardado, el bot ofrece moto a los pasajeros.
Pantalla de Saldo con la regla de cobro de motos (10 % por viaje), las recargas de los conductores con su comprobante y los cobros por viaje
Saldo: reglas de recarga y cobro por tipo de vehículo, recargas con su comprobante y cobros por viaje.

Arquitectura

PasajeroWhatsApp Business
App del conductorFlutter
Panel de administraciónNext.js
Web de seguimientoNext.js
APIKotlin · Micronaut
PostgreSQL3 bases · Flyway
Redisubicación, ofertas y códigos
Google Maps · Mapbox · S3 · Firebasemapas y rutas, archivos, push
Wompi · Resendrecargas y correo
  • Bases separadas por dominio: usuarios, viajes y clientes, cada una con sus migraciones.
  • Estados del viaje con bloqueo optimista: si dos acciones llegan a la vez, solo una gana y la otra recibe un conflicto claro.
  • Saldo con bloqueo de fila y cobros idempotentes: cada viaje se cobra una sola vez.
  • Tiempo real en Redis: ofertas, disponibilidad y candados de vehículo con operaciones atómicas.
  • Tiempos máximos en todo: si la base de datos o un servicio externo se pone lento, la API responde con un error en vez de quedarse esperando.
  • Dos auditorías internas, de seguridad y de concurrencia, con cada corrección cubierta por un test.