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 | extractInvoice → archiveInvoice → createBookingEntry |
| „Wo ist meine Bestellung 12345?" | Slack #support |
| „Verdienen Sie 10.000 € pro Monat!" | Keine Aktion |
Erweiterungen
- Lernkurve: bei
sonstigesmehrfach 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
saveApplicationprüfen, ob Name+E-Mail schon in Dropbox existiert - Wochenstatistik: pro Klassifikation zählen, in einem KPI-Dashboard zeigen