Technical

One Space per matter: the architecture of working together

Donna

The Donna team

3 June 2026 · 8 min read

Donna’s founding promise is spatial: one matter, one place. Everyone who belongs to the work, the lawyer, the client, the other professionals, sees the same Space, live. This post is about the machinery underneath that promise, because “live” is an architecture, not an adjective.

One connection, everything on it

The naive way to build realtime features is one channel per feature: a socket for chat, polling for notifications, another socket for presence. It works in a demo and decays in production: connections multiply, mobile batteries drain, and features update at visibly different speeds, which reads as jank.

Donna holds exactly one realtime connection per person, and everything rides it: presence, document processing progress, typing indicators, messages, task and timeline changes, notifications. Change your profile photo and every screen where your avatar appears repaints in under a second, everywhere, for everyone, because identity updates are just another passenger on the same bus.

LawyerClientAgentone connection eachThe Space’s buspresencedocumentsmessagestasks + timelinenotificationsScreens repaintBadges updatePresence moves
One bus
Each person holds a single connection to the Space. Presence, documents, messages, tasks and notifications are multiplexed over it, so everything updates at the same speed.

Presence is identity, live

Presence in Donna is not a green dot bolted onto a page. It is a live identity layer: who is in the Space, which document they are in, where their cursor is in the draft, which cell they are occupying in the spreadsheet. The same layer answers all of it, which is why a colleague’s caret in a contract draft is the same colour as their avatar in the header and their chip in the sheet: one identity, painted consistently everywhere.

Co-editing without a lost keystroke

Documents and spreadsheets in a Space are collaborative, and collaboration is where realtime systems go to die: two people type in the same paragraph, or an AI edit lands while a human is mid-cell, and somebody’s work evaporates. We use conflict-free replicated data types, CRDTs, as the substrate for both surfaces. Every edit is a mergeable operation rather than an overwrite, so concurrent changes interleave instead of colliding.

  • Drafting runs live multi-caret editing with Word-style tracked changes as you type, attributed to the right person even across reloads.
  • Spreadsheets merge cell edits, formulas and formatting from several hands at once, and AI edits enter through the same operation stream as human ones, so an approval applies cleanly on top of live co-editing.
  • Recovery is built in. A dropped connection replays what was missed; a stale client resyncs from a durable epoch rather than trusting its own memory.
Sub-second
Typical time from an edit, a message or a profile change to every open screen in the Space reflecting it.

Live, but only what you may see

The hard part of shared Spaces is not moving updates fast, it is not moving them to the wrong people. Every event on the bus is authorised against the Space’s permission model before delivery: a client sees the matter’s shared surface, not the firm’s internal notes; a buyer in a property Space sees their own progress, not the other buyers’. The same trimming applies at the retrieval layer, so Donna’s own answers are computed only from what the asker is entitled to read. Visibility is a property of the architecture, not a filter applied at the end.

Why this matters more than a feature list

Every individual feature here exists somewhere else: presence in design tools, CRDTs in note apps, realtime dashboards in project trackers. The point of Donna is that a legal matter needs all of it in one permissioned place, or the matter fragments back into email. One Space per matter is not a slogan about tidiness. It is a claim about architecture, and the architecture is what keeps it true at 2pm on settlement day when everyone is in the room at once.

Reading about it is one thing. Working in it is another.

60 seconds. No credit card.