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

# Job Board Management

> Manage job postings, approvals, and employer accounts

Manage the job board where sponsors and companies post career opportunities for members.

## Capabilities

| Action           | ROLE\_CLIENT\_ADMIN | ROLE\_CLIENT\_USER |
| ---------------- | ------------------- | ------------------ |
| View all jobs    | ✅                   | ✅                  |
| Approve jobs     | ✅                   | ❌                  |
| Edit jobs        | ✅                   | ❌                  |
| Manage employers | ✅                   | ❌                  |
| Set pricing      | ✅                   | ❌                  |

## Features

### Job Approval Workflow

```
Submitted → Pending Review → Approved/Rejected → Published → Expired
```

#### Acceptance Criteria

##### Frontend

* [ ] UI supports the workflows described in this feature.

##### Backend / API

* [ ] Backend behavior supports this feature as documented.

##### Permissions

* [ ] Access is restricted per the Capabilities matrix on this page (or equivalent role rules).

##### Business Rules

* [ ] All business rules for this feature are enforced.

##### Error Handling

* [ ] Error states return clear messages and appropriate HTTP status codes.

### Job Listing Fields

* Job title and description
* Company name
* Location
* Position type (full-time, part-time, contract)
* Salary range (optional)
* Application deadline
* Application method (email/URL)
* Categories

#### Acceptance Criteria

##### Frontend

* [ ] UI supports the workflows described in this feature.

##### Backend / API

* [ ] Backend behavior supports this feature as documented.

##### Permissions

* [ ] Access is restricted per the Capabilities matrix on this page (or equivalent role rules).

##### Business Rules

* [ ] All business rules for this feature are enforced.

##### Error Handling

* [ ] Error states return clear messages and appropriate HTTP status codes.

### Employer Accounts (Sponsors + Public Job Posters)

Jobs can be posted by:

* **Sponsors** (posting included as part of a sponsorship tier benefit)
* **Public job posters** (non-sponsors who create an employer account, pay, and submit a job)

Public job poster flow:

1. Employer signs up (company + primary contact)
2. Chooses a job posting product (standard/featured)
3. Pays via Stripe
4. Submits job for approval
5. Once approved, job is published until it expires

#### Acceptance Criteria

##### Frontend

* [ ] Public employer signup exists (no sponsor account required).
* [ ] Checkout exists for paid job posting products.

##### Backend / API

* [ ] Employer accounts can be created and linked to submitted jobs.
* [ ] Payment status is recorded against the job posting.

##### Permissions

* [ ] Only `ROLE_CLIENT_ADMIN` can approve/reject jobs.

##### Business Rules

* [ ] A job cannot be published until payment is successful (for paid products).
* [ ] Sponsors bypass payment when their tier includes job postings.

##### Error Handling

* [ ] Failed payments do not create published jobs.

### Pricing Options

| Type     | Description                       |
| -------- | --------------------------------- |
| Free     | Sponsors with job posting benefit |
| Standard | Paid per posting                  |
| Featured | Premium placement + highlighting  |

#### Acceptance Criteria

##### Frontend

* [ ] UI supports the workflows described in this feature.

##### Backend / API

* [ ] Backend behavior supports this feature as documented.

##### Permissions

* [ ] Access is restricted per the Capabilities matrix on this page (or equivalent role rules).

##### Business Rules

* [ ] All business rules for this feature are enforced.

##### Error Handling

* [ ] Error states return clear messages and appropriate HTTP status codes.

Applications should be handled via an **external application URL** (or email) provided in the job posting. MemberPulse may optionally track outbound clicks/apply events, but it does not need to host the application form.

## Implementation Contracts

### Backend (API)

```
GET    /api/jobs                             # List all jobs
GET    /api/jobs/pending                     # Pending approval
PUT    /api/jobs/{id}/approve                # Approve job
PUT    /api/jobs/{id}/reject                 # Reject job
PUT    /api/jobs/{id}/feature                # Feature job

GET    /api/jobs/settings                    # Pricing settings
PUT    /api/jobs/settings                    # Update settings
```
