LNData
Volver a los productos Producto LNData · Zé do Precinho

Precios de retail recogidos todos los días, tienda por tienda — con histórico y por API.

Zé do Precinho es la plataforma de inteligencia de precios del retail brasileño de LNData. Recoge diariamente los precios públicos de supermercados y farmacias — tienda por tienda, no cadena por cadena —, normaliza todo en un formato único, guarda el histórico y entrega el resultado por dos puertas: una API REST de pago, para quien integra a su propio BI o ERP, y una aplicación web, para quien quiere usarlo a mano.

Visitar el sitio zedoprecinho.com.br
Rol · Producto propio · arquitectura, ingeniería de datos, full-stack e infraestructura
Situación · Plataforma de datos · en producción · API + aplicación web
En resumen, para quien decide
El problema

El precio del retail es público, pero fragmentado, regional y efímero. Cada cadena publica en su propio sitio, con nomenclatura y códigos internos. El mismo producto de la misma cadena cuesta distinto en cada ciudad — y está medido: entre Criciúma y Florianópolis, el mismo día, hasta un 41,9% de los precios divergen. Y el precio de ayer ya no existe en ningún lugar. Quien necesita ese dato monta su propio scraper: frágil, caro de mantener y que se rompe en silencio cuando el sitio cambia.

Lo que hizo LNData

Construimos Zé do Precinho, una plataforma de datos de punta a punta: motor de recolección automática diaria, regionalización real por código postal, identidad de producto verificable por código de barras, almacén analítico con el histórico completo y una API REST comercial con cobro acoplado al consumo. Junto viene una aplicación web completa — búsqueda, comparación entre tiendas, gráfico de histórico, listas de compra con optimización de carrito y alertas de precio con notificación push.

El resultado

El dato llega normalizado, histórico y auditable — sin mantener ningún scraper. Hoy el sistema recoge seis cadenas de seis grupos económicos distintos todas las mañanas, responde por 19 ciudades y rastrea 66.599 productos identificados por código de barras. Del primer commit a producción con pago real: 17 días.

Zé do Precinho
API + app
dos puertas sobre el mismo dato
Diaria
recolección automática, sin intervención
Tienda a tienda
regionalización real por código postal
En producción
zedoprecinho.com.br
66.599
productos rastreados por código de barras
6 cadenas
de 6 grupos económicos distintos
19 ciudades
plazas respondidas en Santa Catarina
17 días
del primer commit a producción con pago
La ingeniería detrás — para quien quiere el detalle técnico

Arquitectura

Tres ejes independientes — el segmento de retail, la plataforma de e-commerce y el minorista — sostienen toda la recolección. Cada adapter emite el mismo contrato canónico; el resto del sistema nunca conoce el origen. La consecuencia práctica: agregar un minorista que corre en una plataforma ya soportada cuesta una entrada de configuración y cero código.

Recolección
  • Adapters por plataforma · VTEX y propios
  • Registry en YAML · minorista = config
  • Regionalización por código postal
  • Salida de red BR · selectiva
Núcleo
Normalización + identidad
Histórico en ClickHouse
Orquestación con Dagster
Chequeos de calidad por ejecución
Entrega
  • API REST · créditos por consulta
  • Aplicación web
  • Listas y alertas · correo y push

Lo que hace la plataforma

Un flujo de punta a punta que transforma catálogos públicos dispersos en dato consultable: recoger → normalizar → identificar → historiar → servir → cobrar.

Recolección

Todos los días, sin que nadie apriete un botón

La recolección corre automáticamente cada mañana, una ejecución por minorista, con aislamiento por unidad: una categoría que falla se contabiliza y las demás siguen — una categoría rota no cuesta el catálogo entero.

Regionalización

Precio por plaza, no por cadena

El sistema distingue la plaza recogida de la plaza atendida — aquella en la que el propio minorista declara que entrega desde una tienda ya cubierta. No es una aproximación por la ciudad vecina: es el mismo seller y la misma región, y la respuesta de la API dice por qué plaza responde cada línea.

Identidad

El mismo producto es el mismo producto

La comparación solo agrupa ofertas por códigos comprobadamente globales — código de barras con checksum válido, o código de fabricante cuando es lo bastante fuerte. Sin eso, el comparador mostraría diferencia de precio entre productos distintos.

Histórico

El histórico es el producto

Cada recolección inserta filas nuevas y nunca actualiza las antiguas. Re-ejecutar una recolección es seguro por construcción, y la serie temporal completa queda disponible para consulta — es lo que nadie más guardó.

API

API REST documentada y versionada

Comparación entre tiendas, precio actual, serie histórica y búsqueda textual, con filtros de alcance multivalor por estado, ciudad, minorista y tienda. El vocabulario del descubrimiento es exactamente lo que aceptan los filtros, sin traducción en medio.

Aplicación

Un SaaS completo sobre el mismo dato

Búsqueda, comparación tienda a tienda con gráfico de histórico, listas de compra con optimización de carrito, alertas de precio con notificación push, compra de créditos y documentación interactiva de la API bajo login.

La ingeniería que marca la diferencia

Lo que distingue técnicamente al proyecto no es raspar sitios — es todo lo que existe alrededor del dato. Cada decisión relevante se tomó con medición, no con intuición.

Un barrido que alcanza el catálogo entero

Las API de catálogo de las plataformas tienen techo de paginación, y por encima de él el resto del catálogo queda inalcanzable. La solución es un descenso adaptativo por el árbol de categorías, con troceado por rango de precio en las hojas grandes — la cobertura subió del 86,6% al 98,7%, recuperando 11.591 productos.

Identidad medida antes de ser confiada

En una prueba sobre 10.158 códigos de barras compartidos entre tres cadenas, ningún campo de "referencia" de la plataforma coincidió — es el código interno de la tienda. Y el 42,2% de las claves de marca y modelo fundían productos distintos. Usarlos produciría una comparación equivocada, que es peor que ninguna comparación porque parece correcta.

Calidad juzgada contra su propio histórico

Cada ejecución pasa por chequeos automáticos comparados con la mediana de los últimos siete días de ese minorista — porque cada fuente tiene su propio normal, y un umbral fijo alertaría siempre en una y nunca en la otra. El veredicto tiene tres estados: una recolección que termina un 30% menor no es éxito ni fallo.

Más allá del dato

Cobro, operación y confianza

Una API comercial no termina en el endpoint: tiene que cobrar con consistencia transaccional, defenderse del abuso y avisar sola cuando el dato del día no llegó.

Créditos con consistencia transaccional

Los créditos viven en lotes con vencimiento y el consumo debita del lote que vence primero, atravesando lotes cuando hace falta — antes de eso, un cliente con saldo distribuido escuchaba "sin créditos" en una operación que el saldo cubría.

Límite de cadencia y caché

Un control de cadencia atómico protege el origen y el costo, y repetir la misma consulta dentro de la ventana de caché devuelve el resultado sin debitar. El caudal sostenido es igual en la clave de API y en la sesión del sitio, a propósito: un techo mayor en la interfaz sería la puerta trasera.

Alertas decididas por medición

En 82.582 pares de observaciones consecutivas, el 86,3% de los precios no cambian — y cuando caen, la caída tiene mediana del 19,3%. La señal es rara y grande, así que los umbrales son cerrados: un porcentaje libre daría precisión falsa. Y el aviso lleva la fecha de referencia, porque "bajó 30%" sin decir desde cuándo es una afirmación sin tamaño.

Una operación que avisa sola

Un resumen diario por correo dice, en tres estados, si el día fue bueno. Existe porque tres fallos eran indistinguibles: el recolector corrió y encontró cero, la ejecución murió antes de grabar, o ni siquiera empezó — ninguno deja rastro en el dato, justamente porque el defecto es la ausencia de dato.

ClickHouseDagsterFastAPIRedis

Impacto

Quien necesita precio de góndola deja de mantener su propio scraper: el dato llega normalizado, con histórico y con identidad de producto verificable.

La regionalización es real y está medida — entre el 18% y el 42% de los precios divergen entre ciudades de la misma cadena, diferencia que un comparador por cadena simplemente no ve.

El cobro está acoplado al consumo con consistencia transaccional, en producción con pago real vía Pix, boleto y tarjeta.

La curaduría de fuentes rechaza candidatas con números en la mano — una farmacia fue rechazada por ser la misma empresa de otra ya recogida, y otra por traer un único producto comparable.

Stack de la plataforma

PythonFastAPIClickHousePostgreSQLRedisDagsterNext.jsDocker

¿Necesitas precios de retail como dato?

Si tu empresa sigue precios de góndola, arma índices de precio o alimenta un producto con dato de retail, Zé do Precinho lo entrega por API. Conoce la plataforma o habla con LNData.