Signal Inbox — see what the customer did, felt, and experienced before you reply
Surface the context in priority order. Show why each signal matters. Prove it with the evidence behind it.
A support agent opens a ticket and burns the first thirty seconds hunting — across tabs, logs, and order history — for what the customer already lived through. That hunt is the bug. Signal Inbox flips it: one prioritized feed of what the customer did, felt, and experienced, re-ranked live for the issue in front of you, every signal traced to the source that earned it. The one thing it will never do is write the reply. Its only action is Add to my reply context — the agent writes and sends. One argument, made in interface form: customer context you can read, trust, and act on in seconds.
Fully interactive — move through the whole workspace: Today → Inbox → Sources → Calibrate → Impact, then drive the signature interaction: pick the issue and watch the signal feed re-rank live, with ↑ surfaced / ↓ lowered deltas. Opens in desktop by default; use the toggle for the mobile layout. All data is fictional and original; the sandbox never touches a live system.
Five surfaces, one argument
The prototype is a product, not a slideshow — so the tour below is the real interface, rebuilt in HTML. Each surface does one job in the agent's flow: set the model, do the work, prove it, tune it, debrief honestly. Here's what each one is and the problem it removes.
Your shift · live
Conversations in queue
4
1 live · 3 waiting
Avg time-to-context
0:08
▼ from 0:41 last quarter
Signals surfaced today
1,732
every one traced to a source
Replies written by you
100%
Signal Inbox never sends one
Today — the workspace home that sets the model
A landing surface, not an empty queue: a live shift pulse, three "what it does" cards, and a mini-demo that renders the real signal card so the teaser can never drift from the feed.
The "replies written by you — 100%" tile states the boundary before the agent trusts a single signal: this tool shows its work; it never speaks for you.
Signal feed — prioritized for Billing
Inbox — the signature, where context meets the conversation
A three-pane workspace: the conversation list, Maya Chen's thread, and the Signal Feed that re-ranks the moment you pick the issue — with ↑ surfaced / ↓ lowered deltas, a per-signal "why surfaced" line, and an Evidence drawer one tap away.
This is the thirty-second context hunt, removed. And the only forward action on a signal is Add to reply context — Signal Inbox surfaces, the agent writes.
The confirmed ↔ provisional wall · Billing
Sources — the honesty layer that makes the feed checkable
The three honesty laws stated plainly, a five-type signal catalog where shape
carries meaning, the scoring model salience × issue-affinity × freshness, and the
confirmed↔provisional wall.
Sources turns "trust me" into "check me": every number on the feed has a derivation here, and the wall guarantees an inferred signal can never out-rank something that actually happened.
Default ranking
Your ranking
Calibrate — teach the feed, never the reply
An issue selector and three weight sliders — recency, confirmed-first strictness, emotion sensitivity — drive a live Default vs Your ranking with ▲▼ deltas, all under a persistent Law 1 banner.
A billing specialist and an escalations lead don't want the same things first. Calibrate tunes the order each sees while the provisional wall holds and the reply stays untouched.
45%
faster time-to-resolution
38%
drop in escalations
52%
faster root-cause analysis
40%
less investigation time
The five product laws
- 1Context, never the reply. The only action is "Add to reply context."
- 4Uncertainty is labeled, not hidden. Provisional signals pin below confirmed events.
- 5Shape + label, never colour alone. Type and state carry distinct icons and text.
Impact — the debrief, including the line not crossed
Four outcome metrics, a black-box vs Signal Inbox before/after, and a recap of all five product laws.
A debrief that only celebrates wins is marketing. Impact names the outcomes and the boundary the product chose not to cross — so the value and the restraint are read together.
The problem: thirty seconds lost before the first reply
Support tooling usually hands the agent a ticket and a flat activity log — no priority, no traceability, and no read on what the customer actually felt.
When Maya writes "I don't want to be double-charged," the agent already has the answer somewhere — a declined payment, a retry, a duplicate authorization hold. But it's scattered across a billing console, a logs tab, and an order page, in the order it was logged, not the order it matters. So the first move is a hunt, and while the agent hunts, the customer re-explains. The opening minutes burn, the conversation starts on the back foot, and "let me look into that" becomes a stall. The first design decision was to treat that hunt as the bug — to make the customer's history into one prioritized, traceable feed you can read in seconds.
The black box · what most tools expose
A flat, time-ordered log. No priority, no evidence, no read on what mattered for this issue, and no sign of what the customer felt — a history you excavate while the customer waits.
The glass box · what Signal Inbox shows
The same payment event, now ordered for the issue and traced to the source that earned it — with the evidence one tap away.
The thesis: surface, explain, prove — but never reply
Three properties, in order. The feed surfaces the right context first. It explains why each signal moved. It proves every signal with the evidence behind it.
Everything in Signal Inbox descends from one idea: customer context an agent can read, trust, and act on. A history that can't be prioritized and can't be checked isn't a tool — it's homework. So the interface becomes the mechanism of trust rather than decoration on a timeline: signals are ordered for the issue at hand, each one is shown with the reason it surfaced, and every reason traces to a source event or replay moment. Trust here isn't a reassuring tone of voice; it's a structural property you can poke at. And the line the product will not cross is just as load-bearing: it surfaces context, the human writes the reply.
Surfaces, in priority order
Pick the issue and the feed re-ranks — what the customer did, felt, and experienced, ordered by how much it matters for the problem in front of you, not by when it was logged.
Explains why it surfaced
Each signal carries a plain "why surfaced" line for the current issue — salience, issue-affinity, and freshness, shown as a reason you can read. Nothing is ranked against something you can't see.
Proves it with evidence
Open the drawer and the signal becomes a replay moment plus the raw source events behind it — with an honest interpretation note. The agent adds it to reply context; the agent writes and sends.
The core decision: a feed that re-ranks for the issue, not a list you sort
The signal feed isn't a filtered table. It's the interaction that turns a flat history into a prioritized read of the issue in front of you.
Each signal is scored salience × issue-affinity × freshness. Pick
the issue — Billing, Technical, Returns, Account — and Signal Inbox recomputes every score,
re-sorts, animates the reorder, and marks each move with a ↑ surfaced / ↓ lowered delta and a
one-line reason. For Maya's double-charge, Billing leads with "Payment declined ×2" at
92; switch to Technical and "Checkout error 500" at 74 climbs instead.
But no signal has a "Send" button anywhere. The only forward action is Add to my reply
context — a person writes what the customer reads.
Issue lens · Billing
○ Default orderThe duplicate hold scores 86 — higher than the confirmed charge at 76 — yet it's pinned below the wall. Law 4: provisional never out-ranks confirmed.
Switch the lens · Technical
▲ Re-ranked liveSame events, different issue: affinity lifts Checkout error 500 to #1 and the rage-click climbs with it while the billing signals fall — every move carrying a ↑/↓ delta. The wall still holds.
This is the signature interaction — run it yourself in the prototype above. The feed resets to the default ordering each visit, so the re-rank is always replayable.
Honesty about uncertainty is the trust-builder
Confirmed vs provisional, the shape of each signal type, and a freshness that decays on purpose. Signal Inbox states what it isn't sure of rather than folding it in.
A customer history is never uniformly certain, and pretending otherwise is how trust dies. When a signal is inferred — a "possible duplicate hold" deduced from two authorizations, not a confirmed charge — Signal Inbox marks it provisional and pins it below confirmed events, even when its raw score is higher. Signal type is carried by shape as well as colour, so the feed reads without relying on hue alone. And freshness decays from 1.0 toward a 0.45 floor over about twelve hours, because a rage-click from this morning matters more than one from last week. Admitting what's uncertain is exactly what makes the confident signals believable.
State = shape first, colour second
Provisional signal · pinned, not promoted
"Inferred from two authorizations minutes apart — shown so you can weigh it, never promoted above the confirmed charge it might explain." A signal Signal Inbox refuses to treat as settled.
The hardest decision: a wall between context and the reply
Signal Inbox surfaces context. The agent writes and sends. The only action on any signal is Add to my reply context — the boundary is structural, not a label you have to trust.
The moment a context tool can draft or send for the agent, it stops being safe to lean on — a customer reply is judgment, tone, and accountability, and those belong to a person. So Law 1 is physical: no compose action, no suggested-reply button, no auto-resolve anywhere in the product. A signal can be added to the agent's reply context and nothing more. And Signal Inbox is honest about its own limits on the other side of that wall — a provisional signal that could explain everything is shown as exactly that, pinned below the confirmed events, never quietly promoted. "Here's what I'm not sure of" is a feature, not a confession.
Context · what Signal Inbox provides
A prioritized, traceable read of the customer's history.
Surfaced for the issue, every signal traced to a source event or replay moment. The tool's only output is context the agent can add — it cannot write or send.
+ The reply · what stays human
Written and sent by the agent, every time.
The "replies written by you" tile reads 100% on purpose. No compose, no suggest, no auto-resolve — the customer always hears from a person who read the context.
The signal that would most tidily explain Maya's complaint is the one Signal Inbox is least sure of — so it surfaces it, labels it provisional, and pins it below the confirmed charge. The agent sees the likely story and its uncertainty, not a confident guess. The wall holds even under the most aggressive calibration.
"Act on it," made literal: a surfaced signal becomes reply context a person uses
Adding a signal to reply context doesn't message the customer. It assembles a clean evidence-backed brief the agent reads, then writes the reply themselves.
Surfacing the right signal is good. Turning it into something the agent can actually act on is better. When you add a signal to reply context, Signal Inbox assembles a brief — the event and its timestamp, the replay moment, the "why surfaced" reason, and the confidence — and stamps it Added to your reply context. It does not message the customer; the agent writes the reply, in their own words, with the evidence in front of them. That round trip — from a re-ranked feed to a reply a person owns — is the most concrete answer to "what does act on it mean?"
Top signal
Payment declined ×2 · 92
Confidence
Confirmed
Evidence
Session replay · checkout · Today 2:41 PM
Also weigh
Duplicate hold · provisional
This is a static specimen — add a signal to reply context in the prototype above to assemble the live brief and open the evidence drawer.
v1 → v7: sharpening one thesis, not stacking features
Each version defends the same idea — surface context an agent can read, trust, and act on, while the reply stays human — against the easier, less honest version of every feature.
The arc isn't a changelog. Early versions found the product identity and put the signal feed at the centre. The middle versions made the scoring real and built the evidence layer that keeps a signal honest. The late work is where the thesis got defended: the context-versus-reply wall (Law 1), the confirmed↔provisional pin, calibration that tunes the order but never the reply, an Inter system that holds up in light and dark, and accessibility done as real contrast math rather than a checkbox.
-
v1
Activity log.
A flat, time-ordered list of customer events. It looked like a debugging console, not a product — and there was no thesis yet, just timestamps.
-
v2
Found the thesis.
"See what the customer did, felt, and experienced — before you reply." The five-screen spine — Today, Inbox, Sources, Calibrate, Impact — and the signal feed taking centre stage as the signature interaction.
-
v3
Real scoring.
score = salience × issue-affinity × freshness, a live recompute and FLIP reorder when the issue changes, with ↑/↓ deltas against the default ordering — not a canned animation.
-
v4
The evidence layer.
The Evidence drawer — a replay scrubber, the raw source-event table, a per-signal "why surfaced" line, and an honest interpretation note that states what the signal does and doesn't prove.
-
v5
Honest uncertainty + Law 1.
Confirmed vs provisional with provisional pinned below confirmed; freshness decay; and the load-bearing rule — no compose, suggest, or send anywhere, only "Add to my reply context."
-
v6
The confirmed↔provisional wall + calibration.
Made the boundary spatial and tunable: Default vs Your ranking side by side, three weight sliders, "reset to default" as undo, and the provisional wall holding in both columns even under extreme calibration.
-
v7
Inter system + accessibility, done properly.
A full Inter-based system with a Lookscout-blue palette, a navigation rail that becomes a bottom bar, and shape-plus-label signal types so the feed never leans on colour alone. Dark mode's real failures were accent-as-text colours under the 4.5:1 AA line, fixed with dedicated text-only variables that brighten in dark; the FLIP reorder and drawer reveals honor reduced-motion.
Explore more work
More explorations from the AI Product Design Lab — each a different facet of making AI products people can direct, verify, supervise, and trust.
Steer — intent before generation
Turn an under-specified prompt into a negotiated brief: the model surfaces what it inferred and flags ambiguity before it commits.
View explorationGround — verify what AI claims
Every claim traceable to a source with confidence and freshness; unsupported claims flagged; source conflicts shown, not smoothed over.
View explorationRecall — legible AI memory
A memory layer you can see, attribute, edit, scope, and revoke — personalization as a negotiated, inspectable thing, not a black box.
View exploration