Puente para Carrito de Compras
Convierte una lista de compras del planificador de comidas en una propuesta de carrito revisable — y se detiene ahí, intencionalmente
Resumen
Contexto, enfoque y resultado.
Problema
Mi planificador de comidas autohospedado sabe lo que necesito comprar. El sitio de mi supermercado sabe cuánto cuestan las cosas, qué promociones aplican y qué está en liquidación. Conciliar eso a mano cada semana es exactamente el tipo de tarea pequeña y recurrente que la automatización debería absorber.
Mi rol
Lo diseñé y construí, incluyendo los límites — que son la mayor parte del diseño.
Restricciones
- Datos de supermercado en español, donde el mismo producto tiene varios nombres y el emparejamiento debe ser lo suficientemente determinista como para revisar.
- La lógica de promociones es realmente compleja: ofertas de compra múltiple, descuentos porcentuales y fijos, precios de liquidación, recompensas de lealtad.
- Toca dinero. Esa restricción determinó todo lo demás.
Arquitectura
Las necesidades de la lista de compras se normalizan, se emparejan de forma determinista contra el catálogo y se evalúan con las promociones activas para producir una propuesta de carrito que revisa una persona. El registro de preferencias locales significa que una corrección que hago una vez se recuerda. Expone sus capacidades a través de Model Context Protocol para que un asistente pueda llamarlo.
El dry-run es el valor predeterminado. La mutación del carrito existe pero está deshabilitada detrás de un flag de aplicación explícito. La lista de fuera de alcance está escrita en el proyecto y no es un TODO: sin checkout, sin pago, sin programación de entregas, sin envío de pedidos, sin gasto de saldo de lealtad, sin compras autónomas y sin intentar evadir protecciones anti-bot.
Resultado
Funciona de extremo a extremo en la versión v0.1.0, en uso semanal, con una suite de pruebas basada en fixtures para que la lógica de promociones se pueda verificar sin acceder a un sitio en vivo.
Qué haría diferente
Nada estructural — este es el proyecto donde acerté con los límites desde el primer intento, y la razón es que escribí la lista de fuera de alcance antes que la de funcionalidades. La automatización que toca dinero debe proponer, no actuar. El paso de revisión me cuesta treinta segundos a la semana y elimina toda una categoría de fallas contra las que de otro modo tendría que diseñar.
Aprendizajes
Lo que me llevo.
Escribir la lista de exclusiones antes que la lista de funcionalidades resultó en un mejor diseño que cualquier cantidad de refactorización posterior. Cuando la automatización involucra dinero, la etapa de revisión es el producto.
Stack
Herramientas y plataformas.
Conversemos
¿Quieres platicar de este tipo de trabajo?
Si estás contratando para trabajo backend, AWS, voz o integraciones similares —o simplemente quieres comparar notas de arquitectura— escríbeme directo.