VouDeOfertas
Plataforma de monitoreo de precios multi-marketplace (Amazon, Mercado Livre, Shopee) que expone el historial real de precios para distinguir ofertas genuinas de descuentos artificiales.

Problema
Marketplaces como Amazon, Mercado Livre y Shopee publican promociones sin contexto histórico confiable. El desafío de producto era exponer el historial real de precios para separar ofertas genuinas de descuentos artificiales — y, en ingeniería, unificar scraping de fuentes heterogéneas sin corromper el catálogo cuando fallan los reintentos.
Solución e impacto
Sistema full-stack en monorepo Turborepo con ingesta por lotes, hash de contenido y colas BullMQ para mantener el pipeline idempotente. La recolección es HTTP-first (Undici + Cheerio), con Playwright solo cuando la página bloquea o exige renderizado. Persistencia en MySQL con caché Redis y frontend Next.js/React con historial analítico. El impacto de ingeniería es un flujo resiliente a bloqueos y reintentos — sin métricas de conversión de negocio inventadas.
Arquitectura y trade-offs
Trade-off central: priorizar HTTP liviano y barato, reservando Playwright para excepciones — más throughput y menos costo de browser, a cambio de dos caminos de recolección. Batch + hash evita duplicar producto o precio en reintentos. Redis cubre lecturas calientes del historial; MySQL sigue siendo la fuente de verdad. El monorepo simplifica contratos entre scraper, API y UI, con el costo de disciplina de boundaries en Turborepo.
Operación y observabilidad
Docker e GitHub Actions para deploy reproduzível; healthchecks nos serviços. Telemetria por conector ainda é lacuna consciente — retrospectiva aponta métricas de bloqueio e drift de seletor como próximo investimento.
Desafíos técnicos
Heterogeneidad de marketplaces (markup, anti-bot, SPA), reintentos que no pueden duplicar entidades, y mantener el pipeline operable con Docker y GitHub Actions sin over-engineering de observabilidad en esta etapa.
Qué haría diferente
Hoy extraería adapters por marketplace con contratos de parsing más explícitos e invertiría antes en métricas de fallo por fuente (tasa de bloqueo, drift de selector). El diseño HTTP-first + fallback sigue siendo correcto; lo que adelantaría es telemetría por conector para reaccionar más rápido cuando un sitio cambia.
Contexto técnico
- Multi-marketplaceFuentesPipeline unificado con recolección heterogénea
- HTTP-firstRecolecciónPlaywright solo en excepciones
Decisiones documentadas (ADR)
- ADR 001: HTTP-first scraping
Playwright reservado para exceções — mais throughput e menos custo no caminho comum.
Stack
- Next.js
- React
- TypeScript
- Node.js
- Express
- MySQL
- Redis
- BullMQ
- Undici
- Cheerio
- Playwright
- Docker
- GitHub Actions