# How to build a niche job board in Bubble

- Tool: Bubble
- Difficulty: Beginner
- Time required: 35-45 min
- Compatibility: All Bubble plans (email alerts require Growth plan for backend workflows)
- Last updated: March 2026

## TL;DR

A niche job board in Bubble focuses on a specific industry with tailored filters, employer branding pages, candidate profiles, and email alerts for new postings. This tutorial covers building the database schema, creating job listing and application flows, adding industry-specific search filters, and setting up automated job alert emails.

## Overview: Building a Niche Job Board in Bubble

Generic job boards compete with Indeed and LinkedIn. Niche job boards win by serving a specific industry deeply. This tutorial walks through building a focused job board in Bubble with industry-specific categories, employer profiles, candidate matching, and automated alerts. Whether your niche is healthcare, remote tech, sustainability, or creative roles, the architecture is the same.

## Before you start

- A Bubble account with an app
- A clear niche/industry focus for your job board
- Understanding of Bubble Data Types and Repeating Groups
- Familiarity with Bubble's email sending capabilities

## Step-by-step guide

### 1. Create the job board database schema

In the Data tab, create these Data Types: Company (name, logo, description, website, industry, location, size — text like '1-10', '11-50', '51-200'). Job_Posting (company — Company, title, description, category — Option Set, location, salary_min — number, salary_max — number, employment_type — Option Set: Full-time/Part-time/Contract/Freelance, experience_level — Option Set: Entry/Mid/Senior, is_remote — yes/no, posted_at — date, expires_at — date, is_active — yes/no). Application (job — Job_Posting, applicant — User, resume — file, cover_letter — text, status — text: submitted/reviewed/shortlisted/rejected, applied_at — date). Job_Alert (user — User, categories — list of Option Set, keywords — text, frequency — text: daily/weekly).

**Expected result:** Complete database schema with Data Types and Option Sets for a niche job board.

### 2. Build the job search page with niche-specific filters

Create a 'jobs' page with a search bar and filter panel. Add filter controls: a Dropdown for category (your niche-specific categories from the Option Set), a Dropdown for employment_type, a Dropdown for experience_level, a Checkbox for remote_only, and a location Search Input. Set up a Repeating Group with data source: Do a Search for Job_Posting with constraints matching each filter (use Ignore empty constraints so blank filters show all jobs). Sort by posted_at descending. Each job card shows the title, company logo and name, location, salary range, and tags for employment type and experience level.

**Expected result:** A job search page with working industry-specific filters and a clean listing of matching jobs.

### 3. Create the job detail and application pages

Create a 'job' page (type: Job_Posting). Display the full job description with company logo, title, location, salary, employment type, and a formatted description. Add an 'Apply Now' button. When clicked, check if the user is logged in (redirect to signup if not). Show an application form with resume upload (File Uploader element), cover letter (Multiline Input), and a Submit button. The submit workflow creates an Application record linking the job, applicant, resume, and cover letter. Send an email to the company's contact with the application details. Show a confirmation message.

> Pro tip: Check if the user has already applied to this job before showing the Apply button — search for existing Applications where job = Current Page's Job_Posting AND applicant = Current User.

**Expected result:** Users can view full job details and submit applications with resume and cover letter.

### 4. Build employer branding pages and a posting dashboard

Create a 'company' page (type: Company) showing the company profile: logo, description, website link, size, location, and a Repeating Group of their active Job_Postings. Create an 'employer-dashboard' page for logged-in company users. Include a 'Post New Job' form with inputs for all Job_Posting fields, and a Repeating Group of their existing postings with options to edit, deactivate, or delete. Add an application viewer: when the employer selects a job, show all Applications in a Repeating Group with applicant name, resume download link, cover letter preview, and status update buttons (Review, Shortlist, Reject).

**Expected result:** Companies have branded profile pages and a dashboard for managing postings and reviewing applications.

### 5. Implement automated job alert emails

Create a 'job-alerts' page where logged-in users configure their preferences: select categories, enter keywords, and choose frequency (daily or weekly). Save as a Job_Alert record. Create a backend workflow called 'send-job-alerts' that searches for Job_Postings created since the last alert run, matching the user's categories and keywords. For each matching user-job pair, send an email listing the new jobs with links to their detail pages. Schedule this workflow to run daily. For weekly alerts, add a condition checking the day of the week.

**Expected result:** Users receive automated email alerts when new jobs matching their preferences are posted.

### 6. Add SEO-friendly job listing URLs and meta tags

In Bubble's Settings, configure your job detail page to use the Job_Posting's slug in the URL (set slugs via the 'Set a thing's slug' action when creating job postings). On the job page, go to the SEO/Metatags section in the page settings and set dynamic meta tags: Page title to the job title + company name, meta description to a truncated job description, and OG image to the company logo. This helps job listings appear in search results. Add a sitemap page that lists all active job URLs for search engine crawling.

**Expected result:** Job listing pages have SEO-friendly URLs and dynamic meta tags for search engine visibility.

## Complete code example

File: `Workflow summary`

```text
NICHE JOB BOARD SUMMARY
========================

DATA TYPES:
  Company: name, logo, description, website, industry, location, size
  Job_Posting: company, title, description, category, location,
    salary_min, salary_max, employment_type, experience_level,
    is_remote, posted_at, expires_at, is_active
  Application: job, applicant (User), resume (file),
    cover_letter, status, applied_at
  Job_Alert: user, categories (list), keywords, frequency

OPTION SETS:
  Job_Category: [your niche categories]
  Employment_Type: Full-time, Part-time, Contract, Freelance
  Experience_Level: Entry, Mid, Senior, Executive

PAGES:
  jobs — Search + filter + listing
  job — Detail + apply
  company — Employer profile + active jobs
  employer-dashboard — Post jobs, manage applications
  job-alerts — Configure email preferences

KEY WORKFLOWS:
  Apply to Job:
    Only when: Current User is logged in
    AND no existing Application for this job
    Create Application → Send email to company

  Post Job:
    Create Job_Posting → Set slug for SEO URL
    → Set posted_at and expires_at (30 days)

  Job Alerts (Backend, scheduled daily):
    Search Job_Postings created in last 24h
    For each Job_Alert:
      Filter postings by categories and keywords
      If matches found: Send email with job links

  Auto-expire Jobs (Backend, scheduled daily):
    Search Job_Postings where expires_at < now
    → Set is_active = no
```

## Common mistakes

- **Not checking for duplicate applications before allowing submission** — Users may accidentally apply twice, creating duplicate records and confusing employers Fix: Before showing the Apply button, search for existing Applications matching the job and user — hide the button if found
- **Using free-text categories instead of Option Sets** — Free text leads to inconsistent categorization (React vs ReactJS vs React.js) making filtering unreliable Fix: Use Option Sets for all categorical fields like job categories, employment types, and experience levels
- **Not implementing job expiration** — Expired job listings frustrate job seekers and make your board look abandoned Fix: Set an expires_at date when posting and run a daily backend workflow to deactivate expired postings

## Best practices

- Use Option Sets for all categorical data (categories, employment types, experience levels)
- Implement automatic job expiration with a scheduled backend workflow
- Check for duplicate applications before allowing submission
- Set SEO-friendly slugs on job posting URLs for search engine visibility
- Add dynamic meta tags on job detail pages for better search results
- Use Ignore empty constraints on search filters so blank filters show all results
- Send email notifications to employers when they receive new applications

## Frequently asked questions

### How do I monetize a niche job board?

Common models: charge employers per job posting ($50-200), offer featured/promoted listings at a premium, sell monthly subscription plans for unlimited postings, or charge for access to candidate profiles.

### How many job listings can Bubble handle?

Bubble handles thousands of listings well. For optimal performance, paginate search results to 20 items per page and use database constraints rather than client-side filtering.

### Can I allow employers to post jobs without creating an account?

You can, but it is not recommended. Account-based posting lets employers manage their listings, view applications, and build a company profile. Guest posting creates data management issues.

### How do I handle salary display when employers do not provide it?

Make salary fields optional. Use conditional visibility on the salary display — show it only when salary_min is not empty. Consider adding a 'Salary not disclosed' text as the default view.

### Can I add a candidate matching algorithm?

Yes. Create a Candidate_Profile Data Type with skills, experience, and preferences. Search for Job_Postings where category matches the candidate's preferred categories and experience_level matches their level. Rank results by matching criteria.

### Can RapidDev help build a job board in Bubble?

Yes. RapidDev can build complete job boards with advanced search, employer dashboards, application tracking, automated alerts, payment integration for premium listings, and SEO optimization.

---

Source: https://www.rapidevelopers.com/bubble-tutorial/create-a-niche-job-board-in-bubble
© RapidDev — https://www.rapidevelopers.com/bubble-tutorial/create-a-niche-job-board-in-bubble
