Banpoom Laptop – Ein Service, bei dem AI Danawa-Daten mit Rücksende-Schnäppchen aus Open Marketplaces abgleicht, um echte Preis-Leistungs-Rückläufer-Laptops zu finden
(banpoomlaptop.com)Hallo. Jedes Mal, wenn ich die Flut an Rücksende-Laptops auf großen Open Marketplaces sah, empfand ich es als sehr mühsam, die tatsächlichen Spezifikationen genau zu prüfen und mit dem günstigsten Preis bei Danawa zu vergleichen.
Um dieses Problem zu lösen, habe ich „Banpoom Laptop“ entwickelt, einen Service, der verstreute Laptop-Sonderangebote aus verschiedenen Handelsplattformen und die umfangreiche Datenbank von Danawa mithilfe von AI integriert und visualisiert.
Link: https://banpoomlaptop.com
1. Verwendeter Tech Stack
Ich habe die gesamte Struktur vom Frontend bis zur Datenpipeline neu aufgebaut.
-
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 (Hintergrund-Daemon)
-
AI / Data Matcher: OpenRouter API (Qwen 3.5), BM25 (Ähnlichkeitssuchalgorithmus)
2. Wichtige High-Difficulty-Punkte im Entwicklungsprozess
Bei der Umsetzung dieses Projekts ging es über einfache Webentwicklung hinaus, und besonders im Bereich Datenerfassung und Bereinigung der Pipeline stand ich vor mehreren anspruchsvollen Aufgaben.
A. Normalisierung unstrukturierter Daten und Cross-Mapping zwischen heterogenen Plattformen
Die größte Hürde war das Matching zwischen den uneinheitlichen Titeln von Rücksende-Laptops auf Open Marketplaces und den komplexen Spezifikationsnamen bei Danawa. Da sich die Schreibweisen je nach Anbieter unterscheiden, stießen normale DB-Joins oder reguläre Ausdrücke schnell an ihre Grenzen.
Um das zu lösen, habe ich eine 2-Step-AI-Pipeline aufgebaut.
- Mit dem BM25-Algorithmus für Textähnlichkeit werden zunächst Primärkandidaten aus der umfangreichen Danawa-Datenbank extrahiert.
- Die gefundenen Kandidaten werden anschließend in das Kontextfenster eines auf Qwen 3.5 basierenden LLM (Large Language Model) gegeben, damit es den Kontext interpretiert und das exakte abgeleitete Modell (pcode) identifiziert. Darüber hinaus habe ich einen Hintergrund-Worker damit beauftragt, lange textuelle Danawa-Spezifikationen in Echtzeit als JSON zu strukturieren.
B. Anwendung einer verfeinerten Inferenzlogik für den Haupt-Ranking-Algorithmus (Hidden Score)
Bei Open-Marketplace-Daten wirkt der Rabattprozentsatz auf den ersten Blick am größten, das Problem ist jedoch, dass sich darunter viel problematischer Altbestand mit veralteten Baujahren befindet.
Um das zu lösen, habe ich innerhalb der MongoDB-Aggregation-Pipeline ein „Hidden Score“-System eingebaut, das Score = Rabattprozentsatz + (Leistungskennzahl / aktueller Preis) - Baujahres-Penalty berechnet. Es bleibt nicht bei einfacher Filterung: Modelle von vor 2022 erhalten eine Penalty von -50 Punkten, während aktuelle Modelle aus 2025–2026 mit +20 Punkten gewichtet werden, damit im oberen Shelf zuerst nur Geräte mit echter Preis-Leistung angezeigt werden.
3. Abschluss
Im Frontend habe ich durch die Kopplung von Zustand und Next.js-Parametern Dutzende Multi-Spec-Filter (Panel, Hersteller, Gewicht, TGP usw.) so optimiert, dass sie sofort und nahtlos reagieren.
Für mich als Engineer war es die bedeutendste Erfahrung, LLMs nicht einfach als Chatbot einzusetzen, sondern sie ernsthaft als „Parser zur Normalisierung unstrukturierter Daten“ und als „smarten Matcher“ innerhalb einer Hintergrund-Pipeline zu verwenden. Ich freue mich über Austausch oder Feedback von allen, die sich für Daten-Crawling, AI-Matching oder die Next-Entwicklungsumgebung interessieren.
3 Kommentare
Macht irgendwie Lust, es zu kaufen..
Gut, das ist eine praktische Website.
Meiner persönlichen Meinung nach wirkt das Design etwas zu sehr wie ein Shopping-Mall, und die Farben scheinen die Augen etwas zu ermüden.
Der Algorithmus allein dürfte wohl schon ausreichen, aber an welcher Stelle war ein LLM unbedingt nötig?
Auf Mobilgeräten (Galaxy S25 Plus) überlappen sich im AI-Chatfenster der Button zum Senden der Nachricht und der Schließen-Button (X).