Minder

Minder · AI chat

AI chat

Threads on the left, the conversation in the middle, and a stage of panes on the right that opens only when there is something to show.

01

Overview

The whole surface, live. Send a message, open a card, split a pane, switch threads.

Loading the workspace…
Threads rail
264px · collapses to 52px · becomes a title menu below 1040px
Chat
min 340px · reading column 768px · 44% of the split by default
Stage
min 380px · 56% · appears with the first artifact, never before
Below 760px
the stage stacks under the chat; on a phone it is a sheet
Splits
right adds a column, down stacks · 2 × 2 at most · a new kind opens a new pane, never a modal
02

Starting

Before the first turn: who you are talking to, how fresh the data is, and where to begin.

Configured workspace

What should we look at?

Data as of 08:10 · 4 sources

Suggested
Recent
CelesnityConfigured
First run

Let’s give Minder something to read.

Nothing is connected yet.

Start with
CelesnityNothing connected
Heading
26px / 600 · one line under it: data as of, number of sources
Starters
3 suggested rows (36px) · 2 recent, only when there is no rail · 1 signal worth acting on
Composer
at the bottom of the empty state, where it stays for the conversation
03

Composer

Chips say what the agent can see. The bar carries attachments, mode, effort, dictation and send. Type / for tools.

Composercomposed · input-group + dropdown-menu + popover + kbd
CelesnityConfiguredorders_dailyv12shift-plan.xlsx48 KB
↵ send⇧↵ new line/ tools@ a table
Box
radius 16 · field 44–180px, 16px text · focus darkens the border, no ring
Chips
context 26px pills above the text · toolbar chips 28px
Bar, in order
+ menu · mode · effort · dictate · send (Stop while the agent works)
Narrow
under 460px the mode chip keeps its icon only; under 380px dictation goes · Send never leaves the box
After sending
the field drops back to one line
04

Messages

The person is a bubble; the answer is not. One reading column for both, and four things an answer can carry.

A question and its answers
Did anything fail overnight?

One run: orders_daily stopped at 02:14 on a mapping error. Nothing downstream of it has refreshed since.

What does that hold up?

Six orders are past their promised date. Five sit behind the failed run — their picks were never released, and they clear as soon as it is repaired. The sixth is with the carrier and unrelated.

  • Five held by the run — clear on repair
  • One with the carrier — needs a revised date
Repair it.

Queued. I will re-run the window once the mapping is corrected and release the five.

What an answer can carry · link · file · source · output
Where did the late orders come from?

Six orders are past their promised date. I read the pipeline's own tables rather than the reporting copy, which is a day behind.

warehouse.orders_dailyStreaming · updated 02:14
warehouse.carrier_refBound · updated 3 days ago
orders_daily · run #4188 lines
02:14:07  INFO   window 2026-09-08 → 2026-09-09
02:14:07  INFO   reading 41,882 rows
02:14:11  WARN   carrier_ref: 6 unmatched keys
02:14:11  ERROR  mapping 'carrier_ref' → null for 6 rows
02:14:11  ERROR  aborting before write
02:14:12  INFO   0 rows committed
02:14:12  INFO   downstream views not refreshed
02:14:12  FATAL  run failed after 5.2s
… truncated

The six unmatched keys are the six late orders. I have put the row-level detail and the mapping as it stands next to each other:

late-orders.csv4.2 KB
carrier-mapping.json11 KB

The carrier's own tracking disagrees with our reference on two of them:

Supplier portal — shipment statusportal.supplier.vn

A long answer · headings and bullets inside the turn
Why was output down last week?

Output finished the week at 9,140 units, 4% under plan. Two things account for almost all of the gap, and only one of them is worth acting on.

Where the units went

Line 2 ran all seven days and carried 41% of the volume, which is the most it has taken in a quarter. Line 3 lost most of Tuesday's afternoon shift to a changeover that ran roughly ninety minutes long, and never made the time back — the following days were already committed.

  • Line 2 — 3,747 units, no stoppages
  • Line 3 — 2,180 units, one long changeover
  • Line 1 — 3,213 units, one quality hold

What is worth acting on

The changeover is the real loss and it is repeatable: the same product pair has run long three times this month. The quality hold on Line 1 was a single 40-unit batch, already quarantined, with no pattern across the week — it reads worse in the totals than it is.

If the changeover sequence is corrected, last week's shortfall does not recur. Nothing else in the week suggests a second cause.

Arriving
Reduced motion turns this off rather than shortening it.
Did anything fail overnight?

One run: orders_daily stopped at 02:14 on a mapping error. Nothing downstream of it has refreshed since.

What does that hold up?

Six orders are past their promised date. Five sit behind the failed run — their picks were never released, and they clear as soon as it is repaired. The sixth is with the carrier and unrelated.

  • Five held by the run — clear on repair
  • One with the carrier — needs a revised date
Question
secondary bubble, right-aligned · radius 18 · padding 10 × 16
Answer
no bubble, no avatar, no name · 16px / 1.65 · column 768px
Link
the host beside it and ↗
File
an attachment chip; the person's own can be removed
Source
the dataset in mono · a filled dot when live, a ring when bound
Output
mono, capped at 9.5rem, scrolls inside
Arrival
0.25s ease-out, 4px rise · none under reduced motion
05

A turn

From Send to a finished answer: a status that names the running step, words that arrive as words, a chart where it is announced, and a footer that is already there.

Working · nothing to name yet
Thinking…
Working · a step is running
Thinking…Reading table structure · iceberg.factory_silver.press_telemetry
Listing tables · iceberg.factory_silver
Working · a step failed
Thinking…Drawing the chart
Listing tables · iceberg.factory_silverRunning query · hourly averages
Working · under text already on screen

Line 2 carried 41% of the week's output. Let me check what happened on Tuesday —

Thinking…Running query · production_runs, 1–7 Sep
Words as they arrive

Chart · while it is drawn

Here is the hourly average for the most recent day in the table:

Chart · landed

Here is the hourly average for the most recent day in the table:

Average press temperature per hourpress_telemetry · 2 Sep

Temperature climbs through the morning and peaks at 66.3 °C at noon, above the usual band.

The newest answer

Run #418 failed at 02:14 on the transform step — the source table gained a column the mapping did not expect.

Ask more about this

09:14
An older answer · hover to see its actions

Six orders are late. Five sit behind the failed run; the sixth is genuinely stuck at the carrier.

09:12
Status card
neutral tint, radius 12, 36px orb tile · “Thinking…” 15px / 600 · caption 13px: the step, its target, seconds · role=status
Nothing to name
“Thinking…” alone · no rotating guesses
Steps
finished ones fold into chips under the card · done is grey, failed is red · none once text is on screen
Words
a word per tick (~30/s), each fading in over 450ms · a half-written word, unclosed ** ` [ and agent tags are held back
Chart
after the sentence that announced it · 68px header, chart / table toggle, open in side panel · a skeleton of the same size while it draws · its stage tab opens at once
Tables, documents
stay one-line cards that open a pane
Follow-ups
under the newest answer · at most 3 rows, 16px, hairlines · “Ask more about this” 18px / 600, left out when the prose ends on its own lead-in · live only once the answer ends
Actions
copy · regenerate (newest only) · time · run details · 32px ghost buttons · older answers show them on hover and keep the row's height · nothing disabled for later
Scroll
sending brings the question to the top once · nothing follows the stream · ↓ appears when the answer outgrows the view
Motion
all optional · under reduced motion nothing fades, glides or breathes; the order stays the same
06

Stage

Every pane wears the same header. Tabs sit in a numbered row beneath it once there are two.

Pane header and tabscomposed · button + dropdown-menu + tooltip
Weekly operations brief
v3/3
The stage's outer edge · one pane · split · a ground pane
Weekly operations brief
Stage · single pane — Flush. The hairline is the whole boundary; the ground padding and the pane's frame are gone.
Output
Late orders
Stage · split — Floating. Tinted ground, 8px gutters, framed panes — the frames separate pane from pane.
Board
Late orders
Stage · ground pane — The exception: a pane whose content is itself a ground stays flush even when split, or it becomes a window onto a ground.
Generating
Output per line
Querying production_runs · 2 of 3 steps
Failed
Late orders
Behind the latest version
Weekly operations brief
v3/3
You are reading v2. The brief was regenerated 4 minutes ago.
Header
38px · the active tab's title left · versions, share, more, open out, maximise, close right, in that order
Tabs
a numbered row under the header from two tabs · one kind of thing per pane · pressing one scrolls the transcript to its card
Which card is open
the one whose tab is in front, not every card with a tab
Frame
pane radius 10 · 8px gutters on a tinted ground · a single pane goes flush
States
generating: marker + skeleton · failed: alert + retry · behind: banner + version pager
Compact (under 480px)
share and open out fold into the ⋮ menu
07

Threads

One list, three homes. A dot marks a thread that needs you.

Rail
Rail · collapsed
Switcher · narrow
Thread: Weekly ops reviewOpen the title to switch; ⋯ holds the same actions as the rail.
Rail
264px, collapses to 52px · rows 32px · Pinned, Today, Yesterday, Previous 7 days, Older
Dots
7px · blue running (pulses) · amber waiting for approval · red failed
Narrow
the conversation title becomes the switcher · 320 × 420 panel
Row menu
pin, rename, share, schedule, archive · replaces the time on hover
08

Primitives

The components the surfaces above are built from, with their variants.

Message · with the multi-agent slots
A user turn, aligned to the end.
Minder AI
An agent turn: avatar, header, bubble, and a footer for provenance.
Answered in 1.2s · 4 sources
Bubble
Default
Secondary
Muted
Tinted
Outline
Destructive — a refused or failed turn
With reactions
🎉3
Marker
Reading 4 files…
Deployment plan drafted
Today
Context updated
Attachment
roadmap.pdf248 KB
dashboard.png1.1 MB
Questionnaire · when the agent needs a decision it cannot infercomposed · field + radio-group + progress
Question 1 of 20%

This shapes how it ranks the next actions.