Skip to content

Sender view

Other email clients reason over messages. mxr also reasons over people. The sender view answers questions like:

  • Who emails me most?
  • Who do I reply to fastest?
  • Which senders have I left hanging?
  • Did this person ask me anything I haven’t responded to?

These questions are cheap when your archive is on disk and indexed. They’re impossible when your archive is behind a third-party API and a per-call quota.

Terminal window
mxr sender alice@example.com

Prints a profile:

  • Volume — messages over time, inbound vs outbound
  • Cadence — median response latency in both directions, both clock-time and business-hours
  • Open threads — threads where the most recent message is theirs and you haven’t replied
  • Open commitments — questions you’ve asked them, sorted by age
  • Recent activity — the last N exchanges
Terminal window
mxr sender alice@example.com --format json | jq .
Terminal window
mxr stale --mine --older-than-days 7 --format json \
| jq -r '.threads[] | "\(.days_stale)\t\(.subject)"' \
| head

Then run mxr sender <email> on each to confirm before triaging.

Pick the “biggest” senders interactively

Section titled “Pick the “biggest” senders interactively”
Terminal window
mxr storage --by sender --format jsonl \
| jq -r '"\(.size_bytes)\t\(.label // .key)"' \
| sort -rn \
| fzf --header='bytes | sender' \
| awk '{print $2}' \
| xargs mxr sender

storage ranks senders by data weight; sender opens their profile.

Terminal window
mxr search 'newer_than:1d' --format json \
| jq -r 'group_by(.from)
| map({sender: .[0].from, count: length, latest: max_by(.date).subject})
| sort_by(-.count) | .[]
| "\(.count)\t\(.sender)\t\(.latest)"'

Inside the TUI, open the sender profile modal for the focused message:

  • Ctrl-p (palette) → “Sender View”
  • The modal shows the same profile sections plus “Open in CLI” — copies the equivalent mxr sender ... invocation to the clipboard.

A sender profile is the most useful single context an LLM can have when drafting a reply or evaluating a triage candidate:

Terminal window
mxr sender alice@example.com --format json \
| claude -p "Based on cadence and recent threads, draft a friendly nudge if she's overdue."

The agent gets relationship shape as JSON, without needing to read every email.