Skip to content

Inbox Manager

Inbox Manager — autonome Triage für deinen Outlook-Posteingang

Section titled “Inbox Manager — autonome Triage für deinen Outlook-Posteingang”

Inbox Manager liest deine M365-Inbox alle paar Minuten, klassifiziert jede neue Mail in eine von acht Kategorien, draftet wo sinnvoll eine Antwort in deiner Schreibweise, eskaliert was eskaliert werden muss, und übergibt Angebotsanfragen automatisch an den Office Assistant für die PDF-Erstellung. Du siehst nur noch das was wirklich deine Aufmerksamkeit braucht.

Jede eingehende Mail durchläuft drei Schritte:

  1. Klassifizierung in eine von 8 Kategorien:
    • URGENT — zeitkritisch, expliziter Action-Request
    • LEAD — echter Interessent fragt nach deinem Produkt
    • OFFER_REQUEST — konkrete Angebots- oder Quote-Anfrage
    • INVOICE — Rechnung, Zahlungsbestätigung, Mahnung
    • SUPPORT — bestehender Kunde hat ein Problem
    • NEWSLETTER — Marketing, Substack, Mailerlite
    • SPAM — Cold-Outreach, “want to connect”, Pitch
    • FYI — interne Mail, Bot-Notification, alles andere
  2. Folge-Aktion je Kategorie:
    • URGENT → Outlook-Draft + Commitment im Inbox-Center
    • LEAD → lead_qualified-Event (Sales-Folge-Apps konsumieren)
    • OFFER_REQUEST → Office Assistant erzeugt PDF-Quote, Draft mit PDF-Anhang landet in Outlook
    • INVOICE → invoice_received-Event (Buchhaltung)
    • SUPPORT → empathischer Reply-Draft in Outlook
    • NEWSLETTER / SPAM / FYI → nur protokolliert, keine Aktion
  3. Dashboard-Update — Radar-Chart der Tages-Klassifikationen, Mail-Verlauf-Timeline, Top-Sender, alles im App-UI sichtbar.

Die Drafts landen direkt in deinem Outlook-Drafts-Ordner — du reviewst + sendest. Inbox Manager schickt selbst keine Mails ohne deine Freigabe.

  1. M365 verbinden unter Settings → Integrations. Die App braucht mail.read + mail.send, plus document.draft + document.render für die OFFER_REQUEST-PDFs. Aktivierung schlägt fehl wenn M365 nicht verbunden ist — du bekommst einen Link nach /user/integrations.

  2. Office Assistant installieren (automatisch empfohlen). Die bilateral Cross-App-Wire wird beim Activate auto-approved — keine manuelle Workspace-Control-Freigabe nötig.

  3. Inbox Manager aktivieren vom Marketplace. Die Aktivierung resolved automatisch deine M365-Email-Adresse + Tenant-User-UUID in die install_settings — du musst nichts manuell eintragen.

  4. Brand Voice wählen im Settings-Tab. Vier Presets stehen zur Auswahl:

    • Direkt & freundlich, DE/EN je nach Absender (Default)
    • Förmlich (Sie-Form), vollständige Sätze
    • Locker & persönlich (Du-Form)
    • English · direct · concise · no fluff

    Oder “Custom” + eigene Stil-Beschreibung. Die replier-Agent nutzt das verbatim für alle Drafts.

  5. (Optional) Shared Room ID setzen — wenn gesetzt postet der summarizer-Agent abends einen 5-Zeilen Digest in den Raum (“Heute 47 Mails handled, davon 12 Newsletter, 3 Urgent, 1 Lead qualified…”).

  • Alle 5 Min (konfigurierbar 5-1440 Min) sweept Inbox Manager deine M365-Inbox via Graph API, schaut auf die letzten 30 Min (lookback-window), schließt deine eigene Adresse + bereits handled-Mails aus.
  • Pro Mail läuft die Klassifikation (master-Agent), die Folge-Aktion je Kategorie, dann landet ein activity:<msg_id> Eintrag in ctx.kv für Dashboard + Dedup.
  • Bot-Noise-First-Check: [email protected] / dependabot / CI-Pipelines etc. werden als FYI klassifiziert (auch wenn sie “URGENT” oder “action required” schreiben) — du siehst sie nicht.
  • 18:00 (Cron) postet der summarizer den Tages-Digest in den Shared Room. Wenn nichts klassifiziert wurde → HEARTBEAT_OK und der Run wird unterdrückt.
  • Drafts reviewen in Outlook — Inbox Manager schreibt die Drafts unter deinem Account, die Empfänger-Adresse + Subject sind vorausgefüllt. Du liest, edits ggf., klickst Send.
  • Dashboard checken im App-UI: Radar zeigt die Kategorie-Verteilung des Tages, Timeline zeigt jeden klassifizierten Mail-Event (mit Status: done / error / drafted), Top-Sender ranked nach Volumen.
  • Settings anpassen im rechten Chrome-Panel:
    • Sender-Whitelist → nur diese Absender werden bearbeitet (Pre-Trust-Filter, alles andere wird ignoriert)
    • Sender-Blacklist → diese Absender überspringen (nur wirksam wenn Whitelist leer)
    • Per-Kategorie-Toggles → Häkchen aus = Mail wird klassifiziert aber keine Folge-Aktion (kein Draft, kein Event)
    • Cadence / Lookback → wie oft + wie weit zurück gesweept wird

Wenn eine Mail-Verarbeitung crashen sollte (Graph-API-Hick-up, Office-Assistant nicht erreichbar etc.), landet sie als status: error im Activity-Feed. Klick auf “Retry” im UI startet sie neu — der activity:<msg_id> Key in ctx.kv ist der Dedup-Anker, ein erfolgreicher Retry überschreibt die Error-Row.

Office Assistant (OFFER_REQUEST-Pfad): jeder OFFER_REQUEST geht nicht direkt durch Inbox Manager sondern via ctx.apps.fetch an die Office-Assistant-Routes:

  • POST /documents — erzeugt den Quote-Draft mit Line-Items aus dem Inhalt + ggf. Anhang (Inbox Manager nutzt drawings.analyze falls ein technisches PDF/DXF dranhängt)
  • POST /documents/{id}/transition — schaltet auf “sent” und vergibt die Angebotsnummer
  • POST /documents/{id}/render-pdf — rendert das PDF

Inbox Manager fügt das PDF dann als Anhang an den Reply-Draft in Outlook. Du reviewst PDF + Body, klickst Send.

Events für Sales- + Buchhaltungs-Apps:

  • lead_qualified — wenn LEAD klassifiziert wird, fan-out an alle Apps die’s subscriben (z.B. Sales Guy für ICP-Match-Validierung und ggf. Cadence-Start)
  • invoice_received — wenn INVOICE klassifiziert wird, fan-out an Buchhaltungs-Apps (Odoo / Lexoffice / BC) für Mapping + Reconciliation

Die Wires zu diesen Subscribern müssen vom Tenant in Workspace Control approved werden (kein Auto-Approve außer für die office-assistant-sdk Dependency).

  • Sweep-Frequenz default 5 Min — Mails sind ca. 5-10 Min nach Eingang klassifiziert + ggf. mit Draft im Outlook. Schneller wäre möglich durch on_inbound (Push statt Pull), aber der Cron-Sweep ist robuster bei OAuth-Token-Rotation und Provider-Hick-ups.
  • Drafts in deiner Stimme — der replier-Agent nutzt deinen Brand-Voice-Preset (oder Custom-Text). Wenn die Drafts den falschen Ton treffen, wechsel das Preset oder schreib einen Custom-Text in 2-3 Sätzen.
  • Tenant-isolation — die ganze Activity-History lebt in ctx.kv scoped auf deinen Tenant. Kein anderer Tenant auf der selben Instanz sieht deine Mails.
  • Activity-TTL: 7 Tageactivity:<msg_id> Rows ttl-expire nach einer Woche. Genug Zeit damit ein Freitag-Fehler am Montagmorgen noch im Dashboard sichtbar ist.
  • Bot-Noise wird nicht eskaliert — das ist die wichtigste Single-Improvement-Source nach Klassifikations-Tuning. Wenn dich trotzdem GitHub-Notifications nerven, klassifizier sie händisch im Settings als zusätzliche Patterns (Workaround heute über sender_blacklist).

“Die Mails werden nicht gesweept” — check Settings → Integrations ob M365 wirklich connected ist. Token kann auch nach Login ablaufen — Inbox Manager retried OAuth automatisch, aber wenn der User das Token revoked hat (M365-Portal → App-Permissions), bekommst du 0 Sweeps und keinen Fehler. M365 disconnect + reconnect fixt das.

“OFFER_REQUEST-Drafts haben kein PDF angehängt” — entweder Office Assistant ist nicht installiert (→ Marketplace → install), oder die bilateral Wire ist nicht approved (→ Workspace Control → Wires & Grants). Inbox Manager schreibt den Draft auch ohne PDF weiter, du bekommst aber eine Warning im Activity-Feed.

“Die Drafts klingen falsch” — der replier-Agent nutzt deinen Brand-Voice-Preset. Wechsel im Settings-Tab auf ein anderes Preset (förmlich → locker etc.) oder switch auf “Custom…” und schreib in 2-3 Sätzen exakt wie du klingen willst (“immer in der Du-Form, keine Floskel-Eröffnungen, Sätze unter 15 Wörter”).

“GitHub-Notifications werden trotzdem als URGENT klassifiziert” — sehr selten, weil der Bot-Noise-Check [email protected] etc. hart als FYI klassifiziert. Wenn’s doch passiert: Sender ist wahrscheinlich KEIN noreply sondern z.B. der Repo-Maintainer direkt (= echtes URGENT). Wenn falsch klassifiziert: Issue mit der Mail-Headers + Body öffnen.

“Das Daily Digest postet nicht”shared_room_id Setting muss gesetzt sein (UUID des Rooms). Ohne ID läuft der summarizer zwar, aber findet keinen Empfänger und logged HEARTBEAT_OK ohne Post. Workspace Control → Group Rooms → Room-UUID rauskopieren → Settings einfügen.

“Mein eigenes Brand Voice landet nicht im Draft” — nach Settings- Speichern: nächster Sweep nutzt die neuen Settings (also max. ~5 Min warten). Ältere Drafts in Outlook werden nicht neu geschrieben — nur neue Mails ab jetzt.

This section is auto-generated from the app’s manifest. It updates whenever the app publishes a new version.

  • mail.read
  • mail.send
  • document.draft
  • document.render
  • drawings.analyze
KeyLabelTypeRequired
brand_voiceSchreibweiseselect_or_customno
shared_room_idShared Room IDstringno
my_email_addressMeine Emailstringno
act_as_user_idTenant-User UUID for OAuthstringyes
sender_whitelistAbsender-Whitelisttextno
sender_blacklistAbsender-Blacklisttextno
cadence_minutesSweep-Kadenz (Minuten)numberno
lookback_minutesLookback-Window (Minuten)numberno
cat_urgentKategorie: URGENTbooleanno
cat_leadKategorie: LEADbooleanno
cat_offer_requestKategorie: OFFER_REQUESTbooleanno
cat_invoiceKategorie: INVOICEbooleanno
cat_supportKategorie: SUPPORTbooleanno
cat_newsletterKategorie: NEWSLETTERbooleanno
cat_spamKategorie: SPAMbooleanno
cat_fyiKategorie: FYIbooleanno
  • Inbox Coordinator (default)
  • Reply Drafter
  • Daily Digest
  • lead_qualified
  • invoice_received