| workspace | to-one (Workspace) | ⚪ No (nullable ManyToOne) | The workspace that owns this person record. Provides multi-tenant scope: all repository queries filter by workspace. Nullable to allow global catalog entries, though in practice all active People records have a workspace. |
| source_workspace_connector | to-one (WorkspaceConnector) | ⚪ No (nullable ManyToOne) | The WorkspaceConnector instance that created or last synced this record. NULL for manually created people. Used by the pipeline to track provenance and to surface the connector-logo-name composite in the data-views records page. |
| media | to-one (Media) | ⚪ No (nullable ManyToOne) | Profile photo / avatar for this person. Linked via a direct ManyToOne to the shared Media entity. The overrides.yml marks media.url as editable with display_type: image; write goes through add/delete join-entity mutations, not a scalar PATCH. |
| emails | to-many (PersonEmail) | ⚪ No | Email addresses linked to this person through the PersonEmail pivot entity. Each pivot record carries is_primary, is_verify, and label (work/personal/other). A partial unique index ensures at most one primary email per person (WHERE deleted_at IS NULL AND is_primary IS TRUE). |
| phones | to-many (PersonPhone) | ⚪ No | Phone numbers linked through the PersonPhone pivot entity. Each pivot record carries is_primary, is_verify, and label (mobile/work/personal/other). A partial unique index enforces at most one primary phone per person. Decorated @Enrichable on the People side — enrichment pipeline may populate phone data. |
| locations | to-many (PersonLocation) | ⚪ No | Geographic locations linked through the PersonLocation pivot entity. Each pivot record carries is_primary, is_legal, and label. A partial unique index enforces at most one primary location per person. |
| web_links | to-many (PersonWebLink) | ⚪ No | Social profile or other web links associated with this person, linked through the PersonWebLink pivot entity. Decorated @Enrichable on the People side — enrichment pipeline may populate social links (e.g. LinkedIn). |
| companies | to-many (CompanyPerson) | ⚪ No | Company associations for this person, modelled through the CompanyPerson pivot entity. Each pivot record carries a relationship_type enum (contact / employee / owner / other, default: other). A person may be associated with multiple companies across workspaces. |
| memberships | to-many (Membership) | ⚪ No | Workspace membership records for this person. The Membership entity links People to a Workspace with role and status information for platform access control. |
| collect | to-many (Collect) | ⚪ No | Collect (document collection) records associated with this person. Links the People entity into the document collection pipeline. |
| workspace_connectors | to-many (WorkspaceConnector) | ⚪ No | WorkspaceConnector records whose person field points to this People row. Used to associate a connector instance with the authenticated platform user who installed or owns it. |
| people_workspace_connectors | to-many (PeopleWorkspaceConnector) | ⚪ No | Per-row provenance records linking this People entity to specific WorkspaceConnector instances that have synced it. Each PeopleWorkspaceConnector record carries a direction enum (inbound/outbound) and its own created_at / updated_at / deleted_at. Analogous to CompanyWorkspaceConnector for Companies. |