El punto de partida
El registro de jornada es la puerta de entrada, no el producto. Es lo que obliga a una empresa a instalar algo, y por eso el mercado está lleno de herramientas que registran horas y se detienen ahí. El problema que nos interesaba estaba justo después.
Una organización con varias sucursales sabe lo que factura cada una y no sabe cómo trabaja. Los dolores que encontramos, repetidos en todos los clientes con los que hablamos:
- Registros difíciles de defender: fichajes sin validar y correcciones manuales frecuentes, que ante una inspección obligan a reconstruir a mano.
- Documentación laboral —nóminas, contratos— enviada por correo, sin acuse de recibo ni forma de demostrar que llegó.
- Tareas operativas que se dan por hechas porque alguien lo dice, sin evidencia de que se ejecutaron.
- Sucursales imposibles de comparar: cada una «parece» funcionar bien porque no hay métricas homogéneas ni coste real por sede.
- Decisiones sobre personas —promociones, refuerzos, ajustes de turno— tomadas por impresión, sin un patrón medido detrás.
- Anomalías que se detectan cuando ya están en el resultado del mes.
El objetivo
Que la operación diaria se registre una sola vez y sirva para las dos cosas: cumplir y decidir. Presencia, ejecución y documentación entran por la app del empleado como parte de su día; salen por el panel convertidas en índices comparables entre sucursales.
El módulo de inteligencia operativa es el que cierra el círculo, y el que hace que el producto no sea un control horario. Levanta un índice de fiabilidad y un índice de eficiencia operativa —coste real frente al histórico—, construye el patrón de comportamiento de cada empleado, que es lo que supera al informe puntual, y sobre él da una evaluación operativa con diagnóstico y señal de candidato a promoción. La detección de anomalías avisa mientras se puede corregir.
La restricción de diseño era que nada de eso podía pedir esfuerzo extra a quien trabaja. El fichaje tenía que seguir siendo un gesto de dos segundos.
Qué hace la plataforma
El alcance funcional se reparte en módulos que comparten la misma estructura de entidad y sucursales:
- Control horario: tres capas de validación —geocerca, horario y dispositivo—, fichaje desde la app, en remoto con su zona horaria o por QR con token y validación de supervisor; pausas con descuento automático, jornada manual y flujo de revisión y aprobación.
- Tareas: creación con campos propios, asignación individual o múltiple, evidencia en foto y vídeo, prioridades y fechas límite, validación con aceptación o rechazo motivado, y una escala de puntuación que repercute en el índice de eficiencia del trabajador.
- Gestión documental: nóminas y contratos con su ciclo mensual y su retención legal, documentos privados con visibilidad por rol, acuse de recibo y aviso push que lleva directo al documento.
- Inteligencia operativa: panel de operación con los índices de fiabilidad y eficiencia, patrón de comportamiento, análisis de coste con tarifa por sucursal y detección de anomalías.
- Entidad y sucursales: datos fiscales y zona horaria en la entidad, con propagación a las sedes; geocerca, pausas, tolerancia y tarifa por sucursal; y una vista global que compara todas.
- Empleados y seguridad: cuatro roles —worker, supervisor, manager y owner— con matriz de permisos, doble factor, biometría, dispositivos de confianza y acceso multi-entidad con selector.
- Cumplimiento: registro de jornada según el RDL 8/2019 con sello de tiempo, inmutabilidad y trazabilidad; tratamiento de datos conforme a RGPD; e informes preparados para presentar en una inspección.
Los desafíos
El primero fue la confianza del dato. Un marcaje sirve de prueba solo si se puede reconstruir: dónde se hizo, con qué dispositivo, a qué hora real y qué se tocó después. De ahí las tres capas de validación y un historial inmutable en el que cada cambio deja rastro, de modo que una jornada concreta se demuestra en segundos.
El segundo fue el análisis. Comparar no es poner números uno al lado del otro: hay que normalizar realidades distintas —turnos, calendarios, tamaños de equipo, tarifas por sede— antes de que la comparación signifique algo. Y las señales interesantes no están en un día suelto sino en el cambio sostenido, así que el motor trabaja sobre patrón y no sobre incidencias aisladas.
El tercero fue la estructura organizativa. Multi-entidad y multi-sucursal a la vez obliga a decidir qué se configura arriba y se propaga, qué se ajusta por sede y qué pasa con los registros históricos cuando una sucursal se desactiva. Esa decisión condiciona el modelo de datos entero.
El cuarto fue de arquitectura. Un producto que es a la vez app de campo, gestor documental, panel de dirección y plataforma de suscripción no cabe en un solo servicio sin volverse frágil.
Cómo está construido
La app móvil es Flutter con Riverpod para estado e inyección, GoRouter para navegación declarativa y Freezed para modelos inmutables. Apoya en Firebase para autenticación, Firestore, almacenamiento, notificaciones y Crashlytics, y en Geolocator y Google Maps para la validación por ubicación.
Detrás hay un monorepo de microservicios en Node y TypeScript, con los dominios separados en servicios propios —fichaje, sincronización, analítica, informes, tareas, documentos y ventas— sobre un paquete compartido común. Así la capa de inteligencia puede evolucionar y desplegarse sin tocar la que registra, que es la que no se puede permitir un fallo.
El panel de gestión y la capa SaaS son Next.js con React 19, con Firebase Admin en servidor y Stripe para la suscripción.