Portafolio / Sistemas de negocio / floural

La receta vive en el sistema,
no en la cabeza del propietario.

Floural es una pequeña panadería y estudio de tortas que creció más rápido que su flujo de trabajo. La propietaria era el libro de recetas, la instructora, la jueza de tardanzas y la vigilante de vida útil — todo al mismo tiempo. Le construimos un POS que absorbió cada una de esas tareas, y algunas que ni siquiera sabía que necesitaba, para que un nuevo panadero pudiera trabajar un turno solo desde el primer día.

ClienteFloural Bakery
AlcancePOS · Producción · Inventario · Personal
Incorporación2 semanas → 1 turno
CanalesDine-in · GoFood · ShopeeFood · Pre-order
Año2026
Los problemas de la propietaria

Seis cosas que vivían en su cabeza — y no deberían.

Todos fallaban de la misma manera: la panadería funcionaba cuando la propietaria estaba presente, y se paraba cuando no. El encargo era claro — sacar todo de su cabeza y meterlo en un sistema en el que el personal ya confíe.

Problema 01

La receta vivía en tres lugares. Ninguno coincidía.

Fotos de WhatsApp, un cuaderno maltratado y la memoria de la propietaria. Cada nuevo panadero significaba volver a enseñar el mismo chiffon desde cero — y ejecutarlo un poco distinto cada vez.

"Yo era el libro de recetas. Si estaba entregando una torta de boda, la panadería dejaba de hornear."
Problema 02

Los productos se quedaban en la vitrina. Nadie sabía cuándo llegaron.

El personal se encogía de hombros y decía "parece fresco." Al final, los clientes ya no lo creían. Un mal retiro de crema se llevó las reseñas de un sábado entero.

Problema 03

Los componentes se producen por lotes. Tratarlos como "stock" hace perder el lote.

Bizcocho, crema de mango, ganache — elaborados en lotes con su propia caducidad. El POS anterior los contaba como un solo número. Una crema de 6 días se retiraba antes que una de 2 días. El FIFO era algo así como una intuición.

Problema 04

Un nuevo cajero necesitaba dos semanas de acompañamiento.

El POS era una hoja de cálculo con disfraz. Las categorías no tenían color, los productos no tenían códigos cortos, la pantalla no tenía ritmo. Los nuevos empleados aprendían a base de errores — a costa del cliente.

Problema 05

El cálculo de bonificaciones era a ojo. Las tardanzas se discutían cada mes.

La propietaria recordaba quién llegaba tarde. A veces. Las bonificaciones se convertían en negociaciones. La equidad se percibía, no se medía.

"Algunos meses sentía que era la mala. Otros meses sentía que cedía demasiado."
Problema 06

GoFood, ShopeeFood, dine-in, pre-orders — cuatro libros, sin resumen consolidado.

El cierre del día eran cuatro conciliaciones hechas a mano. El P&L por canal era un rumor, no un número.

● Problema 01

La producción empieza con la receta. No con una pregunta a la propietaria.

Cada producto se construye a partir de componentes (bizcocho, crema, ganache) que a su vez se construyen a partir de ingredientes. Las recetas de la propietaria viven en la base de datos — una por cada componente, una por cada producto terminado — y una tarea de producción es simplemente "elige un componente, dale inicio."

El sistema muestra al panadero las cantidades exactas para el tamaño de lote elegido, deduce los ingredientes al completar la tarea con HPP promedio ponderado, y registra un nuevo lote de componente con su fecha de producción y caducidad. La receta es la fuente de verdad. La propietaria ya no es el cuello de botella.

"La primera semana el nuevo panadero hizo un turno completo sin escribirme ni una vez. Lloré un poco, de alegría." — Propietaria, Floural
floural / producción / iniciar lote
Panadero · Tika
Mango Cream componente · vida útil 3 días
LOTE OBJETIVO 2,000 g
Whipping cream 1,200 g en stock
Mango purée 600 g en stock
Caster sugar 160 g en stock
Lemon juice 40 g en stock
Al completar → deduce ingredientes con HPP promedio, registra lote MC-260422-A, vence el 25 abr 2026 21:00, ubicación Chiller 2.
● Problema 02

Verde, amarillo, rojo. La vitrina lo dice, no su olfato.

Cada producto en exposición tiene su propio umbral de vida útil (tortas ≠ pasteles ≠ pan). Cuando una unidad se traslada a la vitrina, el contador arranca. La pantalla muestra una barra de color que avanza de verde a amarillo a rojo — el personal y la propietaria ven el mismo cuadro desde cualquier punto del local.

¿Llega al rojo? La unidad entra al registro de merma con una razón categorizada — nunca solo "descartado" — para que la propietaria pueda ver si se trata de sobreproducción, mal manejo o contaminación a lo largo del mes.

floural / vitrina / en vivo
14:32
Porción de Cheesecake CH · en vitrina hace 2h ● Fresco · 22h restantes
Mango Tart MT · en vitrina desde las 09:14 ▲ Vender pronto · 4h restantes
Choco Chiffon CC · en vitrina desde ayer ■ Retirar y registrar merma
Croissant CR · en vitrina hace 1h ● Fresco · 7h restantes
● Problema 03

Cada lote tiene un ID. El sistema usa primero el más antiguo.

Cuando un panadero arma una torta terminada, el POS no pregunta "¿hay crema?" — toma el lote de crema con la caducidad más próxima que aún tenga suficiente cantidad, deduce de él, y registra qué lote integró la torta en la línea del pedido.

Si el panadero que ensambla anula el FIFO (raro, a veces justificado) queda registrado con un motivo. El desperdicio de un lote completo entra en la tabla de merma al HPP, no al precio de venta — la propietaria ve el costo real.

floural / componentes / lotes mango cream
FIFO · auto
LoteElaboradoVenceRestanteUbic.Estado
MC-260420-B 20 abr 06:30 23 abr 06:30 340 g Chiller 1 USAR PRIMERO
MC-260421-A 21 abr 14:10 24 abr 14:10 1,820 g Chiller 2 EN COLA
MC-260422-A 22 abr 09:05 25 abr 09:05 2,000 g Chiller 2 EN COLA
● Problema 04

Un POS diseñado para que un cajero nuevo opere desde el primer día.

Cada producto tiene un código corto de 2–4 letras, un color de categoría y una posición fija en la cuadrícula que la propietaria define. Los nuevos cajeros aprenden el diseño en una hora porque el diseño no cambia. La búsqueda es por código corto o por nombre — rápida para los habituales, amigable para los que están aprendiendo.

El cobro es una sola pantalla: productos, cliente (opcional, con puntos de fidelidad), método de pago (efectivo, QRIS, transferencia, GoFood, ShopeeFood, anticipo), listo. El cajón de efectivo se abre solo con efectivo; se calculan el importe entregado y el cambio; se imprime el recibo; el ID del pedido es la fecha más un número secuencial.

floural / pos / pedido #260422-014
Cajero · día 1
Torta Cheesecake
Slice
CH 38k
Torta Mango Tart
MT 42k
Torta Choco
Chiffon
CC 35k
Pastelería Croissant
CR 22k
Pastelería Pain au
Chocolat
PC 26k
Bebidas Iced Latte
IL 28k
Guía de incorporación · día 1: "Toca el color. Toca el producto. Toca pagar. Toca efectivo. Listo." Cinco toques por pedido. Los nuevos empleados toman pedidos reales en la primera hora.
● Problema 05

Cada minuto de tardanza es un número. Cada bonificación tiene su registro de auditoría.

El personal registra su entrada con una selfie al inicio del turno (Pagi 07:00, Siang 15:00, Malam 21:00). El sistema lee el sello de tiempo, aplica la tolerancia configurada (5 min) y convierte cada minuto de exceso en "puntos de tardanza" según la tarifa que fija la propietaria — 1 punto por cada 5 minutos tarde, Rp 3.000 por punto.

A fin de mes, bonificación = base − (puntos de tardanza × penalización). La propietaria aprueba una sola vez. Los reclamos desaparecen porque el cálculo está en pantalla, con fotos.

floural / asistencia / 22 abr
turno · Pagi
RT
Rina Tania
cajera · pagi · 07:00
06:58 A TIEMPO
DH
Dimas Hartono
panadero · pagi · 07:00
07:13 TARDE 8m · 1 pt
TK
Tika Kurnia
panadera · pagi · 07:00
06:51 A TIEMPO
BONIF. · DIMAS H · ABR BASE 500k 4 pt × 3k = 488k
● Problema 06 + extras

Cuatro canales de venta, un solo libro. Más lo que no pidió.

Cada canal — dine-in, para llevar, GoFood, ShopeeFood, pre-order con anticipo — registra en la misma tabla de pedidos con una etiqueta de canal. El cierre del día es una pantalla, no cuatro. El P&L por canal es un filtro, no un proyecto.

Y la capa extra: puntos de fidelidad para clientes (1 por cada Rp 1.000 gastados, con vencimiento según la regla de la propietaria), registro de merma categorizado con pérdida estimada en Rp, stock de empaques que se descuenta automáticamente por venta, y un registro de auditoría global para que cualquier número en cualquier pantalla pueda rastrearse hasta una persona y un momento.

floural / cierre del día · 22 abr
1 libro · 4 canales
Dine-in
42
Rp 1.84m
GoFood
31
Rp 1.22m
ShopeeFood
18
Rp 0.71m
Pre-order
07
Rp 2.95m
► Registro de merma · hoy Rp 84k
Mango Tart · 2 uds kadaluarsa Rp 38k
Whipping cream · 220 g terkontaminasi Rp 28k
Croissant · 1 ud jatuh Rp 18k
Cómo lo construimos

Seis semanas. Modelado sobre su flujo de trabajo real, no sobre un POS genérico.

No bifurcamos un POS existente. Pasamos los primeros tres días en la panadería observando. El modelo de datos — tres niveles, lotes, FIFO, vida útil — estaba en la pizarra antes de escribir una sola línea de código.

01

Semana 1 — Observar y documentar las recetas

Estuvimos en la panadería. Escribimos cada receta — bizcocho, crema, ganache, cada producto — en esquemas estructurados de componentes y productos. El modelo de datos se convirtió en el libro de recetas.

02

Semana 2 — Inventario de tres niveles

Construimos ingredientscomponentsproductsshelf_items con tablas de lotes para los componentes e instancias en vitrina. HPP promedio ponderado en cada recepción y cada tarea de producción.

03

Semana 3 — Producción + vida útil

Pantalla de tareas de producción con la receta como lista de verificación. Umbrales de vida útil por producto (horas en verde/amarillo/rojo) vinculados a barras de color en tiempo real. Registro de merma con razones categorizadas.

04

Semana 4 — POS orientado a la incorporación

Cuadrícula de fichas con códigos cortos, pedidos etiquetados por canal, cobro en una sola pantalla, flujo de anticipo más saldo para pre-orders. El cajero fue formado en 90 minutos con un guión de 1 página.

05

Semana 5 — Ciclo de personal y finanzas

Asistencia por selfie, configuración de puntos de tardanza, borrador mensual de bonificaciones y flujo de aprobación. Cajón de efectivo con conciliación de apertura / ventas / pagos / cierre. Registro de auditoría en cada mutación.

06

Semana 6 — Dos nuevos panaderos, en producción

Se contrató a dos panaderos sin experiencia previa como prueba. Ambos completaron un turno completo en solitario para el final de la semana — recetas desde la pantalla, FIFO desde la pantalla, decisiones de vitrina desde la pantalla. La propietaria se quedó en casa un sábado.

Lo que funciona ahora

Seis cosas que la propietaria ya no carga en la cabeza.

Sin deltas mensuales fabricados — el sistema está en etapa inicial de operaciones. Estos son los flujos de trabajo que pasaron de los hombros de la propietaria a la pantalla.

1

Fuente de verdad para recetas

Cada receta en la base de datos, versionada. Los nuevos panaderos leen la pantalla, no a la propietaria.

90m

Incorporación del cajero

Cuadrícula de fichas + códigos cortos + cobro en una pantalla. El nuevo empleado toma pedidos reales dentro de la primera hora.

3

Niveles de inventario con FIFO real

Ingredientes → componentes → productos. Los lotes de componentes se consumen del más antiguo al más reciente, de forma automática.

V/A/R

Vida útil visible

Cada unidad en vitrina tiene una barra de color en tiempo real. "¿Se ve fresco?" se reemplaza por "¿está en verde?"

0

Discusiones sobre bonificaciones

Minutos tarde → puntos de tardanza → deducción en Rp. Fotos y sellos de tiempo. La propietaria aprueba una sola vez.

4

Canales, un solo libro

Dine-in, GoFood, ShopeeFood y pre-order registran todos en la misma tabla de pedidos. El cierre del día es una pantalla.

La tecnología

Construido para ser propiedad del operador, alojado y editado por él.

► Frontend

PWA en Vanilla JS

Instalable en la tablet Android del personal. Sin framework — cada pantalla es un módulo JS que el sobrino de la propietaria (estudiante de informática) puede leer. El service worker mantiene el POS activo cuando el wifi falla.

PWA · ES modules · service worker · printer.js
► Backend

PHP + MySQL · un archivo por dominio

Enrutamiento por acción (?action=), PDO nativo, JWT. Un esquema de 25 tablas cubre configuración, usuarios, productos/componentes/ingredientes con recetas, lotes, vitrina, asistencia, bonificaciones, empaques, merma y auditoría.

PHP · MySQL · PDO · JWT · integridad transaccional
► Modelo de inventario

Tres niveles con lotes

Ingredientes (crudos) → componentes (semielaborados, por lotes, con seguimiento de caducidad) → productos (terminados, vinculados a receta) → unidades en vitrina (con sello de tiempo al exponer). HPP promedio ponderado atraviesa cada capa.

component_recipes · product_components · shelf_items · waste_records
► Ciclo operativo

Asistencia, bonificaciones, cajón de efectivo, auditoría

Registro de entrada por selfie con detección de turno, tolerancia y penalización configurables, borradores mensuales de bonificaciones. Cajón de efectivo diario con apertura / ventas / pagos / cierre. Cada mutación en el registro de auditoría vinculada a usuario + IP.

attendance · bonuses · cash_drawer · daily_reconciliation · audit_log
Volver a → Todos los proyectos

¿Su panadería, cocina
o estudio todavía vive en su cabeza?

Llamada de análisis gratuita. Le decimos qué vale la pena construir y qué no.