Status. Proposed design only. Nothing in this vault is DG client approval. No application, service or test has been executed; every scenario is Not executed. Fees and dates are open.

Data model and invariants

Source: architecture rev 3 p. 4. Conceptual only, not a final physical schema.

flowchart TD
  C[Company<br/>profile / approval state] -->|1 : many| M[Membership<br/>company / user / role]
  U[User<br/>identity / state] -->|1 : 1 active| M
  C -->|owns| O[Opportunity<br/>owning company / status]
  O -->|versions| OV[Opportunity version<br/>content / approval / revision]
  OV -->|reviewed by| E[Expression of interest<br/>respondent / reviewed version]
  O -->|questions / discussions| CV[Conversation<br/>company pair / kind]
  CV -->|contains| MS[Message]
  CV -->|conversation actions| NA[Next action<br/>assignee / due / state]

Balanced permits one active company membership per user; a company has many members. Memberships stay company-scoped so Comprehensive can extend them later.

Supporting record / invariantConstraint
Approval, outbox, delivery attempt, auditStore requested action + exact version, committed notification event, delivery outcome and actor evidence as separate records. Never log private message bodies.
Interest and discussion uniquenessOne active interest per respondent company per opportunity; no self-response; repeated acceptance creates one discussion; questions may carry a nullable interest reference.
Version and assignment integrityInterest references an immutable published version; approval binds exact content and intended action; assignees must be active authorised members of the relevant company.
Index and retentionIndex memberships, active opportunities, conversation participants, pending actions and job claims. Retention, deletion and audit exceptions need DG policy before live data (Q09).

Scenarios: T01, T13, T18, T19, T21, T33.