An Explainable Email Triage Engine that transforms overloaded inboxes into action-oriented workflows.
This is a local PowerShell script that sorts a chaotic Outlook inbox into a layered folder architecture. It runs against the Outlook Desktop COM object on your machine — no credentials, no cloud, nothing leaves your computer.
Case Study: In local testing on an 8,100+ email backlog, Email DeMessifier safely isolated high-value recruiting and technical alerts, reducing the primary inbox volume by 78% without a single false positive on unknown personal contacts.
- Domain-anchored matching: Every rule matches
@...domain$, so a sender is routed on its real domain, never on a keyword sitting in a display name. A phishing email fromsecurity-noreply@evil.xyzwill not match a@linkedin.comrule. - Layer 0 Phishing Quarantine: Actively traps obvious display-name spoofing (e.g. an email claiming to be "PayPal Support" sent from a
@gmail.comaddress) into a0_Bait_Prospectsquarantine folder. - Security first: A bank's "unusual sign-in" alert routes to
1_Action\Security, notBanking, because the security rules run first. - Unknown stays visible: Anything no rule matches is left in the Inbox. The system files what it's sure about and leaves the rest for human eyes.
- Zero auto-read: Unread counts are never altered. The script organizes mail; it does not pretend you've read it.
- Dry run by default workflow: Run with
-DryRunfirst. It writesClassification_Report.csv(Subject, Sender, CurrentFolder, ProposedFolder) and moves nothing. Eyeball it, adjust the rules, repeat — then run live. - Real rollback: A live run stamps every moved item with a
Migrated_YYYY_MM_DDcategory. Using the-Undoswitch walks the whole store and moves those items back to the Inbox. One command, fully reversible. - No silent failures: Errors are caught and written to
demessifier_run_log.csv; the script tells you exactly what failed.
- Windows OS
- Microsoft Outlook Desktop Application (must be installed, open, and synced).
- Note: It actively bypasses Exchange
EX:/O=string formatting to extract true SMTP addresses automatically.
# 1. Always preview first — writes the report, changes nothing:
.\Email-DeMessifier.ps1 -TargetAccount "you@example.com" -DryRun
# 2. When the report looks right, run live:
.\Email-DeMessifier.ps1 -TargetAccount "you@example.com"
# 3. Changed your mind? Reverse the entire run:
.\Email-DeMessifier.ps1 -TargetAccount "you@example.com" -Undo -UndoCategory "Migrated_2026_06_13"All routing lives in the $rules array near the top of the script. Add your own domains to the relevant DomainSet(...) list. Keep the anchors intact — add domains, don't loosen the @...$ matching, or you reopen the door to keyword-collision misroutes.