Loading…
/careers is the hiring console: job-role CRUD with a JobRoleForm editor,
a candidate-application pipeline (filter, sort, status, bulk AI scoring), and
hiring settings. Types and helpers live next to the routes in types.ts and
utils.ts; components/ holds JobRoleForm.tsx and ApplicationDetails.tsx.
| Route | Purpose | Guard |
|---|---|---|
/careers | Console hub — roles list + applications pipeline (?view= tabs) | org:hrm:jobs_view (layout.tsx + page.tsx) |
/careers/roles/new | Create a role via JobRoleForm | org:hrm:jobs_view (API write needs org:hrm:jobs_manage) |
/careers/roles/[id]/edit | Edit a role (normalises type → employmentType) | Same as above |
/careers/settings | Hiring settings editor | org:hrm:jobs_manage (settings/page.tsx) |
| Method | Path | Guard | Purpose |
|---|---|---|---|
GET / POST | /api/careers/roles | Proxy-auth only for reads (no role check); org:hrm:jobs_manage for writes | List / create roles |
GET / PATCH / DELETE | /api/careers/roles/[id] | Same split | Read / update / delete one role |
GET | /api/careers/applications | org:hrm:candidates_view | Paginated, filterable application list |
PATCH | /api/careers/applications | org:hrm:candidates_manage | Update application status/notes |
POST | /api/careers/applications/bulk-score | HRM-gated | Bulk AI-score a set of applications |
GET / PUT | /api/careers/settings | org:hrm:jobs_view / org:hrm:jobs_manage | Read / save hiring settings |
Candidate submission is public and lives outside the workspace app:
POST to the root-app /api/careers/applications from /careers →
/careers/apply. See Forms and Lead APIs for the public-submit
pattern (origin check, reCAPTCHA, rate limit — no Clerk session).
org:hrm:* permission family