TaskMonkey Handbuch

Rezept: Posteingang-Triage

Eingehende Mails klassifizieren, Anhänge in Cloud sortieren, Tickets in CRM zuweisen.

Eine zentrale Mail-Adresse ist der Eingang für alles: Bestellanfragen, Bewerbungen, Lieferantenmails, Rechnungen, Spam. Die Plattform sortiert automatisch und legt jeweils das passende Folge-Aktion an.

Ziel

  • Mail kommt rein → Plattform liest, klassifiziert
  • Bestellanfrage → Lead in Supabase
  • Bewerbung → PDF-Anhang in Dropbox unter /HR/Bewerbungen/<JJJJ-MM>/, Notiz an HR
  • Lieferantenmail mit Rechnung → Eingangsrechnungs-Workflow
  • Spam → still ignorieren
  • Sonstiges → Slack-Hinweis

Das ist im Grunde ein Router vor mehreren spezialisierten Workflows.

Voraussetzungen

  • Workspace-Email-Adresse beim Betreiber eingerichtet
  • Zielsysteme angebunden: Supabase (für Leads), Dropbox (für Bewerbungen), Slack (für Hinweise)

1. Tools — bestehende wiederverwenden

Du nutzt hauptsächlich Tools, die du in anderen Rezepten schon hast oder Shared-Tools:

  • createLead (siehe Lead-Pipeline)
  • extractInvoice, archiveInvoice, createBookingEntry (siehe Eingangsrechnungen)
  • uploadToDropbox (Shared)
  • notifySlack (selbst angelegt)

Plus ein neues Hilfs-Tool:

tools/hr/saveApplication.php:

<?php
return [
    'tools' => [
        'saveApplication' => [
            'description' => 'Speichert eine Bewerbung (PDF) in Dropbox und schickt HR eine Notiz.',
            'parameters' => [
                'type' => 'object',
                'properties' => [
                    'applicantName' => ['type' => 'string'],
                    'applicantEmail' => ['type' => 'string'],
                    'pdfBase64' => ['type' => 'string'],
                    'pdfName' => ['type' => 'string'],
                    'position' => ['type' => 'string', 'description' => 'Beworbene Stelle, falls genannt'],
                ],
                'required' => ['applicantName', 'pdfBase64', 'pdfName'],
            ],
            'handler' => function (array $results, array $args, array $ctx): array {
                $month = date('Y-m');
                $name = preg_replace('/[^a-zA-Z0-9_-]/', '_', $args['applicantName']);
                $path = "/HR/Bewerbungen/{$month}/{$name}_{$args['pdfName']}";

                $upload = $ctx['runTool']('uploadToDropbox', [
                    'path' => $path,
                    'content' => base64_decode($args['pdfBase64']),
                ]);

                $ctx['runTool']('notifySlack', [
                    'channel' => 'hr',
                    'text' => "📋 Neue Bewerbung von *{$args['applicantName']}* ({$args['applicantEmail']})\n"
                        . ($args['position'] ? "Position: {$args['position']}\n" : "")
                        . "→ {$upload['shareUrl']}",
                ]);

                return ['saved' => true, 'path' => $path];
            },
        ],
    ],
];

2. Email-Prompt als Router

email.php:

<?php
return [
    'email.prompt' => <<<PROMPT
    Du bist der Posteingangs-Assistent. Klassifiziere jede eingehende
    Mail und leite die richtige Aktion ein.

    Schritt 1: Klassifikation in eine von:
    - bestellanfrage      (Interesse an Produkten/Dienstleistungen)
    - bewerbung           (Job-Bewerbung, oft mit PDF-Lebenslauf)
    - eingangsrechnung    (Lieferanten-Rechnung, meist mit PDF)
    - lieferanten-info    (Bestätigungen, Versandavise, Newsletter)
    - kundensupport       (Frage zu bestehender Bestellung/Service)
    - spam                (Werbung, Phishing)
    - sonstiges           (alles andere)

    Schritt 2: Aktionen je Klassifikation:

    bestellanfrage:
    - createLead mit Score (1-10), kurzer Zusammenfassung im interest-Feld

    bewerbung:
    - PDF-Anhang als pdfBase64 an saveApplication übergeben
    - Stellenbezeichnung extrahieren wenn möglich
    - applicantName aus Body oder Anhang-Inhalt nehmen

    eingangsrechnung:
    - Workflow Eingangsrechnungen ausführen:
      extractInvoice → archiveInvoice → createBookingEntry

    lieferanten-info:
    - Keine Aktion. Wird automatisch archiviert.

    kundensupport:
    - notifySlack channel='support' mit Mail-Zusammenfassung und Absender

    spam:
    - Keine Aktion.

    sonstiges:
    - notifySlack channel='allgemein' mit kurzer Zusammenfassung,
      damit ein Mensch entscheiden kann.

    Antworte am Ende mit der Klassifikation und der durchgeführten
    Aktion in einem Satz.
    PROMPT,
];

3. Tool-Allowlist

Ergänze in derselben email.php:

<?php
return [
    'email.tools' => [
        'createLead',
        'saveApplication',
        'extractInvoice',
        'archiveInvoice',
        'createBookingEntry',
        'uploadToDropbox',
        'notifySlack',
    ],
];

4. Testen

Verschiedene Test-Mails schicken — jede Kategorie einmal — und in tm monitor schauen, dass die richtigen Tools laufen:

Test-Mail Erwartung
„Hi, wir interessieren uns für Ihr Produkt …" createLead mit hohem Score
Mail mit lebenslauf.pdf und „Bewerbung Backend-Entwickler" saveApplication, Slack #hr
Lieferantenrechnung mit Rechnungs-PDF extractInvoicearchiveInvoicecreateBookingEntry
„Wo ist meine Bestellung 12345?" Slack #support
„Verdienen Sie 10.000 € pro Monat!" Keine Aktion

Erweiterungen

  • Lernkurve: bei sonstiges mehrfach pro Woche prüfen — ggf. neue Kategorie ergänzen
  • Auto-Reply für Bestellanfragen: zusätzliches Tool, das eine kurze Bestätigung schickt
  • OCR für gescannte Bewerbungen: wenn PDFs nur Bilder enthalten, das Modell direkt schauen lassen
  • Doppelte Bewerbungen erkennen: vor saveApplication prüfen, ob Name+E-Mail schon in Dropbox existiert
  • Wochenstatistik: pro Klassifikation zählen, in einem KPI-Dashboard zeigen
Zuletzt aktualisiert: 2026-04-20