Appearance
Epic 12 — Agency Tier
BE-AGENCY-001 — Agency role & multi-talent management
- [x] Implemented
Files:
- Edit:
prisma/schema.prisma— addAgencyProfile,AgencyTalentLink - Edit:
src/graphql/schema/index.ts - Create:
src/graphql/resolvers/agency.ts - Create:
src/services/agency/index.ts
Schema:
prisma
model AgencyProfile {
id String @id @default(cuid())
userId String @unique
user User @relation(fields: [userId], references: [id])
agencyName String
plan AgencyPlan @default(ENTRY)
talents AgencyTalentLink[]
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
@@map("agency_profiles")
}
enum AgencyPlan { ENTRY STANDARD PREMIUM }
model AgencyTalentLink {
id String @id @default(cuid())
agencyId String
agency AgencyProfile @relation(fields: [agencyId], references: [id])
talentId String
talent TalentProfile @relation(fields: [talentId], references: [id])
status String @default("ACTIVE")
@@unique([agencyId, talentId])
@@map("agency_talent_links")
}Limits per plan: ENTRY → 10 talents, STANDARD → 25, PREMIUM → 75.
Mutations: createAgencyProfile(input), inviteTalentToAgency(talentId), removeTalentFromAgency(talentId), bulkApplyToJob(jobId, talentIds: [ID!]!) (limited to plan count)
FE-AGENCY-001 — Agency dashboard
- [x] Implemented
Files:
- Create:
apps/app/src/pages/agency/AgencyDashboardPage.tsx - Create:
apps/app/src/pages/agency/AgencyTalentsPage.tsx - Create:
apps/app/src/lib/queries/agency.ts - Create:
apps/app/src/hooks/useAgency.ts - Edit:
apps/app/src/App.tsx— add agency routes (agency-role guard)
Description: Agency role sees a dashboard with their roster of talents, profile completeness overview, and bulk application tools. Matches "Agency Account" and "Jornada - Talent Agency" frames in Figma.