Stimmungsanalyse von E-Mails zur Priorisierung im Support oder Vertrieb

Warum das sinnvoll ist

Weil Du nicht alle E-Mails gleich behandeln willst.
Ein Kunde, der freundlich nachfragt, kann warten.
Ein verÀrgerter Auftraggeber nicht.

Mit GPT kannst Du die Stimmung in eingehenden Mails automatisch bewerten lassen.
Outlook + VBA reicht dafĂŒr. Kein Add-In nötig.

Ziel: Stimmung erkennen = besser priorisieren

Die KI soll Dir sagen:
positiv, neutral, negativ
Optional mit Score. Dann kannst Du’s gewichten.

Das geht mit GPT (OpenAI) oder alternativen Modellen (z. B. Hugging Face).

Was Du brauchst

  • Outlook Classic (mit VBA)
  • OpenAI API-Key
  • Ein paar Hilfsfunktionen
  • Eine sinnvolle Zuordnung der Analyse zur Mail (z. B. in Kategorie, Betreff oder UserProperty)

Schritt 1: Mailtext holen

Function HoleMailText() As String
    Dim mail As Outlook.MailItem
    Set mail = Application.ActiveInspector.CurrentItem
    HoleMailText = mail.Body
End Function

Schritt 2: GPT-Analyse starten

Function AnalysiereStimmungGPT(text As String) As String
    Dim http As Object
    Dim json As String
    Dim apiKey As String
    Dim prompt As String

    apiKey = "DEIN_OPENAI_API_KEY"

    prompt = "Analysiere die Stimmung dieser E-Mail: """ & text & """." & _
             " Gib nur JSON zurĂŒck mit den Feldern ""stimmung"" (positiv/neutral/negativ) und ""score"" (-1 bis 1)."

    json = "{" & _
        """model"": ""gpt-4""," & _
        """messages"":[{""role"":""user"",""content"":""" & Replace(prompt, """", "\""") & """}]" & _
    "}"

    Set http = CreateObject("MSXML2.ServerXMLHTTP")
    http.Open "POST", "https://api.openai.com/v1/chat/completions", False
    http.setRequestHeader "Content-Type", "application/json"
    http.setRequestHeader "Authorization", "Bearer " & apiKey
    http.Send json

    AnalysiereStimmungGPT = http.responseText
End Function

Schritt 3: JSON auslesen

Function ExtrahiereFeld(json As String, feldname As String) As String
    Dim sc As Object
    Set sc = CreateObject("ScriptControl")
    sc.Language = "JScript"
    sc.AddCode "function val(j,f){return JSON.parse(JSON.parse(j).choices[0].message.content)[f];}"
    ExtrahiereFeld = sc.Run("val", json, feldname)
End Function

Schritt 4: Ergebnis in Outlook setzen

Kategorie ist simpel. Alternativ kannst Du ein UserProperty oder die FlagColor setzen.

Sub MarkiereMailNachStimmung()
    Dim mail As Outlook.MailItem
    Set mail = Application.ActiveInspector.CurrentItem

    Dim text As String
    Dim json As String
    Dim stimmung As String
    Dim score As String

    text = HoleMailText()
    json = AnalysiereStimmungGPT(text)
    stimmung = ExtrahiereFeld(json, "stimmung")
    score = ExtrahiereFeld(json, "score")

    Select Case stimmung
        Case "negativ"
            mail.Categories = "🔮 Dringend"
        Case "neutral"
            mail.Categories = "🟡 Beobachten"
        Case "positiv"
            mail.Categories = "🟱 Ruhig"
    End Select

    mail.UserProperties.Add "Stimmungs-Score", olText
    mail.UserProperties("Stimmungs-Score").Value = score

    mail.Save
    MsgBox "Analyse abgeschlossen: " & stimmung & " (" & score & ")"
End Sub

Was das bringt

StimmungKategoriePrioritÀt
negativ🔮 DringendHoch
neutral🟡 BeobachtenMittel
positiv🟱 RuhigNiedrig

Du kannst die Farben oder Kategorien anpassen.
Oder die Mails automatisch verschieben, flaggen, eskalieren.

Erweiterungsideen

  • Automatisch auf „Antwort erforderlich“ setzen bei kritischen Mails
  • Score in Spalte der Outlook-Ansicht anzeigen
  • Analyse fĂŒr mehrere Mails in Ordner per Batch
  • Kombination mit GPT-Zusammenfassung der Mail

Was Du beachten musst

  • GPT ist gut, aber nicht unfehlbar
  • Ironie erkennt es nicht zuverlĂ€ssig
  • Zu lange Mails ggf. kĂŒrzen oder Fokus auf letzten Teil legen
  • Antwortzeit 1–5 Sekunden je nach Modell

„Nicht jede E-Mail schreit laut. Aber GPT hört trotzdem, wenn’s brennt.“

Wenn Du sowas brauchst – ich setz Dir das produktiv auf.
Kein Add-In, kein Theater. Nur Outlook und Logik. LĂ€uft.

Keine Antworten

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert