> ## Documentation Index
> Fetch the complete documentation index at: https://docs.hitaji360.com/llms.txt
> Use this file to discover all available pages before exploring further.

# The public careers site

> The careers site is your public-facing job board — a clean, branded page where anyone on the internet can browse your open roles and apply, without…

The careers site is your public-facing job board — a clean, branded page where anyone on the internet can browse your open roles and apply, without logging in. It's the bridge between your internal recruitment and the outside world: you publish a [job opening](/hr/user/recruitment/job-openings) to the careers site, a candidate finds it and applies, and their application lands straight in your [applicant pipeline](/hr/user/recruitment/job-applicants) as a new applicant tagged with the source "Careers Page".

This page covers how openings appear publicly, how a candidate applies, and how those applications flow back into recruitment.

**You'll find this at (public):** `/careers/:slug` (your job board), `/careers/:slug/:openingSlug` (a single role)

> 📷 *Screenshot: Public careers job board with the hero, filters, and job cards — to be added.*

***

## How it fits together

There are two halves to the careers site:

1. **The careers site itself** — your branded board, identified by a **slug** (e.g. `acme-corp` → `/careers/acme-corp`), with a display name and an optional logo. It can be scoped to one business so only that business's openings show.
2. **The published openings** — only [job openings](/hr/user/recruitment/job-openings) that are **Open** *and* **published** appear on the board. Publishing is done from the opening (see below); everything else stays internal.

The board and each role's page are **public** (no sign-in), and the apply endpoint is rate-limited to keep out abuse.

***

## Publishing an opening to the careers site

An opening only reaches the public board once it's published. On the [job opening detail page](/hr/user/recruitment/job-openings):

* **Publish** pushes a non-closed opening live to the careers page (needs `hr-recruitment:approve`). A **Published** badge then shows.
* **Unpublish** pulls it back off the public board.

An opening also drops off the board automatically once it is **Closed** or past its **closes-on** date.

What a published opening shows publicly is controlled per opening: the job title, location, employment type, description, and — only if you chose to publish them — the **salary range** and the **applications-received count**. If you didn't tick "publish salary range", the band stays hidden from candidates.

***

## What a candidate sees

### The job board (`/careers/:slug`)

A branded hero (your display name and logo), a **search** box, and **filters** for employment type and location (filters only appear when there's more than one value to choose from). Each role shows as a card with its title, employment-type badge, location, salary (if published), when it was posted, and when it closes. The board says "No open positions right now" when nothing is live.

### A single role (`/careers/:slug/:openingSlug`)

The full posting: title, posted/closes dates, metadata pills (location, employment type, salary range, closing date, and applications received if published), the role description, and an **Apply Now** button.

### Applying

The **Apply** form asks for:

| Field             | Required                 | Notes                                |
| ----------------- | ------------------------ | ------------------------------------ |
| **Full name**     | Yes                      |                                      |
| **Email address** | Yes (in the public form) | Used to spot duplicate applications. |
| **Phone number**  | No                       |                                      |
| **Cover letter**  | No                       | Free text.                           |

On submit, the candidate sees an **"Application submitted"** confirmation. Behind the scenes the application:

* Creates a new [job applicant](/hr/user/recruitment/job-applicants) against that opening, with **source** "Careers Page" and **source name** set to your site's display name (so the dashboard can credit the careers site as a channel).
* Bumps the opening's **applications-received** count.

Guard rails on the public apply:

* **Duplicate guard** — the same email can't apply to the same opening twice ("You have already applied for this position.").
* **Closed / unpublished** — applying to an opening that isn't published and Open is refused.
* An opening can carry a **custom application form** with extra required fields; if it does, the public apply enforces those required fields server-side.

***

## Where applications go

Every public application appears in your [applicants pipeline](/hr/user/recruitment/job-applicants) at `/hr/recruitment/applicants` as a new **Open** (Applied) applicant against the relevant opening, sourced "Careers Page". From there it's a normal candidate — move them through the pipeline, schedule [interviews](/hr/user/recruitment/interviews), and make an [offer](/hr/user/recruitment/job-offers).

***

> ⚠️ **Current state — no in-app careers-site management screen.** Creating a careers site (its slug, display name, logo, and which business it's scoped to) is supported by the backend API, but **there is no admin page in the app to create or manage careers sites** today — the create/list/edit capability exists in the API only and isn't wired to any screen. In practice a careers site is provisioned for you (by setup/support), after which publishing openings and receiving public applications work as described above. The public board and apply flow themselves are fully live. (Flagged for the team.)

***

## Permissions

The **public** board and apply flow need no permission and no login. Managing careers sites (API-only today) is a configuration action:

| Action                                                              | Permission               |
| ------------------------------------------------------------------- | ------------------------ |
| Browse the public board / apply                                     | None (public)            |
| Publish / unpublish an opening to the board                         | `hr-recruitment:approve` |
| View careers sites                                                  | `hr-recruitment:read`    |
| Create / edit / delete careers sites (API only — see Current state) | `hr-recruitment:config`  |

***

## Related

* [Job openings](/hr/user/recruitment/job-openings) — the roles you publish to the board
* [Job applicants](/hr/user/recruitment/job-applicants) — where public applications land
* [Applicant sources](/hr/user/recruitment/applicant-sources) — how the careers site is measured as a channel
* [Recruitment overview & dashboard](/hr/user/recruitment/overview)
