Project ROUNDTABLE Docs
Data model

Engagements and notes

The government ledger's record of industry interactions

An engagement records a real interaction between one organization and one command. Examples include a conference discussion, a technical demonstration, a site visit, or a follow-up. It is the ledger's durable answer to “who met whom, when, and why?”

Engagement

ColumnPrisma typeRequired?DefaultMeaning
idStringYescuid()Engagement identifier.
titleStringYesNoneShort interaction title.
typeEngagementTypeYesNoneInteraction category.
statusEngagementStatusYesPLANNEDWorkflow state.
dateDateTimeYesNoneCalendar date/time represented as a timestamp.
locationString?NoNULLPlace or virtual location.
summaryString?NoNULLInteraction summary.
organizationIdStringYesNoneIndustry participant.
commandIdStringYesNoneGovernment command responsible.
createdByIdStringYesNoneGovernment creator.
createdAtDateTimeYesnow()Record creation time.
updatedAtDateTimeYes@updatedAtLast edit time.

The required organization, command, and creator foreign keys make an engagement attributable. notes is a one-to-many relation to EngagementNote.

EngagementType

ValueMeaning
CONFERENCEConference interaction.
TRADE_SHOWTrade show or exhibition.
SYMPOSIUMSymposium or research gathering.
INDUSTRY_FORUMIndustry forum.
TECH_EXERCISETechnology exercise.
SITE_VISITVisit to an organization or government site.
MEETINGOrdinary meeting.
DEMODemonstration.
OTHERAnother interaction type.

EngagementStatus

ValueMeaning
PLANNEDScheduled but not complete.
COMPLETEDInteraction occurred.
FOLLOW_UPAdditional action is needed.
CLOSEDLedger work is complete.

EngagementNote

ColumnPrisma typeRequired?DefaultMeaning
idStringYescuid()Note identifier.
engagementIdStringYesNoneParent engagement.
authorIdStringYesNoneGovernment author.
bodyStringYesNoneNote text.
createdAtDateTimeYesnow()Creation time.

Notes are append-style context tied to an engagement and author. They are different from OrgDialogueNote, which is organization-level context not tied to one event.

Duplicate warning

The dashboard looks for possible duplicate coordination when the same organization has engagements with two or more commands within the past 90 days or upcoming. This is a warning for humans, not a uniqueness constraint; the schema intentionally permits legitimate multi-command engagement.

Why creator and author are separate

Engagement.createdById records who created the ledger event. Each EngagementNote.authorId records who added a particular follow-up. A later editor does not become the original creator, and several government users can contribute notes without changing the engagement's creation attribution.

The required commandId is the government-side anchor for reporting and scope. The required organizationId is the industry-side anchor. Both are necessary even if a conversation happened at a neutral event, because the ledger needs explicit accountability.

There is no unique constraint on title/date/organization. The duplicate warning is intentionally advisory because two legitimate meetings can have similar names.