Postwell — product requirements
Postwell is a web email client with a folder and label sidebar showing unread counts, threaded conversations, star and flag markers, bulk actions, search operators, a compose window with recipient chips, Cc/Bcc, attachments, draft autosave and a 5-second undo-send, snooze with presets and a date picker, and settings for signature, vacation responder and labels. The product clock is fixed at Monday 19 Oct 2026 09:30 UTC.
Problem. People who handle a busy inbox need to triage quickly, find mail precisely and send messages with confidence, and must be able to trust the unread counts, the folder contents and who actually sees a message.
Users
- Busy professional — Triage the inbox with bulk actions, snooze and keyboard shortcuts.
- Sender — Compose, attach, save drafts and retract a message within the undo window.
- Organiser — Keep mail sorted with labels and find anything with search operators.
Goals
- Badges and unread counts always match the number of unread conversations they describe.
- Every selected conversation is acted on; none is silently skipped.
- Blind-copied recipients are never revealed to other recipients.
- Invalid input is rejected with a specific message before anything is sent or saved.
Out of scope
- Real mail delivery
- Mobile apps
Contents
Sign-in
Access to the mailbox.
- The sign-in page is headed "Sign in to Postwell" with Email and Password fields
- After sign-in the URL is /mail/inbox, the heading is "Inbox" with "9 unread"
- Sidebar badges: Inbox 9, Drafts 2, Spam 1
- The browser tab title starts with "Inbox (9)" and ends with "Postwell"
- Empty form: "Enter your email and password"
- Wrong password: "Invalid email or password" and the form stays
Folders and lists
Sidebar folders, list rows and paging.
- Sent (/mail/sent): 6 conversations including "Meeting notes follow-up"
- Drafts: "Thank you for the intro" and one with no subject
- Archive: "Signed: office lease addendum" and "Trip recap: Lisbon"
- Spam: "You have won a free cruise!!!" and "Limited offer: cheap watches"
- Trash: "Old newsletter: September edition" and an "Empty Trash now" button
- Starred: "Re: Vendor shortlist for the print run", "Photos from Saturday", "Dinner reservation confirmed"
- "Daniel Moss, Q4 roadmap review — agenda": bold, important marker, "Work" chip, count 2
- "Stayfold Billing, Invoice 4471 for October hosting": paperclip and "Receipts" chip, time not weekday
- "Re: Vendor shortlist for the print run": not bold, star filled
- "Page 1 of 2 · 27 conversations" with the older-page button enabled
- Page 2 shows 2 rows and the next button is disabled
Reading and markers
Open conversations, read state, star and flag.
- Opening "Lunch on Thursday?": row no longer bold; Inbox badge and header go from 9 to 8
- Opening "Contract draft needs your signature" next gives 7
- The pane shows Reply, Reply all and Forward
- Mark "Photos from Saturday" unread: row bold, badge and header 10; Mark as read: 9
- Marking "Lunch on Thursday?" read: 8
- Starring "Receipt for your coffee order" makes Starred 4; unstarring "Photos from Saturday" leaves 3
Archive, spam and trash
Move conversations between folders, singly or in bulk.
- Archiving "Parking permit renewal", then Undo, restores the row; archiving again leaves Archive with 3 conversations
- Selecting "Library books due soon", "Weekend plans" and "Parking permit renewal" and archiving removes all three from the Inbox
- Archive then lists 5 conversations (the 3 plus the 2 seeded)
- Toast "Conversation moved to Trash"; Trash lists "Weekend plans" and "Old newsletter: September edition"
- "Empty Trash now" opens a confirmation; Cancel keeps both
- Confirming empties Trash and shows its empty-state message; "Weekend plans" is not in the Inbox
- "Receipt for your coffee order" leaves the Inbox; Spam lists 3 while its badge stays 1
Snooze
Hide a conversation until a chosen time.
- The menu offers presets and "Pick date and time (UTC)"
- Toast starts "Snoozed until" and ends "UTC"
- Snoozed lists "Passport renewal form" (due Wed, Oct 21, 8:00 AM) and the new item
- 2026-10-18 08:00 shows "Snooze time must be in the future" and the row stays in the Inbox
Labels
Apply labels and manage them in Settings.
- Menu lists Work, Personal, Receipts, Travel and Team
- Choosing Personal adds a green chip; the Personal sidebar list includes the conversation; removing it deletes the chip
- Settings > Labels lists Work, Personal, Receipts, Travel, Team
- Creating "Clients" in Red shows toast "Label created" and it is the sixth label
- Delete opens "Delete label?" (the label will be removed from all conversations); confirming shows "Label deleted" and five labels remain
- Empty: "Label name is required"
- "work": A label named "work" already exists
- A 23-character name: "Label name can be at most 20 characters"
Search
Free text and operators from:, to:, subject:, label:, has:attachment, is:unread.
- from:priya: "Q4 roadmap review — agenda", "Budget v3 — comments inside", "Welcome aboard, Lucas"
- is:unread: 9 conversations
- subject:invoice: "Invoice 4471 for October hosting"
- Free text "budget": "Budget v3 — comments inside" and "Re: Hiring plan for Q1"
- 7 conversations, each with a paperclip, including "Floor plan v3 for the new studio" and "Signed: office lease addendum"; "Lunch on Thursday?" is not listed
- from:leo has:attachment returns only "Team offsite photos (zip)"
Compose and send
New messages, undo send, validation, attachments, drafts, reply and Bcc.
- Compose (button or "c") opens with the body ending "-- " and the signature name
- Send shows a toast counting down 5 seconds with Undo
- After the countdown the message is the newest in Sent and Sent grows from 6 to 7; the body has the typed text and the signature
- No conversation with that subject appears in Sent; Sent still has 6
- No recipient: "Add at least one recipient"
- Malformed chip text: “not-an-email” is not a valid email address
- No subject and no body: "Add a subject or a message before sending"
- A large file shows that it "is larger than 10.0 MB" and is not attached
- Six files show "You can attach at most 5 files"
- Status reads "Draft saved"; "Save and close" adds the draft so Drafts shows 3 and its badge is 3
- Reopening shows the saved subject; "Discard draft" returns Drafts to 2
- Reply to "Lunch on Thursday?" opens a box addressed to Hana Kobayashi with subject "Re: Lunch on Thursday?"
- After sending, the conversation has 2 messages and the latest is from the signed-in user
- In Sent the To line lists only the To recipients; the Bcc address does not appear there
Settings
Signature and vacation responder.
- Settings (/mail/settings/general) shows the Signature tab and a counter "n / 200"
- Saving shows toast "Signature saved"; new Compose bodies end with "-- " and the new signature
- 201 characters turns the counter red and shows "Signature can be at most 200 characters"
- Messages in order: "Vacation subject is required", "Vacation message is required", "Choose the first day"
- First day 2026-10-30 with last day 2026-10-26 shows "Last day must be on or after the first day" and nothing is saved
- First 2026-10-26 and last 2026-10-30 saves with toast "Vacation responder is on"
Keyboard shortcuts
Act on the list without a mouse.
- j three times then o opens the third conversation "Lunch on Thursday?"; e shows "Conversation archived"
Non-functional requirements
Glossary and rules
| Conversation | A thread of one or more messages shown as one row. |
|---|---|
| Undo window | The 5 seconds after Send during which the message can still be cancelled. |
| Product clock | Time is fixed at Mon 19 Oct 2026 09:30 UTC for every date rule. |