Skip to contentLaunch price30% off every kit for the first 250 buyers155 left
DirectoryLab

Loading the guides…

Job LabGuides
Fill the board

Skills, roles and locations

How jobs are sorted into skills, roles and places as they arrive, and how to tidy those lists, fix untagged jobs, tune search and look after company pages.

Updated 9 Oct 2026 · written for Job Lab 1.1.0

On this page

Open Skills under Job Board in the admin sidebar. Skills, roles and locations are how the board sorts its jobs. Each gives you public pages, a search filter and a count, and each list fills itself from the jobs that arrive. Your part is tidying: grouping, merging duplicates, hiding noise and teaching the board places it does not know.

The Skills Registry: tiles for total skills, ungrouped, missing icon, active and groups, a filter button for each group, and the table of skills with slug, group, aliases, job count, an Active badge and Hide and Edit buttons
The skills list, with a filter for each group.

Job Lab has no job categories as such. A job has several skills, one role, one location, one type and one experience level, and skills can be put into groups. Between them they do that work.

How a job gets its tags#

TagPer jobWhere it comes from
SkillsUp to 12The tags the job's source sent. When it sent fewer than 4, skills from your list that appear as whole words in the title and description are added
RoleOneMatched from the job title against your list of roles
LocationOneWorked out from the location text the source sent: a country, a city and whether it is remote
Type and levelOne eachTwo fixed lists: see Job types and experience levels

A tag from a source that is not in your skills list is added to it, with no group. Nothing joins the roles list unless you add or approve it. The numbers 12 and 4 are settings on the Tagging screen.

Tidy the skills list#

The Skills Registry shows the 200 skills with the most jobs, with a filter above the table for each group.

  1. Step 1: See what arrived by itself

    Click Ungrouped. These are mostly skills created from the tags of incoming jobs.

  2. Step 2: Put skills into groups

    Tick the skills that belong together and click Set Group. Your browser asks "Enter group name (or leave empty to ungroup):". Type a name such as Languages. A group exists as soon as one skill carries its name, and visitors can filter the public skills page by it. Groups, at the top, lists every group with its skills.

  3. Step 3: Merge duplicates

    Click Merge Tool. Tick the skills to fold away under 1. Select Source Skills, choose the one to keep under 2. Select Target and click Execute Merge. Every job moves to the target, and each source's name is kept as an alias, so a job that arrives later with the old tag still lands in the right place. A merge cannot be undone. In version 1.1.0 a skill merge does not refresh search: click Full Reindex on the Search Index screen afterwards, or the skills filter goes on using the old name until the next daily check.

  4. Step 4: Hide what is not a skill

    Click Hide on a row such as "Remote". The skill's page stops existing and it disappears from job tags, filters and search. Its record is kept, so the next fetch does not bring it back. Show reverses it.

  5. Step 5: Fix names and counts

    Fix Capitalization turns all-lowercase names into proper ones, "react" into "React", everywhere they appear. Sync Counts recounts the jobs under every skill.

Edit one skill#

Click Edit on a row.

  • Name, Slug, Group and Description: the slug is the end of the skill's address, /skills/python.

  • Aliases (comma-separated): other spellings that count as this skill, such as python3, py.

  • Icon: si:react for a brand logo, lucide:brain for a plain icon, the address of an image or an emoji. Left empty, a coloured tile with the first letter is shown.

  • Active: the same switch as Hide and Show.

Delete works only on a skill no job uses. Otherwise you see "Cannot delete: skill is used by 12 jobs. Merge instead."

Add a skill by hand#

In version 1.1.0 the Skills page has no button to add a skill and no screen to import a list. To add one yourself, open Tools, then Tagging, type the name against a job in Jobs with no skills and click Save: the skill is created and the job is tagged with it.

Roles#

Open Job Board, then Roles. A role is the occupation a job is for: "Data Scientist", "Field Technician". The Roles Registry has the same tools as skills: Merge Tool, Fix Capitalization, Sync Counts, Hide, Show and Edit. Three things differ.

  • A job has one role. It is matched from the job title, and the longest matching name wins.

  • There are no groups. The filters are All, Hidden and Missing description.

  • Nothing is added by itself. Sources do not send roles. If you chose a starter niche in the setup wizard, the list begins with that niche's roles. It grows when you approve a role the AI proposes or type one on the Tagging screen.

An empty list reads "No roles yet — and that's normal" and offers a button to load your niche's starter roles and tag existing jobs with them. On a custom board, which has no niche, the button offers 24 software and tech roles: leave it alone unless that is your field.

Locations#

Open Job Board, then Locations. Every job arrives with a line of location text, which the board reads into a country, a city and a remote flag. This screen shows how well that went and lets you teach it what it missed.

The Locations page: tiles for jobs with a location, country coverage, cities and needs attention, then the list of location texts and countries the board has placed
Where the board keeps track of the places its jobs are in.

Needs Attention lists the location texts it could not fully place.

  • On a row, choose a country, type a City (optional) and click Add city. That teaches the board the city and fixes every location that mentions it. With no city, the button reads Set country and fixes that exact text only.

  • Dismiss hides a text that is not a place you need to fix.

  • To do many at once, tick the rows, choose a country and click Add as cities or Map to country.

Taught Knowledge, at the bottom, holds everything you have taught it:

ListWhat it holds
Mapping RulesAn exact location text and the place it means, with a Counts as remote tick box. A rule wins over everything else
Custom CitiesCities beyond the built-in list, with their country and other spellings
Country AliasesOther spellings of a country, such as "Holanda" for the Netherlands

Every change here is applied to all jobs and companies at once. You see "Saved — re-parsed 14 job(s), 2 company(ies)." with your own numbers. Re-parse All Locations, at the top, reads every location again and rebuilds the search index.

Hiring Scopes lists jobs that are remote with no place, or that name a region wider than a country. Those are correct as they are.

Tagging#

Open Tools, then Tagging. Its Skills and Roles tabs each show how many published jobs are tagged, the rules for matching and the jobs that got nothing.

The Tagging page on its Skills tab: tiles for published jobs, jobs with skills, jobs with no skills, average skills per job and over-tagged jobs, the Matching rules card, the Clean up now buttons and the Test the matcher box
How jobs are matched to skills, and the buttons that tidy them.

On the Skills tab, under Matching rules:

  • Infer skills from the post text when a feed sends none: the switch for finding skills in a job's own words.

  • Max skills / job: a job with more is cut down to the most relevant.

  • Infer below N skills: the text is only read when the source sent fewer skills than this.

  • Custom rules — a phrase in the post links a skill: for example the phrase k8s and the skill Kubernetes.

  • Never infer these generic words from prose: words such as "testing" and "support" that would tag almost every job. They still count when a source sends them as tags.

Click Save rules. Test the matcher takes a title and a description and shows the skills they would get, using the rules on screen even before you save.

The Roles tab has the same shape. Its switches are Match a role from the job title and Also scan the post text when the title has no match (multi-word terms only), and its list is Never match these.

Fix untagged jobs#

Jobs with no skills lists each published job that has none.

  • Suggest from text runs the matcher on that one job. It is not AI and costs nothing.

  • Type a skill and press Enter, then click Save. A new name is added to your skills list.

  • No skill needed takes a job off the list and leaves it live. Dismiss all remaining clears the whole list.

  • If the title is really an occupation, type it beside "…or this job is a role:" and click Save as role.

On the Roles tab, Jobs without a role works the same way, with Suggest from title, Save and No role needed.

Under Clean up now, Re-tag empty jobs, Trim over-tagged and, on the Roles tab, Match roles for untagged jobs run over the whole board in the background. You see "Started in the background — refresh in a minute to see counts drop." The same work runs by itself once a day, as Tagging Maintenance under Tools, Scheduled Tasks.

The search index#

Open Tools, then Search Index. Search runs on Meilisearch, a service that runs beside the site. This screen shows whether it is up, how many jobs it holds and how it ranks them.

The Search Index page: Meilisearch Status reading Healthy, the number of indexed documents, Indexing Status reading Idle, and the Ranking Rules tab listing the six rules in order
The search service's status and its ranking rules.
TabWhat you set
Ranking RulesThe order of the six rules that decide which result comes first. Drag to reorder
AttributesWhich fields are searched, in order of weight: title first, then skills, role, company name and description. Also which fields can be filtered on
SortableWhich fields results can be sorted by
SynonymsA key word and the words that should also match it. None are set to begin with
Stop WordsWords left out of the index, such as "the" and "and"
Typo ToleranceWhether misspellings still match: one typo in words of 4 letters or more, two in words of 8 or more
Test SearchA query box that shows the first results, the time taken and a Source: badge

Click Save & Apply. You see "Config saved and applied to Meilisearch". Reset to Defaults puts every tab back.

Under Actions, Full Reindex loads every published job into the index again and reports "Reindexed 317 jobs" with your own number. Configure Index sends the settings again without reloading the jobs. The index is also checked against the database once a day, so a missed job corrects itself.

When Meilisearch is down#

Meilisearch Status reads Unavailable, with "Using database fallback" beneath it. Search on the site keeps working from the database, and Test Search shows Source: database. The fallback is plainer: the words typed must appear exactly, in the title or the description, with no typo tolerance, synonyms or ranking rules. The two Actions buttons are greyed out until the service is back. See Backups, scheduled tasks and health.

Job types and experience levels#

These two lists are fixed. The types are Full-Time, Part-Time, Contract, Freelance and Internship. The levels are Entry Level, Mid Level, Senior, Lead and Executive. Each has a public page under /types. When a source sends no level, the board reads one from the job title where the title makes it plain, and otherwise leaves it empty. Changing either list needs code.

What the AI buttons do#

Each of these screens has an ✨ AI Curation link. The buttons behind it need an AI provider: without one they are greyed out under "No AI provider configured." AI: providers, curation and cost covers the provider and the cost.

ScreenButtonWhat it does
SkillsCurate incomplete skills (9)Fills in missing groups, aliases, descriptions and icons, and never overwrites a field already filled
SkillsFull re-scan (32 skills)The same, and checks every name again and looks for duplicates
SkillsScan for missing skillsReads untagged jobs and proposes skills that are not in your list
RolesRun discovery nowReads untagged job titles and proposes new roles
RolesCurate incomplete roles (4)Fills in missing descriptions, icons and aliases
LocationsWrite 8 market descriptions with AIWrites a short overview for each country and city page that has none
CompaniesEnrich next 50 with AIReads the websites of up to 50 imported companies with empty profiles and writes each a description, industry and skills
A skill or role✨ Redo with AIRewrites that one entry, replacing what is there

The numbers in the button names are your own counts. Anything that would merge, remove or add an entry waits on the same page for you to approve it. A daily task, AI Curation, does the same work unattended.

Companies#

Open Job Board, then Companies. A company appears here when a job is imported for it or an employer creates one. An imported company has no owner and is listed as Unclaimed.

The company page for Halcyon Grid, marked Verified: grid software, Austin, 51 to 200 employees, founded 2017, with About and Culture text, the skills it hires for down the right, and the start of its open positions
Every company gets a page with its open roles.

The Actions menu on each row has:

  • Edit profile: the name, website, description, location, industry, size, tech stack, benefits, culture and social links, plus Upload Logo. A logo is stored in the database, like your own. On a company an employer owns, the page warns that your edits override theirs.

  • Mark as verified: a badge you give by hand. It puts a checkmark on the company's public page and ranks it higher on the companies page.

  • Delete company: this also deletes every job the company has, and cannot be undone.

Needs AI Enrichment counts imported companies whose profile is empty.

I deleted a skill and it came back

A source sent that tag again, and a tag the board does not know is added to the list. Use Hide instead of Delete: a hidden skill is still recognised, so it is never created again and never shown.

Can I add categories?

There is no category list. Put skills into groups with Set Group, and use roles for occupations. Visitors can browse by skill group, role, location, type and level.

A button says "Could not start — is the task queue (Redis) running?"

The Clean up now buttons hand the work to the background worker, and the board could not reach it. See Troubleshooting.

Stuck on a step? Send a message.