Public Job Board
SEO-friendly public job listings where applicants can browse and apply to open positions. Covers routing, structured data, and customization.
Public Job Board
Reqcore includes a public-facing job board at /jobs where applicants can browse open positions and submit applications — no login required.
How It Works
When a recruiter changes a job's status to Open, the job automatically appears on the public board. When the status changes to Closed or Archived, the job disappears from the board.
Job Listing Page (/jobs)
The listing page shows all open jobs across all organizations, featuring:
- Job title, location, employment type
- Organization name
- Posted date
- Link to the full job detail page
Job Detail Page (/jobs/:slug)
Each open job has a dedicated page with:
- Full job description (rendered from Markdown)
- Location and employment type
- Salary range (if provided)
- Remote status
- Apply Now button linking to the application form
SEO Optimization
Public job pages are optimized for search engines and job aggregators:
Structured Data (JSON-LD)
Each job detail page includes a JobPosting schema with:
{
"@type": "JobPosting",
"title": "Senior Software Engineer",
"description": "...",
"employmentType": "FULL_TIME",
"jobLocation": { ... },
"baseSalary": { ... },
"hiringOrganization": { ... },
"validThrough": "2026-06-01"
}
This structured data powers Google for Jobs and other job search engines.
URL Slugs
- Slugs are auto-generated from the job title + short UUID (e.g.,
/jobs/senior-engineer-a1b2c3d4) - Recruiters can set custom slugs for more memorable URLs
- Slugs are URL-safe and human-readable
Route Rules
- Job listing and detail pages use ISR (Incremental Static Regeneration) with a 1-hour revalidation window
- This balances SEO performance with fresh content
Public Application Flow
- Applicant visits
/jobs/:slug - Clicks Apply Now → redirected to
/jobs/:slug/apply - Fills in the application form (custom questions + file uploads)
- Submits → redirected to
/jobs/:slug/confirmation
Anti-Spam Protection
- Honeypot field on the submission form
- IP-based rate limiting on the public apply endpoint
- No CAPTCHA required (for better UX)
API Endpoints
| Method | Path | Description |
|---|---|---|
GET | /api/public/jobs | List all open jobs (no auth) |
GET | /api/public/jobs/:slug | Job detail with custom questions (no auth) |
POST | /api/public/jobs/:slug/apply | Submit an application (no auth, rate-limited) |
Dynamic Sitemap
Open jobs are automatically added to the sitemap via a dynamic source endpoint at /api/__sitemap__/urls. This ensures search engines discover new job postings as they are published.
Next Steps
- Application Forms — Configure custom questions for your jobs
- Job Management — Manage job lifecycle and SEO fields
- Architecture Overview — How public and authenticated routes are separated