For Florida law firms
Two clients on one matter stay two clients
firm lane · Deterministic — no model call
Current availability
ShippedConfigured and enabled: a firm's matter whose conflict check is clear and records joint representation, with the joint consent dated.
- Where it lives
- The client's room on the firm's matter page (/admin/matter/[id]) → Who the room is for · the co-client's room (/matter/[id]/room) · the client's matter page → Shared between the two of you · /api/room/consent · /api/room/upload · /api/room/register · /api/room/document
- What unlocks it
- a jointly represented matter's second client signs in with their own account; each client's requests, uploads and decisions stay their own, and each may choose to share them with the other
Status is evaluated against this deployment's configuration by the capability-status service at build time; the catalogue's facts were last reviewed on the date shown.
Capabilities
- ShippedAn attorney invites the co-client from the firm's side of the client's room, once the matter's conflict check is clear and records joint representation with the joint consent dated. The database refuses a co-client otherwise — and a second one — by name, and a refused invitation is never made.
- ShippedOn a matter with two clients each request is addressed: to the client, to the co-client, or to each of them (a copy each, the same words, one step). Only the person a request is for sees it, answers it and hears of it, and an item is never marked answered because the other client answered theirs.
- ShippedA decision goes to one of them; only that account reads it and answers it.
- ShippedEach client's uploads are their own: the co-client's files never reach the client or the client's helpers, and the client's never reach the co-client. The firm reads both, and an upload's state follows its file.
- ShippedThe co-client's room (/matter/[id]/room) holds where things stand, their decisions, their requests (answered with their own uploads), their own files with each one's state, and the documents the firm made available to the client. Every read goes through a door that checks an active co-principal of the matter. A co-trustee, whom the matter page never admitted, lands here too.
- ShippedA shared view, with consent: each client can let the other see their files, their requests with each item's state, and their answered decisions — in a separate place, never mixed into the other's own lists or counts. The switch is on the record, and stopping takes effect at once. In five languages.
- ShippedEvery notice links each person to a page they can open: the matter's client to the matter page, a co-principal to their room.
Limits
- A request made before the co-client joined stays the matter's client's (and any co-trustee's); the firm addresses a new one to the co-client.
- Helpers help the matter's client: they answer only a request addressed to the client (or one made before the matter had two clients), with the client's consent — never the co-client's.
- The shared view shows the other client's files, their requests' items with their states, and their answered decisions — not the words of their answers.
What EstateDraftFL refuses
| Reason code | HTTP | What it means |
|---|---|---|
| co_client_refused | 409 | A co-client joins only a firm's matter whose conflict check is clear and records joint representation, with the joint consent dated — nothing was invited. |
| co_client_exists | 409 | The matter already has a co-client, or an invitation to one — nothing was invited. |
| co_client_firm_only | 403 | The firm invites a co-client and ends a co-client's access; a client's account can do neither. |
| invalid | 400 | On a matter with two clients a request says who it is for (field: addressees) — nothing was asked. |
| not-two-clients | 409 | Sharing is between the two clients of a jointly represented matter; this matter has one. |
| not-a-client | 403 | Only each client of the matter decides what they share. |
Evidence
- supabase/migrations/20260930120000_phase11_co_clients.sql
- src/app/matter/[id]/room/page.tsx
- src/app/api/room/consent/route.ts
- src/app/api/room/upload/route.ts
- src/app/api/room/register/route.ts
- src/app/api/room/document/route.ts
- src/app/api/admin/client-requests/route.ts
- src/app/api/matter/collaborator/route.ts
- src/lib/client-room/co-clients.ts
- src/lib/client-room/notify.ts
- src/components/client-room/SharedBetweenClients.tsx
- src/components/client-room/PrincipalUploads.tsx
- src/components/client-room/FirmClientsPanel.tsx
- src/components/client-requests/FirmRequestControls.tsx
- docs/security/MASTER-PLAN-PHASE11-PART4-2026-09-30.md
Last reviewed 2026-09-30