Skip to main content

Talent Pool Sharing — Collaborating Partners Only

Overview

Talent pool sharing has been migrated from an internal team-member model to an external collaborating partners model. Users can no longer share talent pools with internal company users directly. Instead, sharing is exclusively done through collaborating partners (managed at /company/connections/collaboratingpartner).

Date: 2026-03-25


What Changed

Removed: Internal User Sharing

  • Create Talent Pool (/company/resume/talentpool/add) — removed the UserSharingSelector component and role selector that allowed sharing with company teammates at creation time. The userShares field is no longer sent in the CREATE_TALENTPOOL mutation input.
  • Add Collaborator (/company/resume/talentpool/details/[id]/add-collaborator) — removed the "Share with team members" section that used UserSharingSelector + SHARE_TALENT_LIST_WITH_USER mutation.

Added: Collaborating Partner Sharing

The add-collaborator page now has a single unified card with two modes:

Mode 1 — Share with Existing Partner

  1. User selects a partner from a searchable dropdown (fetches accepted partners via LIST_MY_COLLABORATORS with status: "ACCEPTED")
  2. User selects a permission level (View / Edit / Manage)
  3. Optional notes field
  4. Submits via SHARE_TALENT_POOL_WITH_COLLABORATOR mutation

Mode 2 — Invite New Partner

  1. User selects the "+ Invite a new collaborating partner" option at the bottom of the dropdown
  2. Inline form fields appear: email, first name, last name, custom message
  3. Role is auto-assigned as "External Sales"
  4. On submit:
    • Creates a contact via CREATE_CONTACT
    • Sends collaboration invitation via CREATE_COLLABORATION_INVITATION
  5. Once the partner accepts, the user can return and share the talent pool with them

The footer button label adapts dynamically: "Share" for existing partners, "Send Invitation" for new invitations.


File Changes

FileChange
app/company/resume/talentpool/add/page.tsxRemoved UserSharingSelector, TalentPoolRole import, user sharing state/logic, userShares from mutation input
app/company/resume/talentpool/details/[id]/add-collaborator/page.tsxFull rewrite — single card with partner dropdown + invite inline
app/company/resume/talentpool/_components/CollaboratorListTab.tsxButton label changed from "+ Collaborator" to "+ Share with Partner"

Architecture

Component Structure

add-collaborator/page.tsx
├── PageBlock (sticky header + footer)
└── FormCard "Share with collaborating partner"
├── TWSelectAutocomplete (partner dropdown)
│ ├── Existing partners (from LIST_MY_COLLABORATORS)
│ └── "+ Invite a new collaborating partner" (sentinel option)

├── [If existing partner selected]
│ ├── TWSelect (permission: VIEW / EDIT / MANAGE)
│ └── TWInput (optional notes)

└── [If "invite new" selected]
├── TWInput (email, required)
├── TWInput (first name, required)
├── TWInput (last name, required)
├── Role badge (External Sales, auto-assigned)
└── TWInput (custom message, optional)

GraphQL Operations Used

OperationSourcePurpose
LIST_MY_COLLABORATORSgraphql/operations/collaboratingPartners/queries.tsFetch accepted partners for dropdown
SHARE_TALENT_POOL_WITH_COLLABORATORgraphql/operations/collaboratingPartners/mutations.tsShare pool with existing partner
CREATE_COLLABORATION_INVITATIONgraphql/operations/collaboratingPartners/mutations.tsInvite new partner
CREATE_CONTACTgraphql/operations/contacts/mutations.tsAuto-create contact for new partner
GET_ALL_ROLESgraphql/operations/role/queries.tsResolve "External Sales" role ID

Mutation Inputs

Share with existing partner:

shareTalentPoolWithCollaborator(input: {
talentPoolId: String!
collaboratorId: String! // from LIST_MY_COLLABORATORS
permission: String! // VIEW | EDIT | MANAGE
notes: String // optional
})

Invite new partner:

// Step 1
createContact(input: {
companyId, email, firstName, lastName, responsibleUserId
})

// Step 2
createCollaborationInvitation(input: {
companyId, email, message?, roleId? // roleId = External Sales
})

Collaborator List Tab

The Collaborator tab on the talent pool details page (CollaboratorListTab.tsx) continues to display:

  • Internal user shares — via useTalentPoolCollaborators hook (GET_TALENT_POOL_USER_SHARES query)
  • External email shares — via the same hook (GET_TALENT_POOL_EXTERNAL_SHARES query)

Pending: Collaborator Partner Shares Display

The SHARE_TALENT_POOL_WITH_COLLABORATOR mutation exists but there is no backend query yet to list collaborating partner shares for a specific talent pool. Once the backend adds this query, the useTalentPoolCollaborators hook should be updated to also fetch and display these shares in the Collaborator tab.


PageURLPurpose
Create Talent Pool/company/resume/talentpool/addCreate pool (no sharing at creation)
Talent Pool Details/company/resume/talentpool/details/[id]View pool with Collaborator tab
Add Collaborator/company/resume/talentpool/details/[id]/add-collaboratorShare pool or invite partner
Collaborating Partners/company/connections/collaboratingpartnerManage all collaborating partners
Partner Details/company/connections/collaboratingpartner/[id]View partner with shared resources