AI-Powered Return Analysis & Classification


Retouren sind der größte “Profit-Killer” im E-Commerce. Besonders wertvoll – aber oft ungenutzt – sind die Freitext-Kommentare der Kunden. Aussagen wie “Fällt obenrum eng aus aber an der Hüfte zu weit” lassen sich mit einfachen Excel-Filtern oder klassischen Keyword-Such-Algorithmen (RegEx) kaum erfassen. Oft scheitern starre Regeln schon an Tippfehlern (“zu kleib”) oder Nuancen.

In diesem Projekt habe ich eine lokale KI-Pipeline entwickelt, die diese Kommentare semantisch versteht und automatisch kategorisiert.

Die Architektur

Statt externe APIs wie OpenAI zu nutzen (was Datenschutzfragen aufwirft), betreibe ich das Modell lokal mittels LM Studio. Diese Software stellt einen OpenAI-kompatiblen Server bereit, den wir mit Python ansteuern können.

  • Software: LM Studio (Server)
  • Modell: Qwen 2.5 14B Instruct (Hervorragende Leistung in Deutsch, Quantisiert)
  • Schnittstelle: Python Script

1. Technische Umsetzung

Die Anbindung erfolgt über die Standard-Python-Bibliothek, da LM Studio die API-Struktur von OpenAI emuliert. Dies macht den Code extrem portabel.

from openai import OpenAI
import pandas as pd
import tqdm

# Verbindung zum lokalen LM Studio Server
# Vorteil: Keine Kosten, volle Datenhoheit & Datenschutz
client = OpenAI(base_url="http://127.0.0.1:1234/v1", api_key="local-deployment")

def classify_smart(comment):
    # Optimierter System-Prompt für präzise Klassifikation im JSON-Format
    system_prompt = """You are a Senior Quality Assurance Analyst for an E-Commerce brand.
    Your task is to analyze unstructured customer return feedback and identify the root cause.
    
    Classify the text into exactly one of the following technical categories:
    - FIT_ISSUE_SMALL (Indicates item is smaller/shorter/tighter than expected)
    - FIT_ISSUE_LARGE (Indicates item is larger/longer/looser than expected)
    - QUALITY_DEFECT (Material issues, stitching, damaged updates, odors)
    - VISUAL_DISCREPANCY (Color or style does not match product photos)
    - PREFERENCE (Customer simply didn't like it, no objective fault)
    - OTHER (Everything else)

    Responds strictly with the category name only."""
    
    try:
        response = client.chat.completions.create(
            model="model-identifier", # Nutzt das aktuell geladene Modell (z.B. Qwen 2.5)
            messages=[
                {"role": "system", "content": system_prompt},
                {"role": "user", "content": f"Feedback: '{comment}'"}
            ],
            temperature=0.0 # Temperatur 0 für maximale Determinismus
        )
        return response.choices[0].message.content.strip()
    except Exception as e:
        return "ERROR"

# Laden der Daten
df = pd.read_csv('retouren_rohdaten.csv')

# Analyse eines Beispiel-Kommentars
sample = "Dachte das blau wäre heller, außerdem kratzt die Wolle."
print(f"Input: {sample}\nKategorie: {classify_smart(sample)}")
# Output: QUALITY_DEFECT (Priorisierung von Defekten vor optischen Mängeln)

2. Skalierung & Integration (n8n)

Dies ist ein vereinfachtes Code-Beispiel (“Proof of Concept”). In einer produktiven Unternehmensumgebung würde man dieses Skript idealerweise in eine Automatisierungs-Plattform wie n8n integrieren.

  • Workflow: Shopify Webhook (Neue Retoure) -> n8n -> LM Studio API Request -> Google Sheets / Datenbank.
  • Performance: Moderne quantisierte Modelle (z.B. Qwen 2.5 14B mit 4-bit Quantisierung) sind mittlerweile extrem performant und bieten ein Verständnis, das oft über kommerzielle Cloud-Lösungen hinausgeht.
# Iteration über den DataFrame mit Fortschrittsbalken
df['ai_category'] = [classify_smart(c) for c in tqdm.tqdm(df['customer_comment'])]

# Aggregation der Ergebnisse
report = df.groupby(['product_sku', 'ai_category']).size().unstack().fillna(0)

Business Value & Ergebnisse

Der Einsatz des LLMs liefert nicht nur “Daten”, sondern Handlungsanweisungen:

  1. Kontext-Verständnis: “Passt eigentlich gut, aber nach dem Waschen total verzogen” wird korrekt als QUALITY_DEFECT erkannt, während Keyword-Suchen oft nur auf “Passt” reagieren würden.
  2. Identifikation verdeckter Mängel: Wir bemerkten bei einer Jacke eine Häufung von “Reißverschluss hakt ständig”. Da dies kein klassisches Filter-Keyword war, blieb es vorher unbemerkt.
    • Maßnahme: Reklamation beim Lieferanten mit konkreten Zahlen (“12% Defektquote beim Zipper”).
    • Resultat: Gutschrift vom Hersteller und Austausch der Charge.
  3. Content-Loop: Produkte mit hoher FIT_ISSUE_SMALL Rate werden automatisch geflaggt, damit das Content-Team den Hinweis “Fällt klein aus” im Shop ergänzt.

Fazit

Daten sind nutzlos, wenn sie keine Entscheidungen treiben. Mit lokalen Modellen wie Qwen können Kaufleute mächtige Intelligence-Tools bauen, die Retouren nicht nur verwalten, sondern proaktiv verhindern. Das Ergebnis: Echte Profitabilität durch weniger Rücksendungen und bessere Lieferanten-Qualität.