The Idea Was Right. The Technology Wasn’t Ready.
Revisiting the AI experiences we designed at Zo in 2024, what held them back, and how two years of technological progress have changed what’s possible.



In 2024, we were experimenting with something that felt like a glimpse into the future: AI agents that could participate in conversations, respond to one another, and collaborate inside group chats. We could design the experience, and even ship an early version of it, but the technology was still catching up with the ambition. Two years later, I decided to revisit those ideas. This time, the possibilities look very different.
What I started with
Echo let you pick several AI apps and have each one reply to your message. Echochamber let you set goals and a number of exchanges, then watch the apps talk to each other. Both lived behind the composer’s apps button, both charged Zaps, and both ran in the open group chat.
The gaps
Looking back at the 2024 flows, the gaps fall into two kinds: things the design never factored in, and things the models of the time couldn’t do yet.
What I didn’t factor in
No ending
Echochamber promised to "discuss and resolve", but I never decided what it should hand back. It stopped when the talking stopped: no summary, no decision, no next step.
Who it was for
In a group of 18, I never decided who sees the result. The confirmation said "only you can see this", then every agent reply landed in front of the whole chat.
More agents, same answer
I assumed more agents meant better answers. Agents drift towards agreeing with each other, and copies of one model agree fastest. There were no roles and no skeptic to push back.
A spectator once it started
After you pressed start, you could only watch. You couldn’t steer it, add a point, or stop early and keep what had been said.
Paying for talk, not answers
The price counted exchanges, and "exchange" was never defined. Nothing stopped a debate once it was settled, and Echo charged for every message while it was on.
The name described the failure
An echo chamber is a room where everyone agrees, which is exactly where unchecked AI debate drifts. And Echo and Echochamber were one word apart for two very different features.
What the technology couldn’t do in 2024
Several models per message was expensive
Frontier models cost $10 to $30 per million tokens, so the default was GPT-3.5 and every exchange had to be rationed and charged.
It couldn’t read the room
GPT-3.5 could take in about 16,000 tokens. Debating the actual group conversation, rather than one prompt, was out of reach for the default model.
No dependable result card
Guaranteed structured output arrived in August 2024. Before that, turning a debate into a clean decision, split or plan meant parsing free text and hoping.
Agents couldn’t share context
MCP arrived in November 2024 and A2A in 2025. Zo Apps had no standard way to pass context or tools between agents in one conversation.
No web search in the APIs
Neither OpenAI’s nor Anthropic’s API had built-in search then, so answers about prices, places or news could be out of date.
What changed in AI since 2024
My new direction did not come from the screens alone. Between 2024 and now, AI changed in seven ways that each pointed at a specific design decision.
From chatbots to agents
In 2024 AI mostly answered questions. Now it uses tools, reads sources and takes actions. Anthropic introduced the Model Context Protocol in November 2024, and it became the common way to plug models into tools and data.
Seats can search the web, cite sources and use Zo apps. An outcome can be something you act on, like a suggested split, not just a paragraph.
Models that think, and think in parallel
OpenAI’s o1 started a run of reasoning models that spend more time before answering. By July 2025 xAI’s Grok 4 Heavy was running several agents side by side and comparing their work. Quality now comes from extra thinking and from parallel attempts, more than from long back-and-forth.
Council runs three seats at once and compares them. Debate is capped at a few rounds and stops early once positions stop moving.
AI moved into group chats
ChatGPT and Poe both launched group chats where people and models share a thread. ChatGPT stays quiet unless it is asked and offers a mention-only mode. The etiquette of an AI in a room of friends became a design problem everyone is solving.
Council and Debate start from the apps button or an @mention, never on their own. The group sees one result, and debates run in their own thread.
Comparing models became a product
Karpathy’s open-source LLM Council and Perplexity’s Model Council both send one question to several models and synthesise one answer. People want to see where models agree and where they don’t, not pick a single favourite.
Echo became Council. The card leads with where the models land, then shows the split and lets you read every answer.
Cost and context stopped being the constraint
Epoch AI measures the price of a fixed level of capability falling tens to hundreds of times a year. Context windows grew from about 16k tokens to 128k and beyond, and cached re-reads became cheap.
A council can be an everyday reflex and a debate fits any real argument. The price is still shown before you start, but it is small and charged only for what runs.
Agents learned to talk to each other
Google’s Agent2Agent protocol moved to the Linux Foundation in 2025 and passed 150 supporting organisations within a year. With MCP for tools and A2A for agents, a seat no longer has to be a model you host.
Seats can be specialists built in App Studio, and later agents from outside Zo can join a debate.
The agreement problem got a name
OpenAI rolled back a GPT-4o update in April 2025 because it had become too agreeable. Research on multi-agent debate kept finding the same thing: copies of one model drift into agreeing with each other.
Seats come from different model families, sides are assigned at random, the strongest objection is always kept, and the group can vote on the result.
The numbers behind it
The original designs defaulted to GPT-3.5. Most of the limits I designed around then have since gone away. One has not: agents talking to each other do not automatically produce better answers.
What OpenAI and Anthropic could do when Echo was designed
Echo and Echochamber were designed in April 2024. Both labs existed and had working APIs, but the tools this kind of feature needs were either brand new or months away.
| In 2024 | OpenAI | Anthropic |
|---|---|---|
| Models on offer | GPT-3.5 Turbo and GPT-4 Turbo. GPT-4o arrived in May, GPT-4o mini in July. | Claude 3 (Haiku, Sonnet, Opus) arrived in March. Claude 3.5 Sonnet in June. |
| Price per million tokens | GPT-3.5 Turbo $0.50 / $1.50. GPT-4 Turbo $10 / $30. GPT-4o $5 / $15. | Claude 3 Haiku $0.25 / $1.25. Claude 3 Opus $15 / $75. Claude 3.5 Sonnet $3 / $15. |
| Context | About 16k on GPT-3.5 Turbo; 128k on GPT-4 Turbo and GPT-4o. | 200k across Claude 3, but long prompts were slow and expensive to resend every turn. |
| Tools and structure | Function calling existed. Guaranteed JSON (Structured Outputs) only arrived in August 2024. | Tool use was in beta from April and generally available from the end of May 2024. |
| Re-reading the conversation | No caching until October 2024; every agent paid full price to reread the transcript. | Prompt caching entered beta in August 2024. |
| Reasoning | No reasoning models until o1-preview in September 2024. | No extended thinking yet. |
| Agents and standards | An Assistants API in beta. No group-chat product, no agent-to-agent standard. | No MCP until November 2024. Computer use arrived as a beta in October. |
So the 2024 limits were real, and they explain the original screens. A cheap model with a short memory, every turn charged at full price, unreliable structure and no way to make agents disagree well meant the safest design was a fixed number of exchanges, a price on every round, and nothing designed for the end.
| Limit | 2024, when Echo shipped | 2026, now |
|---|---|---|
| Context | About 16k tokens on GPT-3.5 Turbo. Eight rounds of four agents ran out of room. | 128k to 1M tokens is normal, so long rooms fit. |
| Cost | $0.50 in and $1.50 out per million tokens, so every round had a visible price. | The price of a fixed level of capability falls 9× to 900× a year, median 50×, recently about 200× (Epoch AI). Cached re-reads cost about 10% on Anthropic. |
| Speed | Agents answered one after another. | Parallel streaming is routine, so three seats can answer at once. |
| Orchestration | Hand-rolled turn-taking. | Group-chat orchestration with a manager that picks the next speaker ships in Microsoft Agent Framework. A2A (v1, 150+ organisations) lets agents from different vendors talk; MCP connects them to tools. |
| Products | Poe’s multi-bot chat (April 2024). | Poe group chats with up to 200 people across 200+ models, and ChatGPT group chats with a mention-only mode (both November 2025). Karpathy’s LLM Council (November 2025) and Perplexity’s Model Council (February 2026) compare models and synthesise one answer. |
What the research says about agents debating
At equal compute, multi-agent debate usually does not beat simple self-consistency voting. Most of the gain comes from aggregating answers.
Highest rate at which agents in same-model teams adopted the majority answer, while using 2.1 to 3.4 times the tokens of self-correction.
A reported comparison: mixed model families against identical copies of one model. Diversity helps.
Tokens a multi-agent system uses compared with a chat (Anthropic), with a 90.2% gain on an internal research eval. Worth it only for tasks that matter.
Many of these studies use small open models and benchmark tasks, and some figures come from preprints or secondary summaries. I treat them as direction, not law.
So the value is not watching agents chat. It is what they hand back.
What I designed
Echo became Council: several models answer at once, and Zo shows where they agree. Echochamber became Debate: agents take sides, a moderator runs it, and it ends with something you can act on. Both launch from the apps button next to + in the composer, with @council and @debate as shortcuts.
CouncilAsk once, get one card
One card instead of one bubble per agent. Seats from different model families by default. The price before you ask. Only you see it until you post it. Once it’s posted, everyone can open the full answers, and the verdict can become a vote.
DebateChoose the outcome first
You pick what comes back: a decision, a plan, pros and cons, or ranked ideas. Zo casts advocates for each option and a skeptic, spread across model families and assigned at random. You choose a length in plain terms, it stops early once positions stop moving, it runs in its own thread, and the outcome keeps the strongest objection.
VisibilityWho sees what
In a group of 18, the first question is who a result is for. My answer: a council is yours until you share it, and a debate belongs to the group.
| The person who started it | Everyone else | |
|---|---|---|
| Council, while it runs | Watches the three answers stream in | Sees nothing and gets no notification |
| Council, when it finishes | Posts it, puts it to a vote, debates it or discards it | Opens the full answers once it is posted, replies, starts a poll |
| Debate, while it runs | Watches, adds points, can end it | Sees one card in the chat, watches, adds a point (free, 1 per round) |
| Debate outcome | Posted to the chat when it finishes | Reads it and votes on it |
| Who pays | Pays for what they start | Pays only for follow-ups or debates they start |
Before and after


Four bubbles become one answer
Echo dropped every reply into the group as its own message. Council compares them in a single card that says where the models agree, where they differ, and which one the others ranked most useful.


"8 exchanges" becomes a length you understand
A round is one turn from each debater. Quick, Standard or Deep shows the rounds, the minutes and the maximum Zaps, and the debate finishes early once nobody changes their mind for a full round.


From the group chat to its own thread
Agents no longer talk over the people. The debate runs in a thread with a moderator, a stance tracker and a budget bar, and the group only gets the result.


A confirmation becomes an outcome
The old flow ended at "are you sure". The new one ends with a recommendation, how many agree, the objection that is still open, and what would change the call.
The system underneath
The flows sit on a rebuilt design system, reviewed against Apple’s interface guidance and Emil Kowalski’s design-engineering principles, and audited against WhatsApp, Telegram, iMessage, Discord and AI chat apps on Mobbin.
Colour and states
- Near-black base, with 12-step neutral and violet ramps. Violet now means action and AI, nothing else.
- Hover, pressed and disabled are solid ramp steps, so they render the same in design tools, code and exports.
- Contrast fixes: tertiary text from 4.08:1 to 4.6:1 or better; the focus ring from 1.04:1 to 8.8:1.
- Seven name colours for people, picked from their member ID, as in WhatsApp and Telegram. Real logos for each model, and an avatar each Zo App generates for itself.
Components and layout
- Message bubbles that hug their text, group by sender, and carry inline time, replies and reactions.
- One squircle field holding + and the apps button on the left and mic (or send) on the right, all styled the same. It grows with the message instead of a fully rounded pill.
- Buttons in 3 sizes, 4 variants (including Destructive) and an icon slot, plus Chip and IconButton with a 44px tap area.
- Spacing on one scale: 104 off-scale values down to 0. Radii on 6, 10, 14, 20, 28 and pill, with squircle smoothing on the composer and its menus.
- Large sheets that push the chat back, scroll inside and pin the main button.
Decisions
Echo → Council, Echochamber → Debate
Plain words people already know. "Council" also matches where the industry has landed, so Zo stands out through group chat and @mentions rather than the name.
Different model families by default
Mixed families disagree more honestly. In Debate, sides are assigned at random, so no model argues what it already believes.
A council is yours until you share it
A council runs only for the person who asked, and nobody is notified. They post it when it is worth posting, and then everyone can read every answer. A debate is the group’s argument, so it runs in the open: one card in the chat, a thread anyone can add to, and an outcome anyone can vote on.
An answer can become a vote
Any Council verdict or Debate outcome can be posted as a poll. The models inform; the group chooses.
House rules are out
I designed a way to save an outcome as a standing rule that Zo would remind the group about. It added rules and reminders to a friendship, and it didn’t earn its place. The vote does the useful part with less ceremony.
Show the price, the count and the source
One price format, counts that add up, "2 of 3 agree" with the moderator not voting, AI tags on models, and a disclaimer on anything about money or health.
What is possible now
With prices falling this fast, Council becomes cheap enough to be an everyday reflex, and Debate cheap enough for any decision a group actually argues about.
Within reach
- Specialist seats from App Studio: a Money Coach or a Travel Planner sitting next to the frontier models.
- Agents from outside Zo joining a debate over A2A, with MCP tools for live prices, maps and calendars.
- Voice: ask the council out loud and hear the comparison in a voice note.
- Highlights as group memory: past councils, debates and votes, searchable, without anything being enforced.
- Desktop and light mode, using the same tokens.
Guardrails I’m keeping
- No open-ended chatter. Every debate has a length cap and a hard budget.
- Agreement is not truth. I show the split and the open objection, not just the winner.
- Consent for chat history. Sharing the last 50 messages is off by default, and members are told when it is on.
- No likeness agents without consent. No "Vitalik" seat unless the person agrees.
- Measure what matters: how many debates end in an outcome, how many outcomes go to a vote, and how often people follow up.
- Anthropic: How we built our multi-agent research system
- Epoch AI: LLM inference price trends
- Smit et al.: Should we be going MAD?
- Sycophancy and consensus collapse in homogeneous multi-agent teams (CAIS 2026)
- Zhang et al.: heterogeneous multi-agent debate
- Review: Diversity of Thought in multi-agent debate
- Karpathy’s LLM Council, explained
- Perplexity launches Model Council
- OpenAI: Group chats in ChatGPT
- TechCrunch: Poe group chats across AI models
- Microsoft Agent Framework: group chat orchestration
- Linux Foundation: A2A protocol one year on
- Linux Foundation: Agent2Agent protocol project launch
- Anthropic: Introducing the Model Context Protocol
- OpenAI: Sycophancy in GPT-4o
- OpenAI: Introducing o1
- How Grok 4 Heavy’s multi-agent reasoning works
- OpenAI: Hello GPT-4o
- OpenAI: GPT-4o mini
- OpenAI: Structured Outputs in the API
- Anthropic: Introducing the Claude 3 family
- Anthropic: Claude 3.5 Sonnet
- Anthropic: Tool use is generally available
- Anthropic: Prompt caching
- GPT-3.5 Turbo vs GPT-4o mini: price and context
- Mobbin: WhatsApp poll in a group chat · Luma grouped bubbles · Character AI group chat
Zo · Council and Debate · 2026. Sample names and messages are illustrative.