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 / invariant | Constraint |
|---|---|
| Approval, outbox, delivery attempt, audit | Store requested action + exact version, committed notification event, delivery outcome and actor evidence as separate records. Never log private message bodies. |
| Interest and discussion uniqueness | One 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 integrity | Interest references an immutable published version; approval binds exact content and intended action; assignees must be active authorised members of the relevant company. |
| Index and retention | Index memberships, active opportunities, conversation participants, pending actions and job claims. Retention, deletion and audit exceptions need DG policy before live data (Q09). |