Skip to main content
HomeLabServicesAbout
CV, PDF
Period
May – Sep 2026
Role
Founding Product Designer
Shipped
  • 5 behaviours in production
  • 17 merged pull requests
  • 144 commits to the production agent

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. 01The first Eve handed the work back
  2. 02Identity was losing to the rules
  3. 03Nothing noticed when the voice got worse
  4. 04Silence was the worst thing Eve did
  5. 05Each moment, written as the message
  6. 06Standing permission is the founder’s to raise
  7. 07What I’d tell the next agent team
All posts
ProjectMay – Sep 2026Part 1 of 34 min read

Making EVE’s Slack agent do the work and leave every send to the founder

Eve is EVE’s AI fundraising teammate in Slack. Founders use her to find investors and run LinkedIn outreach in their own name: she drafts, they approve every send. I designed how she talks and behaves, then shipped that behaviour into the production agent myself.

The problem
Eve ended every reply with an offer and went silent when a job dropped.
What I shipped
Five behaviours in production, each written as the exact Slack message Eve sends.
How it holds
Each behaviour has a check that fails when Eve breaks it.
The first message in a channelReal production copy, before and after.

Works

She joins the way a colleague would, and setup starts from anything the founder types.

Search Acme

Acme

Channels

  • #general
  • #outreach
  • #pipeline

Direct messages

  • EveAPP
#outreach

EveAPP10:02 AM

joined #outreach.

10:02

I’m in 👋 Mention me here for anything on the outreach, and DM me for anything you’d rather not put in a channel. If we haven’t set you up yet, my DM is where that starts.

Message #outreach
Example messages are reconstructions. Names and numbers in them are illustrative.
My work

Founding Product Designer. I prototyped Eve’s behaviour, wrote each change as the Slack message it should produce, and shipped it into the production agent with its evals. The platform, the queue, and the infrastructure belong to the engineering team, who reviewed every change.

How Eve worksEach number opens its section

The founder, in Slack

  • @Eve in a channel
  • 👀 while she works04
  • Messages written as specs05
  • Approve or edit

Eve

  • Soul: who she is, first02
  • Rules: several hundred lines
  • Does it now: draft, shortlist, run the numbers
  • Waits for the founder: send, approve, enroll01

Out in the founder’s name

  • Outreach that goes out as the founder
  • Standing permission, raised by the founder06

Checks that keep her honest

  • Voice cases replayed on every change03
  • The build fails when the soul and the rule disagree02
  • One honest line after ten minutes of silence04

The first Eve handed the work back

The early agent could draft, research, and run the numbers, and then asked permission to do any of it. Every reply ended on an offer, so the founder got the work back plus a question.

I split her verbs into two lists. Drafting, shortlisting, running numbers, and writing things down are hers, unasked. Sending, approving, activating, enrolling, and holding wait for the founder, every time. The founder’s go-ahead gates the send; Eve handles the draft. The cost is waste. Eve writes some drafts the founder never wanted, and they get thrown away.

Who does what
Verb
draft
Eve does it now
  • draft
  • shortlist
  • run the numbers
  • write it down
Waits for the founder
  • send
  • approve
  • activate
  • enroll
  • hold

Fails: Before

F

Founder11:20 AM

step 2 feels long, can you tighten it?

EveAPP11:20 AM

I can shorten step 2 to two sentences. Would you like me to draft that?

Works: After

F

Founder11:20 AM

step 2 feels long, can you tighten it?

EveAPP11:20 AM

Step 2 is down to two sentences, and the version you had is in the thread. It goes out once you approve it.

Identity was losing to the rules

Eve’s character was one paragraph competing with several hundred lines of rules for the model’s attention. The rules kept winning, so she sounded correct and like nobody in particular.

I wrote a soul: eight lines at the very top, in her first person, saying who she is before any craft. It was additive on purpose. Cutting the rules it made redundant had to wait for a voice regression suite that could catch a bad cut.

The soul restates rules that live further down, and within days one copy drifted. Its list of what belongs to the founder named four things where the rule named five, so the first thing the model read was a narrower gate than the rule it stood in for. Prose review caught it late, so now the build catches it: it fails when the two lists disagree.

Drift check

The soul, line by line. Its words stay private; each line’s job is shown.

  1. What I do, in one line
  2. How I show up, and what is genuinely yours
  3. What I notice first
  4. Kind about people, exact about numbers
  5. What I will not make up
  6. What I will not be talked out of
  7. Why I am here
  8. What I want to be for you
The ownership rule
The soul’s list
Build failed. The soul names 4 of the 5 things the rule gives the founder.
  • Fails: Missing from the soul: “own accounts”

Nothing noticed when the voice got worse

Until someone screenshotted the channel, a regression in Eve’s voice was invisible. So the rules that can be checked in code became checks, and the rest became graded cases replayed from the shapes of real conversations, with none of the real people in them.

A recommendation Eve repeats arrives as a completed draft. The register at the sixth message must read as the same person as at the first. Every figure on a check-in card must come from the data. Golden anchors prove each grader both ways: it passes an honest reply and fails a violating one.

Voice lintRuns in your browser

EveAPP10:14 AM

Edit the reply or load a sample. These checks were written for this page, not taken from EVE’s suite.

1 of 8 checks pass
  • Fails: At most one question2 questions
  • Fails: No em dash—
  • Fails: First person, never "Eve will"Eve has
  • Fails: No grade as an openerGreat
  • Fails: Does the work instead of offering itWould you like me to, should I
  • Fails: No hedgingroughly
  • Fails: No ad-copy wordsleverage, streamline
  • Passes: No system words

Silence was the worst thing Eve did

When a founder mentioned Eve, a 🤔 reaction said she had it. Nothing guaranteed anything would ever take it off. A dropped job or a hung turn left the reaction standing, with no reply and no error anyone could see.

Now every accepted message either gets an answer or says it won’t. Accepting writes a marker and arms a check, and delivery clears both. If the check still finds the marker ten minutes later, Eve posts one honest line and the silence is counted as an incident. A founder can wait ten minutes on a real failure, and a slow but healthy run can trigger the same message.

The first version still failed exactly when it mattered. An expired marker looked the same as an answered one, so a wedged queue erased its own evidence. A settled turn now leaves a short-lived tombstone, and when neither is there, Eve speaks.

Reacting with 👀 to the founder’s message signals the wait and adds nothing to the thread.

One mention, two outcomes
Search Acme

Acme

Channels

  • #general
  • #outreach
  • #pipeline

Direct messages

  • EveAPP
#outreach
F

Founder11:04 AM

@Eve can you pull this week’s replies?

EveAPP11:14 AM

Something broke on my side picking this up, and I don’t want to guess at your question. The team has the details. Ask me again and I’ll take it fresh.

  1. 👀 on the founder’s message
  2. Marker written, check armed
  3. The job never runs
  4. Ten minutes later, the marker is still there
  5. One honest line, and the incident is counted
The designed line. Wording in production may differ.

Each moment, written as the message

"Eve feels dull" is not something anyone can build. So for each moment I wrote the exact Slack message she should send, rendered as it would appear, and that became the spec the change was built and graded against. Some designed moments, the goal-reached message among them, sat behind engineering priorities and never shipped.

Moments
  • A long reply leads with its takeawayShipped Aug 23

    EveAPP9:12 AM

    Short answer: the copy is the problem, not the volume.

    Acceptance slid from 31% to 22% in two weeks, and the invite’s first line contradicts itself. The rewrite is in your queue.

  • The morning check-in says lessShipped Aug 18

    EveAPP9:00 AM

    Morning: 12 invites out, 2 accepted, and the queue is clear. Nothing needs you today.

  • A preference, named once in the workShipped Aug 18

    EveAPP9:00 AM

    Morning: 12 invites out, 2 accepted. Kept it short, as you asked yesterday.

  • The goal reachedDesigned, not built

    EveAPP9:00 AM

    That’s ten 🎯 The goal you set on the 1st is done with four days to spare. Twelve looks reachable next month if you want to raise it.

    • 🙌🙌 reaction from 3

Standing permission is the founder’s to raise

In my prototype, Eve earned autonomy. After a clean streak of approvals she offered to send follow-ups on her own. In production that went wrong: a founder asking what happens after connecting LinkedIn was told Eve would send every opening message, and was offered standing permission nobody had asked for.

So I reversed it. Connecting an account sends nothing, and outreach goes out as the founder. Standing permission is never Eve’s to offer: the founder raises it, first messages to a new prospect always wait, and one line takes it back.

Standing permissionApprovals Every draft waits for you
Search Acme

Acme

Channels

  • #general
  • #outreach
  • #pipeline

Direct messages

  • EveAPP
#outreach

EveAPP9:00 AM

Follow-up draft to Marco, Tillwise

Following up on the forecast question. Happy to send the two-page version if the long one was too much.
Reply as the founder

What I’d tell the next agent team

I started on Eve’s words, and by late August the words were close. The failures founders actually felt were silence, a number said with confidence she didn’t have, and a preference promised and then ignored. None of those live in the prompt. They live in the tools she holds, when she wakes, what she remembers, and what she is allowed to do.

The most useful thing I did for the engineers was write each moment down as the exact message, rendered, with a check that could fail it. That turned "Eve feels off" into a change someone could land.

Next case study · Part 2 of 3Five shapes for an agent’s answer in SlackSlack 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.

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