Skip to main content

Roles and loops

Personas

Platform roles: STUDENT, CORPORATE, INSTRUCTOR, EMPLOYER, ADMIN, SUPER_ADMIN.

RoleWhoDefault homePrimary job
STUDENTLearner/dashboardIntake, coaching, skills, publish profile
CORPORATEL&D / team buyer (legacy LMS)/dashboardTeams + courses
INSTRUCTORCoach (and/or course creator)/dashboardCoach setup, clients, reviews
EMPLOYERHiring company/dashboard/talentSearch, pipeline, jobs, billing
ADMIN / SUPER_ADMINOps/adminApprovals, tracks, match override, mark invoices paid

Permissions live in backend/src/config/permissions.ts and frontend/src/lib/permissions.ts. Employers get talent:search, jobs:manage, placements:manage.

Account creation

PathUIResult
Learner/auth/registerSTUDENT; email verify
Coach/become-instructorPending approval → coach setup
Employer/auth/register/employerEMPLOYER → /dashboard/talent

End-to-end loops

Learner Coach Employer
─────── ───── ────────
Register Apply (/become-instructor) Register employer
Intake (/dashboard/intake) Admin approves Create company org
Match → coach profile Coach setup checklist Request seats invoice
Sessions / evidence Clients + skill reviews Admin marks invoice paid
Publish /u/[slug] Featured (system) Search verified talent
Attest Shortlist → intro → hire

Learner

  1. Intake — /dashboard/intake
  2. Coaching hub — /dashboard/coaching/hub
  3. Evidence — /dashboard/skills, practice
  4. Publish — /u/[slug]
  5. Optional credential — /credentials/[code]

Coach

  1. Apply → approval
  2. Setup — /dashboard/coaching/availability (tracks, availability, active offering → match ready)
  3. Clients / reviews; public page /instructors/[id] (coaching first)
  4. Admin may use match override for early matches

Employer

RoutePurpose
/dashboard/talentSearch
/dashboard/talent/pipelineIntros, cohorts, placements
/dashboard/talent/jobsThin job posts
/dashboard/talent/billingSeats, credits, invoices

Admin

  • Approve instructors
  • Manage tracks & skills — /admin/career/tracks
  • Match override; mark employer invoices paid