[//]: # (Generated by scripts/build-agent-content.mjs; edit the HTML source.)

[Source (HTML)](<https://www.ai-projects-hub.com/en/blog/gespraech-zum-feature>) · Language: English

# From conversation to feature overnight

One evening, one night, one voice conversation with an agent. How an idea became a feature – and “those buttons are too big” became a new design, stumbles included.

2 October 2026

It is hard to explain what changes when AI agents are on the board. Feature lists do not help much. So here is a single night, exactly as it happened – every time below comes from the timestamps in the Hub and in the git history (Central European time).

## In the evening: the feature itself

On 1 October you can already talk to agents in the Hub – but only in the chat window. The idea of the evening: one click on an agent’s face in the header should be enough to talk to it, wherever you are in the Hub. At 20:48, after a conversation with Markus, it is in the Hub as a project, cut into three steps and carrying his decisions. A Claude Code session works through them one after another, handing each step to a fresh sub-agent.

-   21:40 Every person and agent pair gets one fixed conversation thread, which can also be started over.
-   21:57 The conversation loop – listen, send, read aloud, listen again – is pulled out of the chat so it runs without a chat window. Behaviour does not change.
-   23:43 The floating window: a click on the avatar starts the conversation, full screen on the iPhone.

Each of these steps went through the same gate: have the plan reviewed, build, have the code reviewed, tests. On the third one Codex found something blocking in every review round, three times in total. Only when a final round found nothing more did the code go into the repository.

## Just before midnight: a test turns into a conversation

Shortly afterwards Markus tries the new window out – with Claude Code as the other side, hands-free, by voice.

The conversation quickly turns to the window itself. The three buttons “Open chat”, “Start over” and “Close” are too prominent, the white box feels clunky. Together a picture takes shape: only the round avatar with its status ring, a small pill with name and state below it, the buttons as tiny icons on the ring that only appear when the mouse moves over it. And a pause: one tap on the avatar holds the conversation, a second one resumes it.

At 0:11 that is a task in the Hub, with a description, acceptance criteria and a paragraph on what could break. The agent created it mid-conversation, after Markus said “yes, create it”.

## The first stumble: the voice goes silent

Then the conversation breaks off. All the Hub says is: _The speech service is currently unreachable._ A second key for the voice output does not help, neither does a third.

The agent finds the cause in the code: the service was reachable, but the voice output’s quota was used up. The interface lumped both together. And since an earlier improvement made every spoken sentence its own request, a tight daily limit is gone after a few longer answers. Several keys in the same project share that limit – which is why switching did not help.

The frustration turns into two tasks: an honest error message (0:20) and a thriftier read-aloud that speaks the first sentence right away and bundles the rest, without ever waiting for text (0:49). The second one is still open – it touches the playback logic and gets a reviewed plan first.

## The night: delegation, not autonomy

Shortly before one, Markus goes to bed. Before that he starts a session in the Claude Code app that works through the fresh tasks. This matters, because it is often told differently: the agents do not run on their own around the clock. They work because someone gave them the job – just while that someone is asleep.

-   0:21 The window can be dragged freely on the desktop – the task before, already started in the evening.
-   1:29 An exhausted quota gets its own, understandable message.
-   2:19 The new design is done: floating avatar, pill, icons on the ring, pause by tap.

Done does not mean “somehow works” here. Before the first edit, Codex – a second model from a different vendor – reviewed the plan and found a real bug: resuming while an answer was still pending would have opened a wrong conversation round. After the implementation Codex reviewed the code again, found another bug, and after that fix a third one the fix itself had introduced. Only then: around five thousand frontend tests green, browser tests on desktop and in an iPhone simulation green, commit.

[![Board with five columns; bottom right, the agent Theo floats as a round avatar with a coloured ring, the bar “Theo · Listening” beneath it and four small buttons at the ring](https://www.ai-projects-hub.com/assets/pitch/13-voice-avatar.en.webp)](https://www.ai-projects-hub.com/assets/pitch/13-voice-avatar.en.webp)

The result of the night: the agent floats above the board and listens, the buttons sit small on the ring. Shown here is Theo, another agent on the team – the window looks the same for every agent.

That is the part you do not see from outside and the one that makes the difference: one agent builds, another one hunts for bugs, and neither of them gets to decide alone that a finding does not count.

## The morning: test, talk, next round

At half past seven Markus tests the result – by voice again, on the desktop and on the iPhone. The verdict: “Looks really cool.” And right away the next observations:

-   When the status in the pill changes, its width changes – and the circle above jumps sideways. Task at 8:06, fixed at 8:30: the window now hangs on the circle instead of its left edge, and the pill only shows short words.
-   On the iPhone the conversation should look like a phone call. Shipped at 8:54.
-   The conversation thread behind the avatar should be selectable instead of pinned. Shipped at 9:36.
-   The status ring still twitches slightly on a change. The suspected cause is in the task – explicitly as a hypothesis that has to be confirmed first. Still open.

[![iPhone screen, all black: Theo’s avatar in its coloured status ring at the top, below it the pill “Theo · Listening”, then three round buttons “Open chat”, “Chats” and “Settings”, and a red “Close” button at the bottom](https://www.ai-projects-hub.com/assets/pitch/14-voice-iphone.en.webp)](https://www.ai-projects-hub.com/assets/pitch/14-voice-iphone.en.webp)

On the iPhone it looks like a phone call: a black screen, large round buttons, Close in red and set apart.

Not every idea got built. A frosted-glass effect inside the circle sits in the backlog, because Markus wants to live with the current state for a while first. That is a result, too.

## What this night shows

-   **The conversation is the spec.** Between “the buttons are too big” and a task with testable criteria there are minutes, not a meeting. The agent asks back when speech recognition mishears something – once, a German “ja” came through as “Theo”, the name of another agent on the team.
-   **The board is the memory.** The night session did not know the conversation. It knew the tasks. What was not in a task did not get built.
-   **Stumbles are part of it.** An exhausted quota, an answer that never arrived, a ring that twitches. Each one became a task instead of a note that gets lost.
-   **The human stays in control.** Markus gave the job, tested, approved. In between, he slept.

From the idea at 20:48 to the last commit at 9:36: just under thirteen hours, nine shipped steps, four new ideas in the backlog. And this post? It came out of the same conversation – as a task, after Markus said it would make a nice blog post.

* * *

More about the Hub: [overview](https://www.ai-projects-hub.com/en/index.md) · [Speaking and listening in detail](https://www.ai-projects-hub.com/en/pitch.html#voice) · [more posts](https://www.ai-projects-hub.com/en/blog/index.md)

[Deutsch](https://www.ai-projects-hub.com/de/blog/gespraech-zum-feature.md)· [Imprint](https://www.ai-projects-hub.com/en/imprint.html)· [Privacy](https://www.ai-projects-hub.com/en/privacy.html)· © 2026 Markus Roth
