Before 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.
The pattern library17 of 22 covered by a test
Five to try
The other 17
02 · Reaction contract grammarCovered by a test
Every emoji Eve seeds means something, and tapping it is the whole interaction.
#outreach
EveAPP
Three follow-ups are drafted for this week. ✅ sends them, ✏️ opens the drafts in the thread.
Message #outreach
Example messages are reconstructions. Names and numbers in them are illustrative.
My work
Designer and sole developer of the prototype, working with AI coding agents as pairs throughout. The production agent, its data, its integrations, and its infrastructure belong to EVE’s engineers; the lab only ever read from them.
A prototype with a contract
Baby Eve had a written contract: it answers one question at a time about how Eve should feel and behave, uses just enough real Slack, model, and state to make the answer credible, and stops before it becomes a production system.
The rule for what belongs where is one sentence. If a change needs production credentials, writes customer data, adds a real integration, creates a second source of truth, or has to be operated for customers, it does not belong in the lab. What leaves the lab is a behaviour contract and its evidence, never a copy of the code.
Where a change belongs
When Eve posts a morning decision
The words on an approval card
How a stalled job apologises
Who is allowed to approve a send
Retrying a send that failed
Syncing a real CRM
One question at a time
Every experiment was a small vertical story. It named one uncertainty, stated what should become more legible or trustworthy, changed only the surfaces that scenario needed, and replayed the golden path plus at least one failure.
An experiment was done only with evidence: the transcript, the renders, a check that fails when the behaviour breaks, and a written decision to graduate, iterate, reject, or archive. No more than two ran at once.
The experiment loop
1. Question. Name the one uncertainty the experiment resolves.
A design doc the build fails on
Baby Eve invented conversation patterns that had no spec anywhere: reactions as the whole interaction, a message that redraws instead of a feed that grows, silence as a designed state. I named 22 of them as a system. Each is a choreography, a copy contract for the strings it posts, and anchors that point at the code that implements it.
The anchors are checked. A script parses every one and fails the build when a cited file is gone or its symbol no longer appears in it, so renaming the code forces the doc to change in the same commit. A pattern without a test is labelled "not yet", and five of them still are.
Break the anchorFile and symbol names are illustrative
The doc
04 · The send window
Watching Eve keep the exact promise she made at 9:00.
Anchors
patterns/send-window.ts
scheduleSendWindow
copy/send-window.tssendWindowCopy
The code
patterns/send-window.ts
export function() {
}
Build passed. Every anchor resolves.
Passes: scheduleSendWindow appears in patterns/send-window.ts
Passes: sendWindowCopy appears in copy/send-window.ts
Rebuilt on eve
By August the prototype’s custom runtime was spending its effort on generic agent problems: sessions, resuming, approvals, retries, schedules, tracing. None of that was what the lab existed to learn.
So I rebuilt Baby Eve on Vercel’s eve framework, one vertical slice at a time. eve owns the durable machinery. Baby Eve keeps everything that is Eve: her judgment, the seeded world, the information hierarchy, the Slack presentation, the artifacts, the personality. Dependencies are pinned exactly, and every framework upgrade has to pass the build, the evals, a restart, an approval, and a Slack replay. The decision covered the lab only; EVE’s production architecture is its engineers’ call.
Who owns what
The generic machinery moved to the framework. What the lab studies stayed its own.
eve
Durable sessions
Work orchestration
Human input
Schedules
Sandboxes
Tracing
Eval infrastructure
Baby Eve
Domain judgment
Seeded world
Information hierarchy
Slack presentation
Artifacts
Personality and delight
Planning in passes
I built Baby Eve with AI coding agents as pairs, and that changed how the lab planned. Calendar estimates meant little when a focused pass could take an idea from question to replayed evidence. The unit of planning became the pass.
Anything bigger than three passes was not accepted; it had to be split into independent experiments first. Things outside the lab, such as a Slack reinstall, a production change, or a research session, were gates, not estimates.
Planning in passes
Size
Work
Done when
S
One build-and-verify pass
The revised artifact and a focused check
M
Two or three passes
A golden replay, a failure replay, and a decision
L
Not accepted
Split into independent S or M experiments
What a lab is for
In the lab, "how should Eve behave here" was answered with a replay and a check, then handed to the production team as a contract they could hold me to.
Rebuilding it on eve made that sharper. Once the framework owned the plumbing, every remaining line in the lab was about the experience.