Jobs

A job belongs to an organization and has a URL-safe slug that is unique within that org. Its lifecycle is tracked by status:
StatusMeaning
draftNot yet public.
openLive on the public board and accepting applications.
closedNo longer accepting applications.
Only jobs with status open appear on the public board.
Each job carries a title, description, optional location, and optional employmentType.

The public board

Every org gets a public job board at its subdomain:
{slug}.trexi.ai
The org slug is defaulted from Clerk at signup, editable in settings, and unique across all orgs. Individual jobs live at:
{slug}.trexi.ai/{jobSlug}
The board is rendered from the /board/[slug] route.

Applications

When someone applies to a job, a job application is created against that job with their name, email, optional coverLetter, and optional resumeUrl. Applications move through a review pipeline via status:
StatusMeaning
newJust submitted, not yet reviewed.
reviewingUnder review.
rejectedNot moving forward.
hiredOffer accepted.
Deleting a job cascades to its applications; deleting an organization cascades to its jobs.