The loop is always the same: connect → propose → review → apply → undo → learn. The Postman does the first and the sorting; you do the deciding.
1. Connect
Sign in to Gmail with Google, or to Outlook / Microsoft 365 with Microsoft. Sign-in happens on their pages; your password is never shared with the app. The permission requested is the smallest that allows creating folders and moving messages (gmail.modify or Mail.ReadWrite). You can revoke it at any time from within the app or from your Google or Microsoft account settings.
2. Propose
The Postman takes a snapshot: your folder or label structure, and the metadata of recent messages. This is the complete list of what it is shown:
- Sender name and email address
- Subject line
- Date received
- Current folder or label
- Read / unread and flagged status
- Your folder and label structure
And what it is never shown, fetched, or stored:
- Message bodies — the text of your emails
- Attachments
- Full thread or conversation content
- Anything in Trash
From that snapshot, your sorting rules (a plain-language document you can edit), and a built-in library of filing best practices, the assistant drafts a plan: folders to create or rename, and messages to move — each with a one-line reason. The plan must come back as structured data, which is what lets you swap the underlying model freely.
3. Review
You see your mailbox before and after, side by side. Every proposed operation starts as proposed and stays that way until you act on it. Approve it, decline it, or edit the destination. Approve everything in one go if the plan looks right. Nothing has touched your real mailbox yet.
Some moves carry a needs attention marker — mail that looks like it wants a reply from you. Those are gathered in the Priority Box so they don't get filed away and forgotten. The reply deadline is estimated from the same metadata; no message content is involved.
4. Apply
Approved changes are pushed to Gmail or Outlook through their official APIs. Before pushing, a fresh snapshot is taken and each change is dry-run against it. If mail moved or a folder vanished since the proposal, that change is skipped and flagged rather than forced. Changes that go through are recorded as a commit, together with their pre-computed inverse.
5. Undo
Any commit can be reverted in one click. The stored inverse operations are run through the same conflict-checked pipeline. "Restore to here" reverts every later commit, newest first. Mail that arrived after a cleanup is deliberately left where it is.
6. Learn
Declined and edited suggestions are remembered and fed into the next proposal. When you have given enough feedback, you can ask the Postman to rewrite your sorting rules to match — and that rewrite is itself shown to you for approval before it takes effect. What it learns is a readable document, not hidden model weights, so it survives switching AI providers.
Safety rules enforced in code
These are not instructions to the model that it might ignore. They are constraints in the engine and the mailbox adapters, covered by the test suite:
- Messages are never deleted. There is no delete-message operation in the app at all.
- Removing a folder moves its remaining contents somewhere else first, then removes the empty folder.
- System folders — Inbox, Sent, Drafts, Trash, Spam — can never be renamed or removed.
- Trash is excluded from every snapshot. Mail you threw away is never read or reasoned about.
- Spam is a destination, not a source. Suspected junk can be filed there; nothing is ever moved out of it.
- Every push is checked against a fresh snapshot. If your mailbox changed in the meantime, the conflicting change is skipped and flagged, never forced.
- The inverse of every change is recorded before anything is applied, so any cleanup can be reverted.
Who runs the assistant
The AI is model-agnostic. You can bring your own key for OpenAI, Anthropic, or Google, point the app at any OpenAI-compatible endpoint you control (including a model you host yourself), or use the managed assistant, which runs on Google Vertex AI (Gemini) inside our own cloud project and is never used to train models. In every case the model receives the metadata summary above and nothing more.
Filing hours
Like a postman who comes at the same time each day, the app can check in at hours you set and let you know when it is worth a look. It still never applies anything without you.