Six people are in a room.

One has been trying to keep a brainstorm moving. One keeps pulling the group off course. Someone else has a point they have not managed to make. The tension is not explosive. It is the ordinary, awkward kind that makes a meeting slowly stop working.

You have to say something.

The easiest AI version of this is obvious. Put the situation into a chat window. Ask a model to play a difficult colleague. Let the user reply.

That can be useful.

It is not a room.

Who heard what you said? Who answers first? Does one person soften while another pushes back? Does the quiet person ever enter the conversation? If someone leaves, are they gone from the situation or just absent from the next paragraph?

A single reply can sound like several people.

It still has no idea what it means to keep several people in a room.

That was the problem we had to solve with Conversations.

The reason I cared about that problem was not technical novelty. People need a lower-stakes place to practice the conversations that matter before the real stakes arrive: giving feedback, holding a boundary, disagreeing without losing the relationship. That practice needs useful feedback, and it needs AI kept inside honest limits.

A participant is more than a label

A participant has to be more than a name placed before a sentence.

Each person in a Conversations room is fictional. They have a stable identity and a stable place in the situation. The room knows who is present, who is speaking, who is listening, and who still holds a position even when they are quiet.

Order matters too.

If Kai speaks, Devon answers, and Kai returns, that is not one large assistant response with three labels pasted onto it. It is a sequence. Each contribution belongs to someone. Each one enters the room at a particular moment. The next moment has to begin from what actually happened, not from a plausible summary of it.

This sounds like a small implementation detail until it breaks.

Put the right sentence under the wrong face and the room stops making sense. Flatten several responses into one paragraph and the learner has to reconstruct the interaction while trying to practice inside it. Let a participant disappear because they did not speak on the latest turn and silence becomes absence.

The interface cannot repair those mistakes with better portraits.

The state has to be real.

Not real in the sense that these are living people. They are not. Conversations does not claim that a fictional participant has a mind, reads the learner’s emotions, or knows what someone in their real life secretly intends.

Real as product state.

This person is here. This person spoke. This contribution came next. This part of the conversation is committed. This is what the learner can do now.

The model does not own the room

The most important architectural decision was deciding what the language model does not control.

The model generates language for the fictional participants. It does not own the room.

The application and services own identity, order, access, persistence, replay, and the conversation lifecycle. They decide which session is active, which contributions have been accepted into its history, and whether the screen is showing the live conversation or an earlier turn.

That distinction matters because fluent language can hide broken state.

A response can read perfectly and still belong to the wrong participant. A recovered session can contain the right history and still display an older moment. A voice clip can be ready while the browser is unable to play it. A historical turn can look live unless review is deliberately kept read-only.

The model cannot talk its way out of those problems.

The system has to know what is true.

This is why reviewing an earlier turn does not continue it. Moving through committed responses does not call the model again. It does not branch the exchange, change the live tail, or create a better version of what someone might have said.

History is evidence of the conversation that happened.

It is not permission to quietly write a new one.

Movement is more than speech

A room also has more than one kind of movement.

Someone can be present without speaking, and quiet without disappearing. A participant’s outward stance is not the same thing as the words they are saying. A current caption is not the complete history.

Those distinctions keep the experience legible without pretending the system knows more than it does.

A speaking indicator can answer a simple question: whose words am I hearing? It does not need to claim that someone is angry, evasive, anxious, or dishonest. A stable seat can show that a participant is still part of the situation even when they are quiet. An away state can change how the room behaves without erasing that person’s place in what already happened.

The room has to hold together visually too.

Conversations currently supports one-to-one and group rooms with two through six total seats, including the learner. That created an easy temptation: when the room gets crowded, simplify the problem by dropping someone.

But if the authored situation needs five people, removing one to make the layout cleaner changes the conversation.

The design has to carry the social structure, not edit it for convenience.

Feedback is more than a score

Then there is the score.

People ask for one. I understand why.

A score is fast. It is familiar. It appears to answer the question sitting underneath almost every practice attempt.

Did I do well?

So when we say Conversations does not score you, some people hear something very different.

No feedback.

No judgment.

No point.

That would be a terrible practice product.

Practice without feedback is just rehearsal in the fog.

Conversations provides feedback in several ways. The private Coach can respond to a turn. The debrief looks across the full practice. Room dynamics can explain how the simulated participants responded and where the exchange moved. Specific evidence moments remain available. Cross-session Insights can surface recurring patterns, real strengths, where a person tends to struggle, and a useful next practice.

That is a lot of feedback.

What the product refuses to do is compress all of it into a number and pretend the number is the truth.

A difficult conversation does not have one denominator. Holding a boundary may create more tension and still be the right move. Making the room calmer may help, or it may mean the important thing never got said. Inviting a quiet person in may be useful in one moment and avoidance in another.

An 82 cannot tell you that.

Useful feedback can.

What happened? Why might it matter? How did the simulated room respond? What could you try next? Does the same pattern appear across several practices, or was this one moment in one conversation?

Those questions ask more of the system than producing a grade.

They also leave the final judgment where it belongs.

With the person practicing.

Recovery is part of continuity

Building the room made recovery part of the product, not an edge case.

Browsers suspend audio. Authentication refreshes replace state. Networks delay persistence. People reload a page between turns.

None of that is unusual.

It is only unusual in a demo.

The product keeps a text path because voice cannot be required to understand the conversation. It keeps voice controls explicit because a person should be able to choose how they participate. It retries where durable state may legitimately be a moment behind. It stops where guessing would show the learner a room that is no longer true.

One production issue made this distinction painfully clear to me. The conversation was intact. The audio had been prepared. The browser’s recovered presentation state was not ready to play it.

The content was right.

The experience was wrong.

Fixing it meant treating durable conversation content, temporary presentation state, and server-owned identity as three separate things. Once we named the boundaries correctly, recovery stopped looking mysterious.

The lesson was larger than audio.

Continuity is not a prompt instruction. It is an agreement across the system.

Learner control has to remain real

Difficult conversation practice creates another temptation.

Momentum.

Once a simulation starts, the product can make continuing feel like the only successful choice. That is exactly when the learner needs more control, not less.

Some rooms cover grief, health, caregiving, relationship boundaries, and other hard subjects. Those topics are not automatically failures. They are often why someone came to practice.

But the system should be able to slow down.

A hard-topic setup can offer a choice to continue or to soften how the room holds it. The learner can decline and not start at all. The system can avoid putting words in the learner’s mouth before that choice. During practice, the learner can type instead of speak, turn voices off, pass, pause, or end the room.

The feedback has boundaries too.

It can point to recorded moments. It can describe what changed in the simulated exchange. It can suggest another move.

It cannot diagnose the learner. It cannot turn an internal simulation label into a claim about a real person’s psychology. It cannot prove that a practice choice will work when the real conversation happens.

That restraint is not the absence of intelligence.

It is part of the design.

Testing is evidence, not an outcome

We tested all of this.

And then we looked at the room.

Both mattered.

Automated checks covered participant order, state transitions, replay isolation, accessibility, voice behavior, and persistence. They caught real defects. They also missed a participant layout that broke on a real desktop and a recovered-audio path that only became obvious in production use.

That does not make the tests useless.

It makes the evidence precise.

When real use finds something the suite missed, we fix the product and teach the suite what it failed to see.

None of those prove that practice transfers into someone’s life.

Availability is not efficacy.

A green build is not a human outcome.

The room can help someone rehearse a difficult moment. The person still decides what is true, what is useful, and what they are willing to say when the real conversation arrives.

What we mean by a room

So what do we mean when we say we built a room?

Not a collection of independent AI minds.

Not a synthetic video call.

Not a chatbot with more names in the transcript.

We mean a product that treats the social structure of a conversation as first-class state. Distinct fictional participants. Ordered contributions. Durable history. It also means private feedback, learner control, and explicit limits on what generated language may decide and what the system may claim.

The model supplies the words.

The room gives those words structure, memory, and limits.

That gives a person somewhere to practice what they may need to say when the stakes are real.