Keel3
Keel3 Labs · Below the Waterline

Everything Oliver has to tell you that isn't a conversation

The Inbox is the second destination in Oliver's new UI: everything Oliver has to tell you that isn't a conversation. This is the log of how we built it, and why most of the engineering was deciding what the surface refuses to do.

11 steps · four things · one decision · a human click
◇ The charter

A name, a glyph, and one sentence.

Its charter fit in a sentence, everything Oliver has to tell you that isn't a chat, and that sentence turned out to be a surprisingly deep engineering project.

The hard part wasn't rendering rows. It was making a surface that spends the member's attention honestly, and enforcing that mechanically with tests so it stays honest as the codebase moves.

1 The ambient strip

Not a row, on purpose.

One line, Oliver is working on <task> · 2:41, rendered only while a delegation is actually running, elapsed counter ticking off the earliest start in the set.

It's deliberately not a row: no id, no timestamp, no dismiss, which structurally keeps it out of the keyboard walk. And there is no "all quiet" fallback, because a surface fed by a 15/60-second poll can't honestly claim quiet.

2 Needs you

Blocked on the member, and nothing else.

Rows where something is blocked on the member: a review assigned to you, an open tool-approval gate, a shadow waiting at an approval step. Mono lane label on the left, one-word act on the right, expiry always written as a duration ("times out in 20m"), never a bare timestamp.

Needs-you rows have no dismiss: hiding something you genuinely owe is grooming, not deciding, and the row leaves when the state resolves.

decide opens, it never decides
3 Oliver suggests

An offer is not an obligation.

Oliver's own offers: title, one-line gist, at most two controls, Start and Decline.

Proposals never light the orange badge: an offer is not an obligation.

4 The ledger

A briefing surface, not an archive.

What finished, arrived, or broke: shipped previews, shadow runs, shares, resolved approvals and reviews, goals Oliver completed or set aside. Bucketed Today · Yesterday · This week · Earlier, hairline-separated, no cards, keyset-paged, ending in an honest terminal line: "That's everything from the last 30 days."

✦ The first ruling

Completed work never lands here.

We ruled it out before writing a line, with the decision that shaped the whole surface: completed delegations never generate Inbox rows. When work you asked for comes back, Oliver processes the report and tells you in the thread; the thread is the record.

That subtraction gave the Inbox a sharp charter (blocked-on-you, finished-arrived-broke, offers), and the charter is why it can stay one calm page instead of becoming email.

5 Memory digested

The part we most wanted to build.

"Oliver suggests" is the first surface where the memory Oliver collects comes back as a concrete, executable offer.

Oliver's brain runs on the org's own box, digesting what's happening (conversations, activity, things you've told it). Out of that it mints proposals.

6 Prompt composed

Three things, decided brain-side.

Composition happens brain-side, at digest time, and the composer decides three things: the prompt, the target agent (main thread or a specific project agent), and the delivery.

7 User clicks go

Memory proposes; the member is the gate.

By the time a proposal reaches the Inbox it isn't a nudge; it's a loaded action waiting on one click. And the click is load-bearing: nothing auto-executes. Memory proposes; the member is the gate.

The first fully wired producer is the idle-project sweeper: nothing has moved on a project in 14 days → "Want me to take a pass and report back?"

8 Decline is forever

Every no, remembered.

Producers write with an idempotency key and ON CONFLICT DO NOTHING. A dismissed row keeps its key, so a declined proposal can't sneak back in a later sweep.

Proactivity that re-asks on a timer is spam with better branding.

◆ The colour grammar

Orange means one thing.

The color grammar is enforced mechanically: orange means "alive or blocked on you," and a test asserts no ledger kind maps to it. A crashed preview from three hours ago is neither.

Pinned by a test
/inbox
Oliver is working on <task> · 2:41
Needs you
reviewassigned to youtimes out in 20mDecide
approvalan open tool-approval gateDecide
shadowwaiting at an approval stepDecide
Oliver suggests

Want me to take a pass and report back?

StartDecline
Ledger
Today
Yesterday
This week
Earlier
That's everything from the last 30 days.
/inbox renders exactly four things
Something happens in the org What kind of thing? blocked on you · review · approval · gate Inbox · Needs you pinned, orange, one act Oliver has an offer · from memory or observation Inbox · Oliver suggests Start / Decline finished / arrived / broke · build · run · share · resolution Inbox · Ledger bucketed, dismissible, buried by time a delegated task completed The Oliver thread Oliver processes it and tells you · never an Inbox row · churn · file added · session started · stage moved Cut. Never reaches the Inbox.

Something happens in the org

What kind of thing?

blocked on you · review · approval · gate

Inbox · Needs you

pinned, orange, one act

Oliver has an offer · from memory or observation

Inbox · Oliver suggests

Start / Decline

finished / arrived / broke · build · run · share · resolution

Inbox · Ledger

bucketed, dismissible, buried by time

a delegated task completed

The Oliver thread

Oliver processes it and tells you · never an Inbox row ·

churn · file added · session started · stage moved

Cut.

Never reaches the Inbox.

One decision · five destinations
memory digested brain-side, on the org's own box prompt composed prompt target agent delivery user clicks go nothing auto-executes receipt, in place → Atlas
memory digested → prompt composed → user clicks go
brain digests memory, composes prompt + target + delivery Proposed appears in Oliver suggests Seen Start Decline TTL passes (7 days for pickups) Accepted Declined Expired Receipt row converts in place, → destination link, follow-up in the home thread Excluded idempotency key retained, never re-offered without new evidence

brain digests memory, composes prompt + target + delivery

Proposed

appears in Oliver suggests

Seen

Start

Accepted

Receipt

row converts in place, → destination link, follow-up in the home thread

Decline

Declined

Excluded

idempotency key retained, never re-offered without new evidence

TTL passes (7 days for pickups)

Expired

The life of a proposal