Reply Queue

A task list of emails waiting on your reply — Postbox detects unanswered asks, ranks them by urgency and age, and clears them the moment you respond.

The Reply Queue turns "emails I still owe an answer" into a task list. Postbox watches your personal mail for messages that are waiting on you — addressed to you directly, from a real person (not bulk/no-reply mail), with no later reply from you in the thread — and lists them in one place, ranked by urgency and then by how long they've been waiting.

Open it from the Reply Queue entry in the Postbox folder rail (it carries a count badge), or from the "waiting on your reply" strip that appears at the top of the inbox while the queue is non-empty. The strip is dismissible for the session.

What a queue item shows

Each item is a compact task card:

  • Sender — name and avatar
  • Headline — with AI enabled, a one-line summary of what they're asking; without AI (or if the AI call fails), the message subject
  • Due hint — when the message states a deadline (AI-detected), a small "Due …" chip
  • Snippet — the latest thread snippet

Actions

  • Open — jump to the conversation (also Enter)
  • Draft reply — asks the AI for a starter reply and opens the composer prefilled above the quoted original; you always review and send yourself
  • Done — manually clear the item without replying
  • Snooze — hide it until later using the regular snooze picker (also h)
  • Archivee archives the message and clears the item

The queue keeps itself honest: replying to a thread from anywhere (webmail or a connected IMAP client), archiving or trashing it, all clear the item live — no manual refresh. When the last item clears, you get a quiet "All caught up" state.

Keyboard navigation matches the rest of Postbox: j/k move, Enter opens, e archives, h snoozes.

Detection and AI

Detection is two-stage:

  1. A deterministic heuristic flags candidate threads: the latest inbound message puts you in To (not just Cc), the sender isn't a no-reply/bulk source (List-Unsubscribe, Precedence: bulk, no-reply addresses), and you haven't sent a later message in the thread.
  2. With the ai feature flag enabled, a cheap-tier AI pass refines each candidate: whether it truly needs a reply, its urgency (which drives the ranking), the one-line ask summary, and any stated deadline.

The AI layer is advisory and fails soft — if it's disabled or errors, the deterministic queue still works with subjects as headlines and normal urgency. Message content is treated as untrusted data in the AI prompts, and the AI never sends or modifies mail on its own.

"Needs your input" — the clarification loop

Sometimes a good reply is blocked on one fact only you can supply — a yes/no decision, which date works, a price. Rather than draft a confident guess, Postbox can ask you first. When the AI pass decides a candidate reply hinges on such a fact — and a second, higher-quality confirmation agrees the answer is genuinely open (independently drafted replies disagree on it) — the thread moves into a distinct Needs your input section at the top of the queue.

A "Needs your input" card shows the question with:

  • Scoped chips — suggested answers you can pick in one tap (e.g. Yes / No), plus
  • A free-text box — type your own answer instead.

Each question is attributed to the email it came from ("Generated from an email from sender-domain — Owlat will never ask for your password"), and Owlat deterministically drops any question that fishes for a credential or one-time code — it will never relay a phishing prompt from inbound mail.

Answer it and the card flips Needs your input → Draft ready: Owlat writes a starter reply that folds in your confirmed answer (and your learned writing voice, if enabled). Open draft drops it into the composer over the quoted original — you always review and send yourself.

This whole loop is advisory and fails soft: with AI off, or if any step errors, there's simply no "Needs your input" card and the thread stays an ordinary "Needs you" item. Nothing here ever sends mail on its own.

Draft-on-arrival — review & send

With the postbox.aiDraft flag on, Postbox goes one step further than "Draft reply": the moment a message that needs a reply lands — or the moment you answer a "Needs your input" question — it pre-generates a reply into a review slot on the queue row, so you're never staring at a blank composer.

This runs the same shared draft service the AI agent uses on the B2B shared inbox: it drafts a grounded reply, then a second quality self-check scores the draft (completeness, grounding, tone-fit), and on lower-confidence cases it also offers a couple of alternative drafts to pick from.

The row then shows a Draft ready card with:

  • a confidence badge — the quality self-check score, or Unverified when that check couldn't run;
  • any self-check flags worth skimming before you send (e.g. missing order number);
  • a short preview of the draft, and an option count when alternatives were generated;
  • Review & send — opens the composer prefilled over the quoted original; and Dismiss — hides just the draft.

Human review only. The review slot never sends on its own — Review & send opens the composer for you to read, edit, and send. The whole thing fails soft: with AI off, no provider configured, a prompt-injection re-scan trip, or any generation error, no slot is written and the plain "Needs you" row renders exactly as before. A newer message in the thread supersedes a stale draft rather than showing it.

Reply reminders ("remind me if no reply")

The queue is about mail you owe a reply to. The mirror image — mail you're waiting on a reply for — is handled by reply reminders. Set one on a message you've sent and Owlat quietly watches the thread; if nobody replies by your deadline, it pulls the thread back to the top of your inbox so it doesn't slip.

This is deterministic — no AI involved.

You can arm a reminder two ways:

  • On send — flip Remind me if no reply in the composer footer and pick a deadline. The reminder is armed on the message the moment it's sent.
  • After the fact — open a sent message (or the thread it's in) and click the quiet Remind me if no reply button on the reader. It's only offered when the newest message in the thread is one you sent.

While a reminder is armed, the thread shows a Reply reminder · <date> chip; click its ✕ to cancel.

What happens at the deadline:

  • A reply arrived first — any inbound message into the thread (except spam/trash-routed mail) clears the reminder silently. The reply you wanted came, so there's nothing to nag about.
  • No reply by the deadline — the sweep resurfaces the thread exactly once: the watched message moves back into your Inbox, is marked unread and flagged, and the thread floats to the top. The reminder chip turns into an amber No reply yet state, and the thread is also injected into the Reply Queue as a "You're waiting on <name>" item. Dismiss it with the chip's ✕.
Feature flags

The Reply Queue ships with Postbox (postbox or mail.external). The ask summaries, urgency ranking, due hints, "Draft reply", and the "Needs your input" clarification cards require the ai feature flag; without it the queue is purely deterministic. Draft-on-arrival (the pre-generated "Draft ready" review slot) additionally requires postbox.aiDraft — off by default, and forced off whenever postbox or ai is off.