Shared inbox

How Frontier works

Client bug reports and feature requests arrive as mail, or as a Slack mention. This is where that work happens: one queue, already triaged, often already owned, answered back through the door it came in.

Sources

One inbox for every client conversation

Support mail lands in Gmail. A Slack report lands because a project's bot was invited to a channel and @-mentioned. Either way the result is a conversation in the same queue, answered back through the door it came in.

  • Mail and Slack sit in one list. They are never split apart.
  • Inbox opens to Open, Assigned to me, Subscribed, and each mailbox. Sent sits beside it. Compose starts a blank outbound.
  • Under a project: Inbox, Assigned to me, Sent, your saved views, Knowledge, and Resolutions. ⌘K jumps any of these.

Before anyone looks

Already sorted when it hits the list

Within a minute of a client writing in, and with no human involved, the thread has been classified, given a ticket id, filed as a Linear issue, and often handed to an owner. A thread still going through this is invisible — a half-triaged row with badges about to change is worse than one that arrives a few seconds later.

  • Spam is judged first, so junk costs one step rather than four.
  • If a step fails, the message is shown anyway with blank verdicts rather than buried.
  • Acknowledgements go back where the client wrote, quoting the ticket id.

The queue

Pick up the next thread, then get it off the list

Unassigned and Assigned are both open work, split by whether anyone owns it — "nobody has this" is the most important thing a shared queue can tell you, so it gets its own tab. Archive means you are done for now; trash means this is not work. An inbound reply reopens an archived thread and leaves a trashed one alone.

  • Four states: open, snoozed, archived, trashed. A thread is in exactly one.
  • None of this is written back to Gmail or Slack. Frontier is the only writer.
  • Search, filters, saved views, a custom snooze time, bulk undo, and the e / s / # shortcuts move work off the list. Cross-project rows name the project.

Assignment

A rule can own a thread. A person always wins.

An admin writes a rule as one sentence — "Access Issue · urgent → Sarah" — and it acts the moment a thread arrives, before the thread is ever shown. The most specific matching rule wins, once. A rule naming several people rotates, least-recently-assigned.

  • A rule never takes a thread off the person who has it.
  • Junk is never assigned to anybody.
  • A selection already sitting on Unassigned can be handed out in one action.

Notifications

Seven events, all about your work

A mention, an assignment, a client reply, a comment on a thread you own, a snooze that ended, an assigned thread sitting unanswered, a draft a teammate passed you. The Notifications list is the notification — email is a way of telling you about it. "New mail on a project you can access" is deliberately not an event: that is the firehose, and the inbox list already carries it.

  • A mail two minutes later, unless you already opened the thread.
  • Mute email or browser per event under Settings → Notifications.
  • No comment body, message body, or conversation subject ever goes into a mail.

Reading

The client's words and the team's notes in one timeline

Clicking a row opens the thread beside the list. Mail and Slack messages render as the client wrote them; internal comments sit in the same chronology, visually distinct and labelled as visible to your team only. A comment never leaves Frontier.

  • Chips under the subject name who else is looking. A banner says when a teammate is drafting the client reply; you can take it, or pass them your draft.
  • Quoted history collapses; a tall leftover body clamps behind Show full message. Remote images stay blocked until you ask.
  • The info rail holds the ticket, the Linear issue, the source, the sender's history, and the activity feed.

Writing

Reply to the client. Comment to the team.

Reply on the latest message opens a composer above an always-visible comment bar. There is no mode toggle — each audience has its own box. Compose in the sidebar (or ⌘K) starts a new conversation.

  • On mail: From, To, Cc, and Bcc as chips, with contact autocomplete. Reply all is on the latest message.
  • Draft with AI and Insert from Knowledge fill the box from published articles. Templates and macros — archive, snooze, prioritize, or take — drop in from the footer or by typing /.
  • Your signature, or the mailbox's, signs mail. Send later (5 / 10 / 30 min) can be undone until it goes out.

Knowledge

Published facts, and a queue of drafts to verify

Each project has a Knowledge store — short facts about that product, written so a later draft cites what you actually say. Archiving a thread someone answered proposes a resolution: verify it into Knowledge, or skip it.

  • Anyone who can see the project can read its articles. Writing stays admin-only.
  • Draft with AI reads published articles only. Unverified drafts are never cited.
  • Resolutions sits next to Knowledge in the project sidebar, with a count of what is waiting.

Triage and Linear

Triaged, ticketed, and filed before it hits the list

For a relevant message the classifier picks which request types apply, which part of the product it is about, and how urgent. A ticket id like #FUBC-4821 is minted from that, told to the client in the acknowledgement, and prefixed onto the Linear issue title.

  • A person can overrule the spam verdict; their ruling is the one that sticks.
  • The Linear issue carries the triage as labels, and inbound changes come back.
  • A Slack thread arrives with no subject, so one is written for it, once.

Analytics

How the queue is actually doing

Analytics is a report over a date range, not a live list. Volume in and out, how long a client waits for a first reply a person wrote, queue depth, classification, and what each person is holding.

  • A view-only member can read it.
  • A non-admin does not see a colleague's name, including in the CSV.
  • Arriving mail does not refresh it.

Access

Nobody signs themselves up

An admin adds a user by email and hands over a password-reset link. Being allowed to read a project's threads and being allowed to answer its clients are separate rights, so a junior agent can work the queue and leave notes without sending anything to a customer. Admins see every project.

  • None — does not know the project's threads exist.
  • View — read its threads, and leave internal comments.
  • Reply — all of the above, plus answer its clients. Account holds your profile, password, signature, and appearance.

Sign in to continue

The queue is waiting on the other side of sign in.

Sign in