4 puntos por chlrhdmltkfkd 2026-04-02 | 3 comentarios | Compartir por WhatsApp

Hola. Cada vez que veía la gran cantidad de laptops devueltas que aparecen en los grandes open marketplaces, sentía un gran cansancio al intentar verificar con precisión las especificaciones reales y compararlas con el precio más bajo en Danawa.

Para resolver esto, terminé desarrollando 'Banpoom Laptop', que integra y visualiza con IA la información de ofertas de laptops de distintas plataformas de comercio y la enorme base de datos de Danawa.

Link: https://banpoomlaptop.com

1. Stack tecnológico (Tech Stack)

Reconstruí toda la arquitectura, desde el frontend hasta el pipeline de datos.

  • Frontend: Next.js 16 (App Router), React 19, Tailwind CSS v4, Zustand

  • Backend / Database: Node.js, Next API Routes, MongoDB (Aggregation Pipeline), Redis

  • Crawling / Pipeline: Python (curl_cffi), Puppeteer, PM2 (daemon en segundo plano)

  • AI / Data Matcher: OpenRouter API (Qwen 3.5), BM25 (algoritmo de búsqueda por similitud)

2. Principales puntos de alta dificultad en el proceso de desarrollo

Al construir este proyecto, más allá del simple desarrollo web, me enfrenté a varios retos complejos en la etapa de recolección y depuración del pipeline de datos.

A. Normalización de datos no estructurados y mapeo cruzado entre plataformas heterogéneas

El mayor obstáculo fue hacer coincidir los 'títulos dispares de laptops devueltas en open marketplaces' con los 'complejos nombres de especificaciones de Danawa'. Como la forma de escribirlos varía según el vendedor, un DB Join común o las expresiones regulares mostraban límites muy claros.
Para resolverlo, construí un pipeline de IA de 2 pasos.

  1. Primero extraigo modelos candidatos iniciales desde la enorme base de datos de Danawa usando el algoritmo de similitud de texto BM25.
  2. Luego paso esos candidatos recuperados a la ventana de contexto de un LLM (modelo de lenguaje de gran tamaño) basado en Qwen 3.5 para que interprete el contexto y encuentre el modelo derivado único exacto (pcode). Además, delegué a un worker en segundo plano la tarea de que el LLM estructure en tiempo real las largas especificaciones de texto de Danawa en formato JSON.

B. Aplicación de una lógica avanzada de inferencia para el algoritmo principal de ranking (Hidden Score)

En los datos de open marketplaces, a primera vista la 'tasa de descuento' parece ser lo más grande, pero el problema es que también hay mucho inventario viejo de mala calidad.
Para resolverlo, inserté dentro del pipeline de Aggregation de MongoDB un sistema de 'puntaje oculto' que calcula puntaje = tasa de descuento + (métrica de rendimiento / precio actual) - penalización por antigüedad. No me limité a un simple filtrado por condiciones: a los modelos anteriores a 2022 les asigné una penalización de -50 puntos, y a los modelos más recientes de 2025~2026 un peso de +20 puntos, de modo que en el shelf superior se muestren primero solo equipos con verdadera relación costo-beneficio.

3. Cierre

En el frontend, optimicé para que decenas de filtros múltiples de especificaciones (panel, fabricante, peso, TGP, etc.) respondan de forma inmediata y fluida mediante la integración entre Zustand y los parámetros de Next.js.
La experiencia más significativa para mí como ingeniero fue haber introducido el LLM no como un simple chatbot, sino de forma seria dentro del pipeline en segundo plano como 'parser de normalización de datos no estructurados' y 'matcher inteligente'. Agradezco cualquier intercambio de opiniones o feedback de quienes tengan interés en data crawling, matching con IA o el entorno de desarrollo de Next.

3 comentarios

 
cnaa97 2026-04-02

Se me antoja comprarla..

 
runableapp 2026-04-02

Está bien, es un sitio práctico.
En mi opinión, el diseño se siente un poco demasiado como una tienda en línea y los colores parecen cansar la vista.
Parece que con solo el algoritmo sería suficiente, pero ¿en qué parte era realmente necesario un LLM?

 
kurthong 2026-04-02

En móvil (Galaxy S25 Plus), en la ventana de chat de IA se superponen el botón para enviar la conversación y el botón de cerrar (X).