Design partner program is openThree partners, real decision traffic →
razoo

Solutions · Inbox and operations

Triage, replies, follow-ups, and delegation. Staged, in your tone, sent by you.

An operations inbox is a queue that nobody built as one. Razoo reads it through Gmail or IMAP, sorts what needs an owner from what needs a reply, drafts the reply the way you would have written it, and puts every send behind your word. The sorting is what stops needing a model. The sending never does.

What the inbox agent does

Triage, drafts, follow-ups, delegation. Nothing sent unconfirmed.

The example agent in the repository declares them in its domain.yaml and actions.yaml. Every action is auto_confirm false. A person presses Send, and the outbox does the sending.

Inbox triage

Every message is routed to a work type by address or subject and walks the ladder. Unread items with a known owner are resolved by rule. The rest queue for you with the packed context.

Reply drafts

A reasoning step drafts the reply on a token contract, using the tone exemplars in the playbook. The draft is a staged send_reply. You edit it or send it as-is.

Follow-ups

Commitments that went quiet resurface on a plumbing step. A follow-up is drafted and staged. Nothing chases anyone without your confirm.

Time blocks

When something needs your hours, the agent stages a calendar hold and the .ics to your own address. Book it, or park it.

Delegation

A task that belongs to a teammate is drafted as a delegation email with the owner and due date. delegate_task is a staged action from your mailbox, sent when you say so.

Daily brief

What arrived, what was handled without a model, what waits on you, what was parked. Recomputed from the log, not summarised by a model.

Decisions

A decision only you can make is a judgment work type. The agent packs the context and the options. It does not choose.

Amend the agent

Tell it to stop drafting replies to calendar invites. It rewrites one playbook, doctor validates, and the change is a staged action you confirm.

Today

One thing at a time, with the source beside it.

The Today page walks you through what needs you: a drafted reply with the original message underneath, a delegation ready to send, a hold on your calendar. Confirm, edit, or park. Every confirm is a named act recorded on the Decision.

  • The draft shows the tone exemplar it followed and the fields it read, so a wrong draft is a wrong rule, not a mystery.
  • Edit changes the payload before confirm. The edit is recorded as a correction.
  • Park returns the item to the queue untouched. Nothing is dropped and nothing times out into a send.
console · todayillustrative

Arrived today

38

Handled without a model

29

Waiting on you

4

Drafted reply to Priya Nair. Edit it or send as-is.

Thanks, Priya. Not this week. If it can wait, Tuesday 2pm works.
Brad

tone: declining a meeting · fields: owner=me, due_at=none · capable tier · 610 tokens

Show the original message

Hi Brad, could we get 30 minutes this week to walk through the Q3 numbers before the board pack goes out? Priya

SendEditParksend_reply · staged · auto_confirm falseyour word sends it
  • delegate_taskSam Okafor

    Northgate schedule · due Friday

    next
  • time_blockyou

    Thursday 9–11 · board pack review

    next
  • send_followupHarbour Build

    quiet 14 days · resurfaced by rule

    next

Your tone, in a file

The voice is a playbook, not a prompt you cannot see.

Tone exemplars live in a markdown playbook in the agent folder. The reasoning step reads them under a token contract. You can read them too, change one line, and the change is validated and applied as a staged action. No fine-tuning, no labelling, no hidden system prompt.

  • Triage is plumbing over the owner field. It never calls a model. What plumbing cannot resolve queues for you.
  • Enrich is the one reasoning step. It runs on the fast or capable tier and stages a draft at most.
  • Decide is judgment. Your choices there are the evidence the learned rung is built from.
  • commitment_value is money_legal. A draft that would commit money is flagged and never auto-sent.
domains/inbox/playbooks/ea_inbox.md · tone exemplars
# How I reply

Short. First names. No preamble, no sign-off beyond my name.
Answer the question in the first line. Offer a time, not a range.

## Exemplar · declining a meeting
> Thanks, Priya. Not this week. If it can wait, Tuesday 2pm works.
> Brad

## Exemplar · chasing a commitment
> Morning Sam. Where are we on the Northgate schedule? I told them Friday.
> Brad

## Never
Never commit money or a date on my behalf. Draft it, flag it, I send it.
domains/inbox/processes/inbox_triage.yaml
process: inbox_triage
work_types: [ea_inbox, ea_brief]
steps:
  - { id: capture, kind: plumbing, skill: intake.capture }
  - { id: triage, kind: plumbing, skill: qualify.deterministic, fields: [owner] }
  - { id: enrich, kind: reasoning, skill: capture.structure }
  - { id: decide, kind: judgment }
  - { id: resurface, kind: plumbing, skill: opportunity.resurface }

process from the executive-assistant example agent · playbook illustrative

Mailboxes

Gmail, IMAP, and Microsoft 365. One client interface.

Three transports behind one client interface, polled by an outbox job on the drain loop. Every message enters through the same ingest path as the API and the CLI, with the same limits and the same identity-key stripping.

Gmail

shipped

OAuth consent from the CLI, read and send scopes, refresh token stored encrypted and never printed. Incremental sync on the history cursor. Plain fetch, no SDK. Gmail wins when multiple transports are configured.

IMAP

shipped

Host, user, and password in the encrypted store, mailbox defaulting to INBOX. UID cursor stored in SQLite so a crashed poll resumes on the next drain. Attachments with a text layer are extracted; images are recorded as not extractable, never dropped. SMTP send completes the pair.

Microsoft 365

shipped

A Graph transport behind the same interface: delta queries with a stored cursor, client-credentials and device-code flows, a connector card in the console. Approver notifications by email, Slack, and Teams run beside it.

Idempotent by message id. One message is one work item whichever transport delivered it. An unrouted message lands on the unassigned path, visible on Blockers, never discarded.

every send is a confirm

Two weeks of your inbox. Then see what stopped needing a model.

Design partners connect one mailbox behind their own network. Every reply is staged in their tone and sent by them.