Automatizando un catering (3/n)

Cómo hemos automatizado los pedidos a proveedores para comprar ingredientes en nuestro catering.

Captura de pantalla de nuestra plataforma mostrando un listado de ingredientes
Captura de pantalla de nuestra plataforma mostrando un listado de ingredientes

Después de varios meses haciendo paellas, ampliamos la cocina y abrimos el negocio a nuevas oportunidades. En especial, pusimos el foco en la venta de menús diarios.

Esto implicaba muchas cosas:

  • Manejar la compra de muchos ingredientes. Con las 🥘 solo teníamos 8-10 ingredientes que controlar, pero ahora tenemos más de 150 😅
  • Manejar la compra de material: bolsas, tuppers, cubiertos, film...
  • Gestionar los pedidos de la gente
  • Mucha más facturación
  • Planificación de rutas de reparto diarias, en base a quién ha pedido
  • Nuevas etiquetas para cada plato
  • Planificación del menú mensual

Viendo todo esto, me planteé mandarle un WhastApp a Elon y pedirle un par de robots 🤖 🥲

Este post y los siguientes tratarán de cómo estamos trabajando entre Sabor y Borah para automatizar todos estos pasos.

El post de hoy trata sobre el sistema de ingredientes y proveedores.

Añadí un nuevo resource a mi panel de Filament y añadí un apartado de Proveedores. Cada proveedor tiene un nombre, un email y un número de WhatsApp.

Captura de pantalla de nuestra plataforma mostrando un listado de proveedores

Después, creé un apartado de ingredientes, donde añadiremos cada ingrediente por separado y los asociaremos a sus respectivos proveedores:

Captura de pantalla de nuestra plataforma mostrando un listado de ingredientes

Nada muy especial por aquí, solamente un par de CRUDs usando Filament. En nuestro caso, hay veces que compramos el mismo ingrediente en sitios diferentes porque los precios fluctúan o porque no tienen disponibilidad, así que cada ingrediente puede ser asociado con uno o varios proveedores:

Captura de pantalla de nuestra plataforma mostrando un ingrediente y sus proveedores

Ahora viene la parte guay: nuestro equipo de cocina nos suele mandar lo que necesita así:

Captura de pantalla de un WhatsApp recibido por mí de mi padre pidiéndome ingredientes

Este Whatsapp me llega a mí, y yo tengo que ir a una serie de ficheros Excel que tenemos, buscar qué proveedores me dan cada ingrediente y escribirles por email o por WhatsApp a cada uno de ellos. Hay semanas que los pedidos son bastante grandes y me puedo pasar varias horas haciéndolo!

Ahora, con nuestra plataforma, solo tengo que pulsar en Hacer pedido en los ingredientes que quiero comprar

Captura de pantalla de nuestra plataforma mostrando cómo se hace un pedido

Una vez he hecho eso, se añade todo a un carrito y, tras confirmar el pedido, el sistema mandará un WhatsApp o un email a cada proveedor con su respectivo pedido!

Captura de pantalla de nuestra plataforma mostrando el carrito con los ingredientes a comprar

Si el proveedor contesta, ya uno de nosotros sigue la conversación desde el email o desde el móvil. Aún estamos metiendo todos los proveedores de todos los ingredientes, pero una vez esto esté listo nos va a ahorrar 2-3 horas a la semana para hacer los pedidos 🌟

Para poder contactar por WhatsApp, nos dimos de alta con una cuenta Business y nos hemos conectado a través de la API de Twilio. Es tan sencillo como esto:

<?php

namespace App\Actions\Whatsapp;

use Twilio\Rest\Client;

class SendWhatsappToNumber
{
    public function handle(string $to, string $contentSid, array $variables = [])
    {
        $client = new Client(config('services.twilio.sid'), config('services.twilio.auth_token'));

        $client->messages->create(
            'whatsapp:'.$to,
            [
                'contentSid' => $contentSid,
                'from' => 'whatsapp:'.config('services.twilio.phone_number'),
                'contentVariables' => json_encode($variables),
            ],
        );
    }
}

Cuando mandas un Whatsapp a través de Twilio, tiene que ser a través de una plantilla que la gente de Meta tiene que aprobarte. La nuestra es algo así:

¡Hola! Queríamos hacer un pedido para Sabor en la Oficina:
{{1}}

Ese {{1}} es una variable, y es lo que mando en contentVariables:

Cuando hemos lanzado el pedido, se nos añade en una pestaña de "Pedidos" en el panel, en la que podremos marcar cuando es recibido y, sobre todo, cuándo fue pagado:

Captura de pantalla de nuestra plataforma mostrando los pedidos que hemos realizado

Esta feature de nuestra plataforma es muy potente y nos ahorrará mucho tiempo y dolores de cabeza muy pronto!

La próxima semana veremos cómo, partiendo de los ingredientes, creamos nuestro sistema de platos y menús para generar los menús de forma sencilla 🧡