Empezó como el sistema interno de una pizzería con reparto: los pedidos entraban por la web, WhatsApp y teléfono, y tenían que llegar a cocina, al repartidor y a la caja sin que nadie los copiara a mano. Hoy cubre también compras, stock, escandallos y contabilidad, y se vende a otros locales con el nombre de Vialika.
02Qué construí
01Tienda web y pedidos por WhatsApp Flows con el mismo motor de precios, cupones y ofertas
02Recepción y pantallas de cocina en tiempo real, con el tiempo de entrega calculado según la cola
03App nativa de repartidor con GPS en segundo plano, navegación Mapbox y cola offline
04Agente de impresión propio que sustituye a QZ Tray: todas las impresoras, con reintentos
05Almacén con proveedores, albaranes, recuentos, mermas y escandallos con coste real por plato
06Cierre diario a Holded, fichaje con geofence y QR rotativo, y asistente IA con SQL acotado por permisos
03Decisiones que importan
Ningún cobro sin pedido
Audité el cobro con Redsys y encontré ocho agujeros: cobros sin pedido, pedidos duplicados si llegaban dos avisos a la vez, importes que no casaban y se ignoraban. Web y WhatsApp pasaron a un único motor de cobro, con clave única por operación y un vigilante que vuelve a preguntar a Redsys cuando un aviso no llega.
La IA propone, una persona acepta
El asistente nunca escribe por su cuenta: cada cambio es una tarjeta con Aceptar o Descartar, y todo se puede deshacer. Usa las mismas acciones de servidor que las pantallas, así que hereda los permisos, y las cifras salen de herramientas, no del modelo.
Manda el permiso, no el rol
Ninguna comprobación mira el rol. Cada acceso pasa por tres cerraduras: el proxy corta la ruta, la página vuelve a comprobar y la acción de servidor, que es la que manda, comprueba otra vez.
Contabilidad al céntimo
El cierre de caja sube solo a Holded como factura en borrador, con el desglose de IVA y los cobros por tesorería. La segunda versión de la integración se validó contra la primera hasta cuadrar al céntimo, con 135 tests.