Rolle & Umfang
Vollständig konzipiert und gebaut und seitdem laufend weiterentwickelt: eine Multi-Tenant-PIM-Plattform mit Mandantentrennung (Super Admin, Tenant Admin, Tenant User), einem Draft-/Publish-Workflow, sodass jede Änderung vor dem Livegang geprüft wird, und vollständigem Audit-Logging mit Before-/After-Snapshots.
- Shopify-First-Synchronisation, dazu eine NetSuite-ERP-Anbindung und Export zu Amazon und weiteren Marktplätzen über ChannelEngine.
- KI-Anreicherung von Titeln, Beschreibungen, SEO-Texten und Übersetzungen — mit einem Review-Schritt, bevor generierte Inhalte veröffentlicht werden.
- Ein eingebauter RAG-Assistent, mit dem das Produktteam per Chat im Katalog suchen und arbeiten kann: Vektorsuche über Produktdaten, mit Tool-Aufrufen für Aktionen, die der Nutzer erst freigeben muss.
- Eine separate Chrome-Erweiterung, mit der das Team Produkte von Marktplatzseiten direkt in die Anreicherungs-Queue legen kann.
- Ein EU-GPSR-Compliance-Modul, ein SEO-Modul mit Validierung des Keyword-Volumens und Hintergrundaufgaben (Vektor-Sync, Anreicherung, Scheduler) über eine Queue mit Retries.
Wirkung
- Über 3.400 aktive Produkte im Kernmarkt, mit Exportströmen zu hunderten weiterer Listings auf Marktplätzen wie Amazon.
- Eine KI-Übersetzungspipeline, die stillschweigend Kategorie-URLs überschrieb, wurde zurückgerollt und durch eine Version ersetzt, die Redirects anlegt und alles in einem Audit-Trail festhält.
- Ein Sync-Bug, bei dem jede NetSuite-Verknüpfung KI-Inhalte und Shopify-Änderungen überschrieb, wurde strukturell behoben, statt jedes Mal von Hand repariert zu werden.
- Über 350 Commits in acht Monaten laufender Entwicklung — keine einmalige Übergabe, sondern ein System, das mit dem Sortiment mitwächst.
Architektur
Ein Turborepo-Monorepo mit NestJS-Backend und Next.js-14-Frontend (App Router), einem gemeinsamen Prisma-Datenbankpaket und geteilten Typen. PostgreSQL mit der pgvector-Erweiterung speichert sowohl Produktdaten als auch Embeddings, sodass Vektorsuche und reguläre Queries auf derselben Datenbank laufen. Hintergrundarbeit (Vektor-Sync, KI-Anreicherung, Marktplatz-Sync) läuft über Redis-basierte Queues mit automatischen Retries und Exponential Backoff, entkoppelt von der Oberfläche, sodass ein langsamer Marktplatz-Sync den Rest der Plattform nicht blockiert.
Modellwahl
Der eingebaute RAG-Assistent ist bewusst Multi-Provider: Verschiedene Aufgaben laufen über verschiedene Modelle (von einem günstigen Modell für Routine-Chat bis zu schwereren Claude- und GPT-Varianten für komplexere Anreicherungsaufgaben), mit pro Modell erfassten Tokenpreisen, sodass die Kosten pro Gespräch sichtbar sind statt einer Blackbox. Generierte Inhalte (Titel, Beschreibungen, Übersetzungen) gehen immer zuerst in einen Review-Schritt — das Modell schlägt vor, ein Mensch gibt frei; aus demselben Grund läuft etwa auch Preislogik in anderen Projekten nie direkt durch ein Sprachmodell.
Kosten & Latenz
- Tokenkosten pro Gespräch werden je Modell erfasst, sodass teurere Modelle bewusst und sichtbar eingesetzt werden statt standardmäßig.
- Hintergrundaufgaben (Vektor-Sync, Anreicherung) laufen asynchron mit maximal 3 Retries und Exponential Backoff, sodass eine vorübergehende Marktplatzstörung nicht sofort zu Datenverlust führt.
- Vektorsuche und reguläre Produktabfragen laufen auf derselben PostgreSQL-Instanz (pgvector), was eine separate Vektordatenbank samt Sync-Schicht überflüssig macht.
Lessons learned
Die KI-Übersetzungspipeline überschrieb Kategorie-URLs ohne Warnung, sobald eine Übersetzung neu generiert wurde — auf den ersten Blick gut für SEO, aber es brach bestehende externe Links. Gelöst, indem die historischen URLs wiederhergestellt, Redirects ergänzt und ein Audit-Trail eingebaut wurde, der solche Änderungen künftig sichtbar macht, bevor sie live gehen. Ein zweiter Bug: Jede NetSuite-Synchronisation überschrieb KI-generierte Inhalte und Shopify-Änderungen, sobald ein Produkt mit NetSuite verknüpft wurde — kein Einzelfall, sondern ein strukturelles Muster, behoben durch eine Überarbeitung der Sync-Richtung statt wiederholter Handarbeit. Und ein dritter, kleinerer, aber bezeichnender: Die Übersetzungspipeline übersetzte Materialabkürzungen wie "RVS" (Edelstahl) falsch — gelöst mit einer expliziten Glossarregel, statt darauf zu vertrauen, dass das Modell Domänenwissen errät.