Nutriblend Group S.A.S. · WinWar
Desarrollador Full Stack · Backend · Frontend · DevOps
Dos líneas de trabajo en paralelo: el ERP de la empresa y el sistema multiagente de ventas. Docker en el día a día: entorno local en contenedores, build de la imagen en el pipeline y despliegue contenerizado en servidor propio.
Sistema multiagente de ventas automatizadas
+30% en ventas minoristas
Varios agentes coordinados entre sí automatizan el ciclo de venta minorista. TypeScript, API de Gemini para el razonamiento de los agentes, Redis para estado y colas, MySQL para persistencia.
- TypeScript
- API de Gemini
- Redis
- MySQL
- Docker
Detalle técnico
- Un seller-agent calcula con Gemini los embeddings de 768 dimensiones de cada producto; el ERP los usa para su búsqueda semántica. Es el punto de contacto entre los dos sistemas.
- Redis sostiene el estado de cada conversación y las colas entre agentes.
- El resultado se mide sobre la estadística de ventas de los últimos 3 meses. No es un demo: está en producción.
- Claude como asistente durante el desarrollo: prompts, refactors y documentación técnica.
WWSystem · ERP a medida para la industria de suplementos nutricionales
Referente técnico, equipo de 3
ERP full-stack y multi-rol que cubre la operación completa, de la compra de materia prima al cobro de la factura. En producción, con 7 usuarios diarios de ventas, planta, back office y dirección. Primera versión en menos de 6 meses; ~1.065 commits propios sobre ~2.500 (~42%).
- Node.js 22
- Express 4
- Sequelize
- MySQL / MariaDB
- React 18
- Vite
- Tailwind CSS
- Socket.IO
- Docker
- GitHub Actions
- Nginx
Detalle técnico
- Sistema RBAC completo: catálogo declarativo de permisos
<recurso>.<acción>.<scope>como fuente única para el código y para el seed de migraciones, 7 roles, scopes de datos (own vs all) aplicados en los servicios, resolución por SQL con caché en memoria (invalidación explícita + TTL de 5 minutos) y un middleware genéricorequirePermission(). El administrador no tiene bypass en código: recibe el comodín desde la base. - Órdenes de compra de punta a punta: borrador → cotizada → emitida → facturada → recibida → conciliada, con ledger append-only de eventos, anulación por storno (nunca borrado), bandeja de diferencias de cantidad y un circuito de inconsistencias que separa tres permisos para tres responsables. Integrado transaccionalmente con stock, egresos y Libro de IVA.
- Circuito administrativo-contable: plan de cuentas jerárquico, egresos con dos ejes de estado (pago y documento), vencimientos y pagos parciales, egresos recurrentes por cron y cuenta corriente de proveedores.
- Libro de IVA y motor de desglose fiscal: base imponible despejada desde el importe total, con neto por diferencia para que la suma cierre exacta contra el total facturado.
- Cartera de valores financieros (cheques y e-cheques) como módulo transversal entre cobranzas y pagos: el mismo instrumento entra por un cobro y sale por un pago, con transiciones auditadas.
- Auditoría append-only con snapshot antes/después de ~20 entidades, delimitada frente a los ledgers de stock para no duplicar registro.
- Búsqueda semántica de productos con embeddings de 768 dimensiones y similitud coseno en memoria, con caché precalentado al arrancar; precio y stock nunca se embeben, se leen en vivo.
- Refactor arquitectónico del backend de estructura horizontal a features verticales autocontenidas —monolito modular de 33 módulos— con reglas de dependencia explícitas y ciclos resueltos por lazy loading.
- Transacciones con
SELECT ... FOR UPDATEen toda operación que mueve stock o dinero, con una única compuerta que impide saldos negativos. - Infraestructura: Docker multi-stage y Compose, GitHub Actions que publica imágenes en GHCR y despliega con runner self-hosted, dos entornos aislados (producción y testing) detrás de un gateway NGINX que termina TLS, backup diario a Google Drive con rclone + systemd y retención GFS (7 diarios / 4 semanales / 12 mensuales) con verificación de integridad del dump.
- Escala del sistema: ~158.000 líneas de código, 3 repositorios, 58 tablas, 221 migraciones versionadas, ~287 endpoints REST y ~1.059 tests automatizados.