Saltar al contenido

← Trabajo

Proyecto propio · Python + Next.js · Repo privado

MAPE Tournament

Ocho modelos de previsión de demanda compiten con las ventas diarias de un restaurante, juzgados día a día por MAPE. Hecho para restaurantes; el mismo motor sirve para cualquier negocio con demanda diaria.

v0.4.0 · Oct 2026Motor en Python + web en Next.jsEspañol e inglés

Demo

El torneo en 21 segundos

Cada día, cada modelo prevé las ventas de mañana de cada plato, y el menor error gana el día. Tras 25 días, SARIMAX con clima termina primero con un 33,4 % de MAPE, 6,6 puntos por debajo del baseline del mismo día de la semana. Las cifras del vídeo son las de la run publicada.
Póster del vídeo · la clasificación final · MP4 1080p · con controles, sin autoplay · WebVTT ES + EN

01 · Matriz

¿Quién previó mejor cada día?

Una tabla, no un gráfico: una fila por día, una columna por modelo, el MAPE escrito en cada celda y el color solo lo repite. ND se escribe y nunca cuenta como cero; una celda fallida y una sin historial suficiente tienen cada una su propio tratamiento.
Captura · la matriz de la portada, claro · 640 de ancho @2x

02 · Local-first

Tus ventas no salen del navegador

En /try subes un CSV y eliges sus columnas, y los tres modelos ligeros se ejecutan en un web worker: portados a TypeScript y atados al motor en Python por un test de paridad. No se sube nada, y los informes de error eliminan el archivo.
Captura · /try con un CSV asignado y los resultados de los modelos ligeros

03 · Motor

Determinista por norma

Python 3.12 con uv, ruff y pytest. Sin aleatoriedad global, semillas fijas, un solo hilo: dos runs con las mismas entradas dan resultados idénticos byte a byte, y un modelo que no puede prometerlo no entra en el torneo. El motor nunca se despliega; la web lee runs publicadas.
Captura · la página de una run publicada: versiones, semilla y hashes

El repositorio es privado; la web, cada run publicada y sus cifras son públicas y comprobables.

Siguiente

Mantén tu código verificable. Recupera tus mañanas.

Abierto a puestos senior de frontend y a contratos, en remoto por Europa. Una llamada de 30 minutos sobre tu propio código, sin diapositivas.