Skip to main content
HomeLabServicesAbout
CV, PDF
Period
Aug 2026
Role
Founding Product Designer

Series

  1. Part 1 of 3Making EVE’s Slack agent do the work and leave every send to the founder
  2. Part 2 of 3Five shapes for an agent’s answer in Slack
  3. Part 3 of 3Baby Eve, an experience lab on eve.dev

On this page

  1. 01Every reply had the same shape
  2. 02The row that says what she’s looking at
  3. 03The long tail goes in the thread
  4. 04Trends get Slack’s native chart
  5. 05When a report becomes a file
  6. 06Short became a number
  7. 07What shape fits each answer in Slack
All posts
ProjectAug 2026Part 2 of 34 min read

Five shapes for an agent’s answer in Slack

Slack gives EVE’s fundraising agent, Eve, no screens of her own, only messages, threads, cards, and reactions. I designed the rules that decide which of those an answer becomes, and shipped them into the production agent with tests that grade every reply.

The problem
A single number arrived wrapped in a report, and a real report arrived as a wall of text.
What I shipped
Rules in the production agent that route each answer to the right shape.
How it holds
Every rule can fail a reply from its text alone.
Where an answer goesRules rebuilt for this page
The answer holds
Search Acme

Acme

Channels

  • #general
  • #outreach
  • #pipeline

Direct messages

  • EveAPP
#outreach
F

Founder9:00 AM

@Eve how did outreach do this week?

EveAPP9:00 AM

Acceptance is up, but replies aren’t following. The opener is the likely cause, and the rewrite is in your queue.

📊 Outreach this week

Invites sent
12
Accepted
4
Replies
3
Calls booked
1

Monday to Friday

Message #outreach
  1. 1One answer or a few numbers is a sentence.
  2. 2Figures to scan or compare are a card.
  3. 3Fired: Figures that need interpreting get one read above the card.
  4. 4Three or more subjects become a briefing with short sections.
  5. 5The long tail, drafts, and evidence go in the thread. Never more than ten items inline.
Example messages are reconstructions. Names and numbers in them are illustrative.
My work

Founding Product Designer. I wrote Eve’s Slack surface as rules the model follows and the evals can grade, then shipped each one as a change to the production agent. The gateway that renders Block Kit, and the platform under it, are engineering’s; they reviewed every change.

Every reply had the same shape

Early on, every reply took one shape: a paragraph, then whatever figures and detail had come up, in one post. A single number arrived wrapped in a report, and a real report arrived as a wall of text.

I wrote the routing down as a small grammar the model follows. One answer or a few numbers is a sentence. Figures to scan or compare are a card. Figures that need interpreting get one read above the card. Three or more subjects become a briefing with short sections. The long tail, the drafts, and the evidence go in the thread. Some answers fall between two shapes, and Eve picks the wrong one.

The row that says what she’s looking at

While Eve works, Slack shows one working row under the question, and the notification carries one line about it. That line used to say two generic things: "Thinking it through" before anything ran, and "Working on it" over every step after. Neither told the founder the one thing they want to know mid-turn, which of their things Eve went to look at.

Now the notification names the area of the founder’s world the work is in, claimed by the first step that has one: on your campaigns, on your prospects, on what’s waiting on you. Memory, Slack reads, and orientation claim nothing, because a header that names the plumbing is worse than a shrug. A turn that only reads memory or Slack adds no clue to the notification. The first row says what Eve was handed, and the row between tools says she is making sense of what came back, which stays true whichever way the turn goes. Engineering made the row rewrite itself in place; the words are mine.

A turn in flight

The founder can see what Eve went to look at before the answer lands.

Evenow

📣 On your campaigns

#outreach
F

Founder9:00 AM

@Eve how did outreach do this week?

EveAPP9:00 AM

💬Reading your message
  1. 💬Reading your message
  2. 📣Catching up on what’s happened
  3. 📣Counting up the last few weeks
  4. 📥Checking what’s waiting on you
  5. 🧩Making sense of what came back

The long tail goes in the thread

The scheduled digest landed as one long post in the channel: the read, a card, a breakdown for each item, a numbered list of flags, and a footnote. The room had to scroll past what mattered to reach the rest.

Now the reply keeps the read, the card, and the question. Everything else goes as one message in the thread under it, posted after the reply lands. A second call replaces the tail instead of adding to it, because one message per turn is the contract. The card’s title became a native header, and the divider that used to open it went. Once the detail lives in the thread, it becomes harder to search.

The weekly digest

The channel reads the verdict and the card. The detail is one tap away.

#outreach

EveAPP9:00 AM

Acceptance is up, but replies aren’t following. The opener is the likely cause, and the rewrite is in your queue.

📊 Outreach this week

Invites sent
12
Accepted
4
Replies
3
Calls booked
1

Monday to Friday

Trends get Slack’s native chart

A shape over weeks had no honest home in Slack. The agent drew bars out of block characters or walked through the numbers in prose.

Slack has a native chart block, so the card gained an optional bar or line chart: up to twelve points, and a second series only as a benchmark. A rejected block deletes the whole reply, so there are two protections. A benchmark whose labels don’t line up with the first series is cut before sending. A workspace that refuses the block gets the card again without the chart. That is why the figures that carry the decision live in the card’s sections both ways: the fallback shape preserves the read.

The card carries a chart

The shape of the six weeks, with last quarter as the benchmark.

#outreach

EveAPP9:00 AM

Acceptance has climbed three weeks running.

📈 Acceptance rate, last six weeks

This week
33%
Six-week average
24%
0%10%20%30%40%W1W2W3W4W5W6
This quarter Last quarter

When a report becomes a file

Eve can answer in a sentence, a card, a picture, or a file. The document rule only fired when someone asked for a PDF, so nothing said when a report should become one on its own, and nothing stopped a scheduled daily from shipping as a file: one more tile in the channel every morning, and a click to read it.

The medium became a ladder with one test for the top rung: a document is for what someone will forward, file, or read away from Slack. The weekly wrap passes, so it ships as a PDF unasked, with the verdict in the message above it and the card beside it, never the file alone. A daily never does. It is a glance, so a one-page report arrives as a picture in the channel, readable on a phone without a click. A report longer than a page never goes out as a picture, since a picture would show page one alone. A direct ask overrides the ladder either way.

What a report becomes

A daily is a glance: one page, inline, no click and no file.

#outreach

EveAPP9:00 AM

Wednesday: acceptance is holding at a third, and replies are still the gap.

Short became a number

"Keep it short" is not something a model can hold to or an eval can check. So I turned each length rule into a number: about 60 words for a reply, two sentences above a card, about 120 words when the answer needs depth, and never more than ten items inline. Detail that once fit inline now goes to the thread.

The emoji went the same way. The check-in used to wear a different set each time; now it wears a fixed one. Every rule here can be checked from the message alone.

Length ceilings
#outreach

EveAPP9:00 AM

Edit the draft or load one. The count comes from the text alone.

77 of 60 words · over the ceiling

What shape fits each answer in Slack

Block Kit is a small vocabulary, and an agent will happily use all of it at once. The design work was deciding which of five shapes an answer takes, and writing that decision down where Eve and her tests could both read it.

Every rule on this page can fail a reply from its string alone. That mattered more than any single layout. Engineers could check a message without asking me whether it looked right.

Next case study · Part 3 of 3Baby Eve, an experience lab on eve.devBefore a behaviour went into EVE’s production agent, I tried it in Baby Eve: a Slack prototype I built alone, with a real bot, a real model, and a seeded world. In August I rebuilt it on Vercel’s eve framework.

Pages

  • Home
  • Lab
  • Services
  • About
  • CV, PDF

Work

  • EVE Slack agent
  • Eve’s answers in Slack
  • Baby Eve
  • Botics OS
  • Pflegewächter
  • LerneQ

Career

  • EVE
  • Goodright

Elsewhere

  • hello@mykolakorzh.com
  • Book a call
  • GitHub
  • LinkedIn
  • X
  • Eidos
  • Imprint
  • Privacy