Case / 01 Overview Frame

Case study Codigy · Quorum · AI meeting tool · 0→1

Fewer meetings, clear agenda & outcomes

Companies cut professional facilitators, but the meetings stayed. Quorum takes over the facilitator's job. It collects everyone's take before the meeting, keeps the live discussion on the agenda, and ends each topic with a decision, an owner or a reason it was parked.

5 wk First commit → v0.0.64
Quorum meeting screen
Role
Co-founder, product designer. Owned research, UX, UI, the design system and the meeting flow. Built it with Claude Code.
Team
Who else worked on it, and in what role
Timeline
1 Sep 2026 → present. 57 tagged releases. v0.0.64 shipped on 5 Oct.
Platform
Web and Windows desktop (Electron), with phone layouts. One Expo codebase. Self-hosted sync and video.
Case / 02 Context Frame

02 Context

Codigy's second product

Codigy already ran retrospectives for product and engineering teams at Vinted, Namecheap, Ovoko and Pleo. Quorum covers every meeting, not just the retro. The product is Quorum, the company is Codigy.

Who uses it

  • Hosts: team leads and managers who plan recurring meetings for one or more groups.
  • Participants: answer the agenda before the meeting, then decide together in the call.
  • Pairs in 1-on-1s, including guests from outside the organization.

A meeting's life

  • Setting up → Feedback → Waiting room → Live → Wrap-up → Archived.
  • Agenda, call, transcript, decisions and tasks all happen in one place.
  • Each team's space is private. Admins only see a team's meetings by joining it, and the team's audit log records the join.
Quorum's Meetings list: a live meeting with 5 online, a waiting room, two meetings collecting feedback (one at full consensus) and one being set up

Meetings list. Every card shows where its meeting stands. "Full consensus" asks whether the meeting is still needed.

Case / 03 Problem Frame

03 Problem

Nobody keeps the meeting on track

Without a facilitator, three things go wrong. People repeat what they could have written down. The discussion drifts off the agenda. And the meeting ends without anyone owning the next step.

Before

Opinions are given out loud, one at a time, in the room. The first voice sets the tone and the rest echo it.

During

A new subject comes up and the meeting follows it. The planned items run out of time.

After

Topics end with "let's follow up". No owner, no date. Next week the same discussion starts again.

One verbatim quote from a team lead about meetings after facilitators were cut, and one number (hours in meetings per week, share of meetings that end without an owner). Attribute by role and company size.

Case / 04 Goals & metrics Frame

04 Goals & success metrics

Three promises, each with a mechanism

The tagline is "Fewer meetings, no open loops." Every promise names the feature that backs it. If the product can't back a claim yet, the claim goes on the roadmap instead of into the copy.

PromiseBacked byTarget
Fewer meetingsSealed feedback before the meeting. On full consensus, Quorum asks: "Do we really need a meeting?"target
On agenda, no side questsThe discussion map. Live transcript filed under agenda items. New subjects get parked as their own topicstarget
Meetings with outcomesEvery topic closes as a decision, an action item with an owner and a date, or parkedtarget
Guardrail: people stay in controlThe agent only proposes. Nothing is recorded until a person presses Accept100 %
Case / 05 Constraints Frame

05 Constraints

The limits we designed inside

One designer, building with Claude Code One codebase for web, desktop and phone Team space is private No API keys on any device One small server, no GPU

Only the server decides who can open a meeting, never the meeting document itself. Admins don't get access to a team by default. They have to join it, and the team's audit log shows that they did.

Each meeting is a live, shared document stored on every device, so a dropped connection pauses syncing instead of emptying the screen. The AI runs through a server proxy that holds the organization's key, so no device ever has it.

Case / 06 Research Frame

06 Research & discovery

Three findings that set the direction

Workshops, usability tests and prototypes with teams that run recurring meetings. These three findings changed the plan.

Finding 01

Most of a meeting can happen before it

Yes/no questions, ratings and "pick one of these" don't need a room. So Quorum collects them before the meeting, and the meeting covers only what's still undecided.

Finding 02

Answers are only honest if nobody can see the others

If people can read each other's feedback, they echo it. So answers stay sealed until the meeting goes live. Before that, others only see "Submitted" or "Pending".

Finding 03

The promises had gaps

We checked the three promises against the code. Nothing made meetings fewer, only shorter. And nothing stopped a meeting from closing with open loops. Two days later, the "Full consensus" check shipped.

Method details: how many workshops and test sessions, with which teams (size, industry), who ran them, and one quote that changed a decision.

Case / 07 Ideation Frame

07 Ideation & exploration

Three shapes for the live meeting

The live screen was rebuilt twice in two weeks. Each version shipped, got used in real meetings and was replaced when it stopped working.

Screen: the first live stage, a page of agenda cards

A · Page of cards. Rejected on 8 Sep. It read like a document, not a conversation, and the current topic got lost in the scroll.

Screen: the two-column room with the topic controller

B · Two-column room. Replaced. Focused, but it only showed the plan. Anything the room raised that wasn't on the agenda had nowhere to go.

The discussion map: topic columns under chapter titles

C · Discussion map. Kept on 23 Sep. The whole screen is the meeting: one column per agenda item first, then whatever the room raises.

Confirm the reasons A and B lost: what you saw in a real meeting that made you rebuild it.

Case / 08 Solution Frame

08 The solution

Say it before, settle it during, own it after

An assistant builds the agenda with the host through a short chat. Everyone answers it privately. In the live call, an agent transcribes and files what's said onto a map of topics. Each topic ends with a decision, an owner or a reason it was parked, and action items land in each owner's Tasks.

A live meeting on the discussion map: two chapters, five topic columns, an agent recommendation, and Meeting progress at 7 of 9

The live meeting. Topics are grouped into chapters, and Meeting progress reads 7 of 9 settled. The call folds into the pill at the bottom.

Setting up a meeting: the agenda built in a short chat, with a pick-any poll item

Setting up. The agenda comes out of a short chat, built with the assistant or by hand as shown. Each item says how people answer before the meeting.

A sub-topic with a summary, a poll with vote shares and an agent recommendation with Accept, Edit and Decline

A topic up close. A summary of every opinion, a poll with vote shares, and the agent's drafted decision waiting above Resolve.

Pre-meeting feedback: a poll answered with a note, a yes/no answered, a rating waiting

Feedback before the meeting. Answers stay sealed. Others only see "Submitted" until the meeting goes live.

Waiting room with countdown, host and agenda topics

Waiting room. A countdown, the host and the topics. People test their camera and mic, then the host presses Start.

End of meeting: the Outcomes tab listing an action item with owner and due date, and three decisions

Wrap-up. Every decision, and every action item with its owner and due date, in one list.

Tasks: action items from meetings, due soonest first, overdue dates in orange

Tasks. Every action item you own, from all your meetings, with the soonest due first.

The discussion map on a phone
Tasks on a phone

The same app on a phone. You pan the map by sliding and zoom by pinching, with no zoom buttons.

Key decisions

Decision 01

Feedback stays sealed until the meeting goes live. It's the only promise we can state flatly, because the code enforces it, and it's why the answers are honest.

Decision 02

The agent suggests, people decide. When the room seems to agree, the agent drafts the decision or the action item, with the owner and date filled in. Nothing is recorded until someone presses Accept. Decline it, and the agent won't suggest it again.

Decision 03

Ask, never cancel. When every participant has answered and everyone agrees, the meeting card asks "Do we really need a meeting?" The host chooses to hold it anyway or skip it.

Decision 04

The agenda is the backbone of the meeting. Speech gets sorted into information, questions, decisions, running the meeting and asides. Off-agenda subjects become their own topic columns after the plan. Asides stay off the map.

Decision 05

"Hey Qiu" answers from the team's files. The wake word is detected on the device, so listening for it sends nothing anywhere. The answer cites the files it used. If the files don't cover the question, Qiu says so.

Case / 09 Design system Frame

09 Design system & details

A generative UI library

The agent doesn't invent UI. For every line it hears, it picks one of ten map components (topic, sub-topic, question, poll, materials, recommendation, outcome and more) or keeps the line off the map. Each component has fixed sizes and every state it can be in. So a map the agent builds always looks like one a person would.

One topic building itself, in the product's own tokens and sizes. Asides stay off the map. A drafted decision only becomes an outcome when someone presses Accept.

The discussion map in the Midnight theme

The same map in Midnight. Components use colour roles rather than fixed colours, so a theme only swaps token values.

Rules the system enforces

  • Airy UI. No helper text under inputs. Each block has a header, and any explanation goes in that header's info tooltip.
  • An info button only appears where the label leaves a real question.
  • Every control covers every state it can be in: Normal, Hover, Pressed, Disabled, Error, Selected. A missing state is a bug.

Edge cases we designed for

  • Someone opened the meeting but didn't answer: that blocks "Full consensus".
  • Everyone leaves a running meeting: it pauses, and the paused time isn't counted.
  • On touch screens, tooltips slide up from the bottom and the map is navigated by pinch, with no zoom buttons.
Case / 10 Validation Frame

10 Validation

Three reversals in real meetings

Most of the 57 releases were small fixes. These three reversed earlier decisions.

22 Sep · No more local-only mode

The first version worked offline with just a name. But only a server can answer who belongs to a team, so Google sign-in became required. Every meeting still keeps a copy on the device.

23 Sep · Peer-to-peer calls → media server

In peer-to-peer calls, each person uploads their video once for every other participant, and without relay servers the calls only connected on one local network. We moved to a self-hosted LiveKit server on the same machine as the sync server.

28 Sep · On-device transcription removed

Whisper on the desktop needed no key. But it got names and languages wrong more often than OpenAI did, so it was removed, and quality won over cost.

Usability rounds: how many sessions, with whom, and the one finding that changed the meeting flow the most.

Case / 11 Collaboration Frame

11 Collaboration & handoff

The repo is the design file

I designed in code with Claude Code. Every component folder has a KNOWLEDGE.md with how it works, why, and what was learned. Each feature is described in three linked places: the in-app help, the design system and its KNOWLEDGE.md. CI fails if a link between them breaks.

Shipped

  • Agenda assistant and templates
  • Sealed feedback with polls, ratings and attachments
  • Discussion map with live transcription, chapters and agent recommendations
  • Video calls, screen share and shared cursors
  • Qiu: voice Q&A over Drive, GitHub and local folders
  • Wrap-up, Tasks, 1-on-1s with guests, rewards, in-app help

Cut or deferred

  • On-device transcription (lost to OpenAI on quality)
  • Per-meeting badges on the wrap-up screen (removed 18 Sep)
  • Local-only mode without an account (replaced by teams)
  • Sealed feedback enforced by the server, not just the UI (needs a data-model change)
  • Native iOS and Android builds (device storage and audio capture not built yet)
Case / 12 Results Frame

12 Results

Five weeks, idea to production

57Tagged releases
~96kLines of code
30KNOWLEDGE.md files
MetricBeforeAfter
Meeting length against the timebox——
Topics settled per meeting——
Action items with an owner and a date——
Meetings skipped after full consensus——

Live at quorum.co-openhagen.com, with a Windows desktop app. Teams using it so far and one sentence of qualitative feedback

Case / 13 Learnings Frame

13 Learnings & next steps

What I'd do differently

Learnings

  • Write the rule before the screen. With AI writing the code, the written rules (KNOWLEDGE files, the design system) are what kept 57 releases consistent.
  • Give every promise a backer. Checking the copy against the code surfaced two missing features before any user noticed.
  • The agent suggests, a person decides. Trust held because the agent never records a decision on its own.

Still open

  • Sealed feedback is hidden by the UI, but each device still receives the data. Real sealing has to happen on the server.
  • Should closing a meeting with open loops be blocked, or just flagged as it is today?
  • Native mobile apps: storage on the device and microphone capture.