um

Conversation

The root of the AI chat components: the scrolling region a conversation's turns are rendered into, and the spacing between them. It follows new content while you're at the bottom, stops when you scroll up, and offers a way back.

A whole conversation

Every piece together: a question, reasoning, a run of tool calls with one still going, a reply that quotes a record and proposes something, a permission request, and the plan and workspace beside it. Scroll up inside it to see the jump-to-latest button.

You said
Who hasn't replied to the Platform Engineer invitations yet?
Assistant said
Thought for 4s

The invitations were sent on Monday. I need the job first, then the invitations without a reply, then anything that bounced.

I'll check the invitations sent for that job this week.

Donefind_jobPlatform EngineerTook210ms
Asked
{
  "query": "Platform Engineer",
  "status": "open"
}
Answered
{
  "id": "job_8f2",
  "title": "Platform Engineer",
  "company": "Acme",
  "invitations": 12
}
Donesearch_invitationsunanswered · last 7 daysPartly failed1 failedTook2s
Asked
{
  "job": "job_8f2",
  "replied": false,
  "since": "7 days ago"
}
Answered
{
  "invitations": [
    "Ana Silva",
    "Grace Okafor",
    "Tom Reyes"
  ],
  "errors": [
    {
      "id": "inv_31",
      "error": "timed out"
    }
  ]
}
Runningcheck_emailtom.reyes@example.comRunning for12sWaiting on the mail server
Assistant said

Three candidates haven't replied since Monday:

  • Ana Silva opened hers twice but hasn't answered.
  • Grace Okafor hasn't opened hers.
  • Tom Reyes's bounced — I'm checking the address now.

Ana did say something relevant last week:

Ana Silva
I'm keen, but I'm travelling until the 18th. Could we talk after that?

I'd nudge Grace today and leave Ana until after she's back.

Wants permission

send_email to: grace.okafor@example.com

Send Grace a short nudge about the Platform Engineer role.

She hasn't opened the invitation, and the role closes on Friday.

Waiting for your input…

Plan

2/5
  1. Done
    Find the job
  2. Done
    List who hasn't replied
  3. In progress
    Check the bounced address
  4. Nudge Grace Waiting on you
  5. To do
    Remind me about Ana on the 19th

Workspace

3
  • drafts
    • nudge-grace.md812 Bytes
  • captures
    • tom-bounce.eml18 KB
  • unanswered.csv1.21 KB

Send a message

The composer posts for real. The question is drawn at once, dimmed, until the server confirms it under the same id; the reply then streams in and settles. Press Stop mid-reply to freeze it.

This example talks to a server

These are static pages, so what this example saves, posts or searches for won't answer here. Run the browser (bin/dev) or mount it in an app to try it for real.

Ask about your candidates

This one only knows one answer, but it streams it properly.

An empty conversation

chat.welcome shows until the first entry arrives.

What can I help with?

It can search your jobs and candidates, draft messages, and keep track of who has replied.