Multi-Tenant-PIM-Plattform — KI-Anreicherung & Multichannel-Sync

Für eine E-Commerce-Marke mit tausenden aktiven Produkten habe ich eine Product-Information-Management-Plattform gebaut, die Produktdaten zentralisiert, mit KI anreichert und über Shopify, Marktplätze und ERP synchron hält — mit einem Menschen, der jede Änderung prüft, bevor sie live geht.

Multi-Tenant-PIM
KI-Anreicherung
Vektorsuche / RAG
Multichannel-Sync

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.