Spin

Diseñamos y desarrollamos una aplicación de Ruby on Rails con una aplicación móvil en Ionic para mejorar la comunicación entre DPL y sus trabajadores, centrándonos en el proceso de asignación.

Cuando nos contactaron en 2015, DPL E.T.T. asignaban a los trabajadores de manera manual. Sus empleados hacían centenares de llamadas telefónicas a diario con muchos de los trabajadores temporales de sus bases de datos para asignarlos casi en tiempo real a sus destinos, lo cual causaba no solo grandes ineficiencias, retrasos, cuellos de botella y error humano, sino que también estaba causando estrés e insatisfacción entre los empleados de DPL.

Después de analizar todos los procesos, decidimos empezar por mejorar el proceso de matching, para automatizarlo y hacerlo más eficiente.

¿Cómo lo hicimos? Primero, repensamos todo el proceso, y luego decidimos construir una solución tecnológica a medida.

MarsBased fue clave para garantizar el éxito en el diseño y desarrollo de la solución que terminó transformando nuestro negocio. El proyecto era crítico y de suma importancia para la compañía, y esta herramienta nos ayudó a crecer un 285% en solo cuatro años. Su conocimiento comercial y su filosofía de "menos es más" nos dieron resultados sobresalientes.

Tecnologías del proyecto

Ruby on Rails

Rails es un framework de modelo-vista-controlador (MVC), con estructuras predeterminadas para base de datos, servicios web y páginas web.

Ionic

Ionic es un SDK completo de código abierto para el desarrollo de aplicaciones móviles híbridas, construido sobre AngularJS y Apache Cordova.

Angular

Framework de aplicaciones web de código abierto basado en TypeScript, liderado por Google y por una comunidad de individuos y corporaciones.

PostgreSQL

PostgreSQL es un sistema de gestión de bases de datos relacionales gratuito y de código abierto que enfatiza la extensibilidad y el cumplimiento de SQL.

Redefinición del proceso

Antes de entrar en el proyecto, DPL hacía este proceso de manera 100% reactiva: el proceso empezaba con un correo del cliente que hacía una pre-reserva de empleados para el día siguiente. Entre ese email y la fecha de inicio del trabajo (generalmente a las 7 u 8 de la mañana del día siguiente), los empleados de DPL tenían que contactar a un número determinado de gente para garantizar el personal requerido por el cliente, pero el número definitivo no lo sabían hasta primera hora de la mañana (5 o 6 de la mañana), lo cual requería una segunda ronda de llamadas para confirmar y reemplazar a las bajas.

Este proceso significaba también, de manera diaria, cancelarle la cita a gente que se levanta muy temprano, o bien avisar a otros antes de que salga el sol.

Decidimos cambiar el orden del proceso y redefinirlo para trabajar de manera proactiva: diseñamos una aplicación móvil extremadamente sencilla para que los trabajadores marcaran su disponibilidad de cuando pueden/quieren trabajar, para ahorrar a DPL centenares, o miles, de llamadas a la gente que no está disponible. Luego, hacemos los emparejamientos de manera automática para eliminar las llamadas por completo. Finalmente, apenas se recibe la confirmación final del cliente, se envía a todos los trabajadores temporales de manera simultánea, eliminando así retrasos y errores humanos.

Como beneficio indirecto, ahora todo el mundo duerme un poco más, y eso siempre es bueno para todos.

Aplicación móvil

Mobile phone apps

Como describimos en la sección anterior, DPL necesitaba conocer la disponibilidad de cada trabajador para poderlos asignar a los distintos trabajos. También necesitaba poder enviar peticiones de trabajo y la notificación correspondiente una vez confirmado, y es por ello que decidimos desarrollar una aplicación móvil.

Desarrollamos una aplicación híbrida con Ionic para poder compartir el código entre la versión Android y la de iOS, debido a que el proyecto era inicialmente un prototipo y porque el presupuesto estaba limitado. Hacer una aplicación híbrida redujo el coste para el cliente e hizo que la app fuera más fácil de mantener. Además, puesto que las apps de Ionic se desarrollan con AngularJS, podíamos concebirla como una aplicación web, usando una tecnología que nos es ampliamente conocida.

El desarrollo de la aplicación móvil no fue del todo sencillo, especialmente porque tuvimos que hacerla compatible con muchos tipos de dispositivo distintos y muchas versiones de sistema operativo. Dado que los usuarios de la aplicación disponen de teléfonos de gama baja, tuvimos que tener en cuenta estas versiones y dispositivos como punto focal del diseño y las funcionalidades de la app.

Aunque la aplicación es básicamente web, se requieren bastantes funcionalidades nativas del teléfono como la cámara o las notificaciones push. Hacer que esto funcionara con tantos dispositivos y versiones de sistema operativo distintos fue todo un reto, pero nos ayudó a entender las diferentes interacciones entre los frameworks de desarrollo móvil híbrido y el código nativo.

Motor de trabajos y panel de administración

DPL ETT dashboard

La otra mitad de la ecuación es el procesado de las peticiones de trabajo a través de un algoritmo de emparejamiento automático de los trabajadores temporales. Para solventar esta parte, desarrollamos una aplicación web basada en Ruby on Rails y PostgreSQL.

Las peticiones de trabajo llegan por medio de unos emails automatizados que envían los clientes, siempre con un mismo formato. Estos emails contienen información sobre el tipo de trabajo del día siguiente, incluyendo - entre otros - el número de trabajadores requerido.

Para agilizar el proceso y hacerlo más eficiente, desarrollamos un parser que crea las peticiones de trabajo en el sistema a partir de los datos contenidos en los emails de los clientes. Ya habíamos trabajado en otros proyectos haciendo este tipo de tareas, como por ejemplo en Zapptales.

Una vez creada la petición de trabajo, un algoritmo selecciona a los mejores trabajadores basado en una serie de criterios que incluyen la proximidad, su disponibilidad o sus especialidades o cualificaciones, y envía una notificación push a los candidatos para que puedan aceptarlo o rechazarlo. El algoritmo continúa seleccionando de manera iterativa a trabajadores hasta que se satisface la demanda creada por la petición del cliente.

¿Cómo hemos ayudado a nuestro cliente?

Al principio, la aplicación fue diseñada para trabajar para un solo cliente. Sin embargo, tuvimos tan buenos resultados desde el primer día, que DPL decidió extenderlo para poder dar servicio a todos los clientes, con más tipos de petición de trabajo, para así trabajar con más y mejores clientes, pudiendo dar servicio a proyectos todavía mayores.

Gracias a nuestra aplicación, DPL redujo el proceso de llamadas telefónicas de varias horas al día a pocos minutos al mes. El tiempo requerido para dar servicio a una petición de un cliente es 100% automático. Los empleados de DPL tienen que encargarse de hacer llamadas solamente si ha surgido algún caso no previsto previamente. Algo que sucede, como mucho, una vez al mes.

En tercer lugar, han obtenido visibilidad y control sobre las peticiones de trabajo y la disponibilidad de sus trabajadores temporales. Ahora tienen un dashboard donde pueden visualizar datos en tiempo real y de manera más visual, dejando atrás excels excesivamente complicados y raramente puestos al día.

Otro beneficio para DPL es que logramos eliminar el error humano, y ahora tener que intervenir en el proceso es algo que se da en muy contadas ocasiones.

Finalmente, el proceso ha significado un alivio entre el personal de DPL. Mientras que antes del proyecto tenían que empezar su jornada laboral a horas intempestivas para hacer centenares de llamadas por teléfono y asegurarse que todo cuadraba, ahora todo el mundo trabaja más tranquilo, habiendo eliminado el estrés psicoemocional, contribuyendo a una mayor satisfacción del empleado.

Este es uno de los proyectos en los que tuvimos mayor conexión con el cliente. Tuvimos confianza ciega al 100% en todas nuestras decisiones tecnológicas, completa independencia para establecer los plazos, y el cliente siempre pareció estar de nuestro lado en cada una de las reuniones que tuvimos. ¡Disfrutamos muchísimo este proyecto!

Movimientos clave

Gestión de expectativas

Negociamos las responsabilidades y riesgos del proyecto con frecuencia con el cliente. Así evitamos sorpresas durante el desarrollo.

Despejar incógnitas rápido

Como nunca habíamos desarrollado para móvil, lo hicimos con Ionic, que es parecido a Angular, para reducir la incertidumbre en el desarrollo.

Enfoque en la accesibilidad

El éxito del proyecto residió en comprender a los usuarios finales y sus móviles Android de gama baja con versiones antiguas de ese sistema operativo.

Métricas de negocio claras

Optimización de procesos, reducción de tiempos y minimización del error humano. Cada versión de la aplicación mejoró estas métricas de negocio.