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 theUserSharingSelectorcomponent and role selector that allowed sharing with company teammates at creation time. TheuserSharesfield is no longer sent in theCREATE_TALENTPOOLmutation input. - Add Collaborator (
/company/resume/talentpool/details/[id]/add-collaborator) — removed the "Share with team members" section that usedUserSharingSelector+SHARE_TALENT_LIST_WITH_USERmutation.
Added: Collaborating Partner Sharing
The add-collaborator page now has a single unified card with two modes:
Mode 1 — Share with Existing Partner
- User selects a partner from a searchable dropdown (fetches accepted partners via
LIST_MY_COLLABORATORSwithstatus: "ACCEPTED") - User selects a permission level (View / Edit / Manage)
- Optional notes field
- Submits via
SHARE_TALENT_POOL_WITH_COLLABORATORmutation
Mode 2 — Invite New Partner
- User selects the
"+ Invite a new collaborating partner"option at the bottom of the dropdown - Inline form fields appear: email, first name, last name, custom message
- Role is auto-assigned as "External Sales"
- On submit:
- Creates a contact via
CREATE_CONTACT - Sends collaboration invitation via
CREATE_COLLABORATION_INVITATION
- Creates a contact via
- 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
| File | Change |
|---|---|
app/company/resume/talentpool/add/page.tsx | Removed UserSharingSelector, TalentPoolRole import, user sharing state/logic, userShares from mutation input |
app/company/resume/talentpool/details/[id]/add-collaborator/page.tsx | Full rewrite — single card with partner dropdown + invite inline |
app/company/resume/talentpool/_components/CollaboratorListTab.tsx | Button 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
| Operation | Source | Purpose |
|---|---|---|
LIST_MY_COLLABORATORS | graphql/operations/collaboratingPartners/queries.ts | Fetch accepted partners for dropdown |
SHARE_TALENT_POOL_WITH_COLLABORATOR | graphql/operations/collaboratingPartners/mutations.ts | Share pool with existing partner |
CREATE_COLLABORATION_INVITATION | graphql/operations/collaboratingPartners/mutations.ts | Invite new partner |
CREATE_CONTACT | graphql/operations/contacts/mutations.ts | Auto-create contact for new partner |
GET_ALL_ROLES | graphql/operations/role/queries.ts | Resolve "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
useTalentPoolCollaboratorshook (GET_TALENT_POOL_USER_SHARESquery) - External email shares — via the same hook (
GET_TALENT_POOL_EXTERNAL_SHARESquery)
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.
Related Pages
| Page | URL | Purpose |
|---|---|---|
| Create Talent Pool | /company/resume/talentpool/add | Create 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-collaborator | Share pool or invite partner |
| Collaborating Partners | /company/connections/collaboratingpartner | Manage all collaborating partners |
| Partner Details | /company/connections/collaboratingpartner/[id] | View partner with shared resources |