Skip to content

Candidate list & search

Find every candidate in your database — with full-text search across name/CV content, a rich filter drawer covering every candidate field, a separate sort picker, saved filters with one-click favorites, and a pagination footer.

Where to find it
Main menu → Candidates
Who can use it
Anyone with access to candidates

The candidate list is the front door to your talent pool. The toolbar across the top has four controls — a refresh button, an Add candidate button, a search field, a Filters button and a Sort button. Below the toolbar, a row of favorite-filter chips lets you re-apply your most-used saved filters in one click. Below that, the results table shows seven columns: Name, an Eye icon to preview the last file, Email, Phone Number, Status, Stars, Creation Date — plus an Action column (3-dot menu) for users with edit permission. Pagination sits at the bottom.

The same controls appear on the Jobs list, Clients list, Contacts list and Job Applications list — they all share the ListPage component. So everything on this page applies to those lists too; only the column set, the available filter fields and the sort keys change.

The full candidate list. From top: refresh, Add, search, Filters, Sort; favorite filter chips; results table; pagination.
The search field. Type at least 2 characters; the list updates 300 ms after you stop typing.

What it does. Full-text search across the candidate’s indexed content — name, email, and the parsed text of any uploaded CVs. The search runs server-side; the input has a 300 ms debounce so the list does not requery on every keystroke.

How to use it.

  1. Click in the search field

    The wide input with a magnifier icon, between Add candidate and the Filters button.

  2. Type at least 2 characters

    The list waits until you stop typing for 300 ms, then refreshes. Shorter terms are ignored.

  3. Watch the Sort option flip to Relevance

    Once a search is active, an extra sort key called Relevance (server-side score) is added to the Sort picker and becomes the default order — best matches first. Clear the search and Relevance disappears again.

  4. Clear when done

    Empty the field. The result set returns to whatever your filters + sort produce without text search.

Filters button — the drawer

The Filters drawer. The top input filters the list of available filters by name; pick one to open its editor.

What it is. A button (with a filter funnel icon) on the right of the toolbar. Clicking it opens an off-canvas drawer from the right edge. The drawer has three sections, from top to bottom:

  • Search-within-filters input — type to narrow the list of available filters by their label (handy when there are many custom-property filters).
  • Available filter list — every filter you can add, grouped by source: built-in candidate fields, then your organisation’s custom properties.
  • Saved filters list — the filters you (or a teammate) previously saved, with a star icon to toggle Favorite, a load action to apply, and a delete action.

Selecting a filter opens its editor inside the drawer — see filter types below for what each editor looks like. Clicking Apply at the bottom adds the criterion to the URL (?filter=…); the drawer stays open so you can add another. Use the back arrow at the top to return to the available-filter list.

Clearing filters

The drawer has a Clear filters action at the top. Clicking it wipes every active filter (sets ?filter= to empty) and resets the page to 0. Use it when you want a fresh start.

You can also remove a single filter without opening the drawer: each active filter shows a small label badge above the results table; clicking the trash icon on that badge removes only that one filter.

The 6 filter types

Every filter in Nextal is one of six types — the exact same editors are used on the Jobs, Clients, Contacts and Job Applications lists. Understanding these six covers every filter you will ever meet.

Text filter (name, email, phone, source, free-text custom properties)

Text filter editor — pick one operator, fill the value if needed, click Apply.

What it does. Tests a text field against a value or for emptiness. Used on Name, Email, Phone Number, Source, and any text-type custom property.

Operators (radio buttons):

  • equals — exact match (case-insensitive). Active when the chip shows ”… equals X”.
  • contains — substring match (case-insensitive). Chip shows ”… contains X”.
  • do not contains — substring that should NOT appear. Chip shows ”… do not contains X”.
  • doesn’t have a value — the field is empty/missing. No value input shown. Chip shows ”… has no value”.
  • has a value — the field is set to anything. No value input shown. Chip shows ”… has any value”.

How to use it.

  1. Open Filters, pick a text field

    e.g. Email.

  2. Choose an operator

    Click one of the 5 radios. A text input appears under equals, contains, and do not contains. The two presence operators have no value input.

  3. Type the value if needed

    e.g. “@gmail.com” for contains.

  4. Click Apply

    The filter is added; the drawer returns to the filter list.

Number filter (Stars, Requested Salary, Current Salary, number custom properties)

Number filter editor. The "between" option shows two inputs.

What it does. Tests a numeric field against a value or range. Used on Stars, Requested Salary, Current Salary, and any number-type custom property.

Operators:

  • equals — exact integer match. Chip ”… equals 80000”.
  • greater than — strictly greater. Chip ”… greater than 80000”.
  • lower than — strictly less. Chip ”… lower than 80000”.
  • between — inclusive range; two inputs (low, high) joined by and. Chip ”… between 70000 and 90000”.
  • doesn’t have a value — empty. Chip ”… has no value”.
  • has a value — anything set. Chip ”… has any value”.

Date filter (Available Date, Creation Date, Last Update Date, date custom properties)

Date filter editor. "Between" shows two date pickers.

What it does. Tests a date field against a single date or a range.

Operators:

  • equals — same calendar day.
  • before — strictly before the picked date.
  • after — strictly after the picked date.
  • between — inclusive range; two date pickers.
  • doesn’t have a value — no date set.
  • has a value — any date set.

Date inputs are native HTML date pickers — your computer’s locale decides the visual format (MM/DD/YYYY in US, DD/MM/YYYY in FR-CA, etc.).

Select (single) filter (Status, Preferred Language, French Level, English Level, Preferred Communication Channel, single-choice custom properties)

Select-single filter — pick "is" or "is not", then choose a value in the dropdown.

What it does. Tests a field against one value taken from a known list.

Operators:

  • is — equal to the picked value.
  • is not — anything except the picked value.

The value picker is a single-select searchable dropdown — start typing to narrow the options. Options come from your organisation’s configuration (for Status, French / English levels are fixed 1–5 lists).

Select (multi) filter (Actual Position, Tags, Technologies, multi-choice custom properties)

Select-multi filter — pick the operator, then pick one or more values.

What it does. Tests whether the candidate’s list field matches a set of picked values.

Operators:

  • has one of — the candidate has at least one of the picked values. Chip “Tags has any of [‘senior’, ‘remote’]”.
  • has all — the candidate has every picked value. Chip “Tags has all of […]”.
  • has none of — the candidate has none of the picked values. Chip “Tags has none of […]”.
  • doesn’t have a value — the list is empty. Chip ”… has no value”.
  • has a value — the list has any value. Chip ”… has any value”.

The value picker is a multi-select. Click × on a chip inside the picker to remove that value, or pick more from the dropdown.

File filter (Files, Comments)

File filter — only two operators, no value input. Tests presence only.

What it does. Tests whether the candidate has any attached items of that kind. This is a presence-only filter — there is no count, no search inside file contents.

Operators:

  • does not have any — the candidate has zero files / zero comments. Chip “Files does not have any”.
  • have any — the candidate has at least one file / one comment. Chip “Files have any”.

All filters available on the Candidates list

The filter drawer offers, in order:

  • Text filters: Name, Email, Phone Number, Source.
  • Date filters: Available Date, Creation Date, Last Update Date.
  • Number filters: Requested Salary, Current Salary, Stars.
  • File filters: Files, Comments.
  • Select-single filters: Status, Preferred Language, French Level (1–6), English Level (1–6), Preferred Communication Channel (Email / Phone Call / Text message).
  • Select-multi filters: Actual Position, Tags, Technologies.
  • Custom properties: every active candidate custom property your admin defined (Settings → Customization → Candidate properties) — each takes the type configured there (text, number, date, select, etc.).

Active filter badges

Each active filter renders as a labelled badge with a trash icon — click the icon to remove only that filter.

Each active filter shows up as a labelled badge inside the drawer’s “Selected filters” section. The badge text reflects the operator: e.g. “Email contains @gmail.com”, “Stars greater than 3”, “Tags has any of [senior, remote]”. Click the trash icon on a badge to remove that filter; the others stay active.

Sort button

The Sort popover. Top section: which field to sort on. Bottom section: ascending or descending.

What it is. A separate button on the toolbar (a list-ordered icon, on a green chip). Clicking it opens a small popover with two radio groups: sort key (which field) and direction (ascending / descending).

Important: column headers in the results table are not clickable for sorting. All sorting goes through this Sort popover. The URL parameter is ?sort=key,DIRECTION (e.g. ?sort=creationDate,DESC).

Sort keys on the Candidates list

  • Name — by last name then first name.
  • Email — alphabetical.
  • Status — by candidate status order.
  • Stars — by candidate range / star rating.
  • Creation Date — the default. Newest first when DESC.
  • Relevance — only available when a text search is active. Sorts by server-side full-text score, best matches first. When you type in the search bar, Relevance is added to the list and becomes the new default.

How to change the sort

  1. Click the Sort icon

    The list-ordered icon button, to the right of Filters.

  2. Pick a sort key

    Click the radio next to the field you want to sort by.

  3. Pick a direction

    Ascending (A → Z, oldest first) or Descending (Z → A, newest first). Both are radio buttons in the same popover.

  4. Close the popover

    Click anywhere outside it. The list immediately re-queries with the new sort. The URL updates to ?sort=key,DIRECTION.

Saving a filter and marking it favorite

The Save filter modal. Name is required (1–50 chars, must be unique); favorite is optional.

What it does. Saves your current combination of filters + search text + sort under a name, attached to your user account. Saved filters are per-user — they don’t appear in your teammates’ drawers. The point is to skip recreating the same complex filter every time.

What gets saved. Every part of the current URL state that drives the list:

  • The active filter string (?filter=…).
  • The text-search criteria (?textCriteria=…).
  • The current sort (?sort=…).
  • The name you typed.
  • The “favorite” boolean.

How to save your current filter

  1. Build the filter and sort you want

    Apply filters, type in the search field, change the sort — anything you would want re-applied later.

  2. Click Save filter

    Inside the Filters drawer. A small modal opens in the centre.

  3. Type a name (1–50 characters)

    Must be unique across your saved filters for this list. If the name already exists, an inline error “A filter with this name already exists” is shown and the Save button stays disabled.

  4. Tick Mark as favorite (optional)

    Favorites get pinned as chips above the results table — see Favorites bar below — so you can re-apply with one click without opening the drawer.

  5. Click Save

    The modal closes; a green success toast appears. The filter is now in your saved-filter list (at the top of the Filters drawer, below the search input).

The favorites bar — one-click re-apply

The favorites bar. Each chip is a saved filter you marked favorite. Click any chip to apply that filter.

What it is. A horizontal strip of chips above the results table — only shows up if you have at least one filter marked favorite. Each chip carries the filter’s name and a star icon; chips are sorted alphabetically.

How to use it.

  • Click a chip — applies that saved filter (sets ?filter=…&textCriteria=…&sort=… exactly as you saved them). The active chip is highlighted in the primary brand color.
  • Click the highlighted chip again — toggles it off; you return to an empty filter view.

Favorites disappear when you remove the star from inside the Filters drawer or delete the saved filter.

Managing saved filters

Inside the Filters drawer, your saved-filter list shows three actions per filter:

  • Apply — clicking the filter name applies it.
  • Star icon — toggles favorite on/off. Favorited items appear in the favorites bar; unfavorited ones only appear inside the drawer.
  • Trash icon — deletes the saved filter from your account. A confirmation appears before the delete is committed.

Saved filters are sorted favorites-first, then alphabetical by name, inside the drawer.

Row actions (3-dot menu)

The 3-dot menu on the Action column. Visible to team members with edit access.

The Action column (visible to team members with edit access to candidates) shows a 3-dot menu on every row. Clicking it opens a popover with seven actions:

  • Edit — opens the candidate profile.
  • Share — opens the Share Candidate side panel (forward the candidate to a client contact).
  • Send email — opens the email side panel pre-filled with this candidate.
  • Send text message — opens the SMS side panel.
  • Send survey — opens the survey side panel.
  • Add tag — opens a tag picker side panel.
  • Change status — opens a status picker side panel.

The Name and Avatar columns also link directly to the candidate profile (the Eye column previews the latest file in an off-canvas viewer without leaving the list).

Bulk select and bulk actions

When you tick 1+ checkboxes, the toolbar is replaced by a bulk-action bar with eight buttons.

How selection works. Team members with edit access to candidates see a checkbox at the start of every row and a master checkbox in the header. Tick at least one row to enter bulk mode — the entire toolbar (refresh, Add candidate, search, Filters, Sort) is replaced by a horizontal bar of bulk-action buttons. The bar disappears when you untick everything.

The master checkbox in the header column ticks every row visible on the current page; clicking it again unticks them. It does not affect rows on other pages — bulk actions apply only to what you have explicitly ticked.

The selection persists across pages. If you tick 5 candidates on page 1 and navigate to page 2, your 5 selections remain in memory. The bulk bar stays visible. You can keep adding to the selection across pages.

The 8 bulk actions

Every action opens a side panel on the right of the screen pre-filled with the entire selection. Each one acts on every selected candidate. Available when at least one candidate is ticked, unless noted otherwise.

1. Share (share-forward icon)

The Share side panel — forwards the entire selection to a single client contact in one operation.

What it does. Forwards the selected candidates to a single client contact. Opens the same Share side panel as the row-level Share action, but pre-filled with every ticked candidate. The recipient sees one link per candidate (and the primary resume for each by default).

2. Send email (mail icon)

The Send email side panel. The To list shows every selected candidate; templates and merge tags work as on a single send.

What it does. Opens the email compose side panel pre-filled with every selected candidate as a recipient. Picking a template applies the same body and merge tags to all — each candidate gets their own personalised copy at send time ({firstName}, {lastName}, etc. resolve per-recipient). This is the standard way to send a mass touch (e.g. “we’ll get back to you by Friday”).

3. Send text message (message icon)

The Send SMS side panel. Same per-recipient personalisation as bulk email.

What it does. Opens the SMS compose side panel pre-filled with every selected candidate’s phone number. Each candidate receives a personalised SMS (with their first name) when you click Send. Requires a configured SMS provider on the workspace.

4. Send survey (question icon)

The Send survey side panel. Each candidate gets their own unique private link to the same survey template.

What it does. Opens the survey side panel pre-filled with every selected candidate. Each one receives their own unique one-click link to the chosen survey template — useful for post-decline feedback batches or intake forms.

5. Add tag (tag icon)

The Add tag side panel. Pick one or more tags; they are appended (not replaced) to every selected candidate.

What it does. Opens a tag picker side panel. You can pick existing tags or type to create new ones (they are saved as candidate tags). Confirming appends the chosen tags to every selected candidate — existing tags on each candidate are kept. This is the right tool to mark a batch (e.g. imported-2026-02-01) or to attach a campaign label across a wide selection.

6. Change status (board icon)

The Change status side panel. Pick one new status; every selected candidate is set to it.

What it does. Opens a status picker side panel. Pick one of your organisation’s configured candidate statuses; clicking Apply sets every selected candidate to that status. The list refreshes after the update completes. Use it after a sourcing review to bulk-promote a batch from New to Active, or to bulk-archive after a campaign ends.

7. Apply job (list-check icon)

The Apply job side panel. Pick a target job; one new application is created for each selected candidate.

What it does. Opens a job-picker side panel. Pick a single job — one new application is created for every selected candidate on that job, all in the same starting status. This is the fast way to push a shortlist onto a kanban: filter the candidate list to your target shortlist, tick them all, Apply job → pick the job. They appear on the kanban immediately. See Applications tab for the per-candidate flow.

8. Merge (git-merge icon, conditional)

Merge appears only when exactly 2 candidates are ticked AND the user has edit and delete access on candidates.

When it appears. Only when exactly 2 candidates are selected, AND the user has both edit and delete access on candidates. Clicking it opens the Merge modal pre-loaded with the two selected candidates as source/target. See Merge candidates for the full merge flow.

If you click Merge with the wrong number of selections (zero, one, or three or more), a warning notification appears: “Please select exactly 2 candidates to merge”.

Permissions matrix

  • Selection checkboxes and all bulk actions require edit access on candidates.
  • The Merge bulk button also requires delete access (because the merge deletes one of the two records).
  • Send email / SMS / survey additionally need the corresponding messaging permissions configured on your role.
  • Apply job needs job-creation / application-creation permission on the target job.

Export

The Export side panel. Pick which fields to include; only ticked fields appear as columns in the XLSX file.

What it does. Exports the currently-filtered list to an Excel (.xlsx) file. Honors your active search text, your active filters and your current sort — the export is a faithful snapshot of what you see on screen, not a global dump of every candidate. The file is generated client-side using SheetJS and downloaded immediately by your browser.

Where to find it. Top-left of the candidate list toolbar, next to Bulk Import. Requires create-access on candidates — if your role doesn’t have it, the Export button isn’t shown.

The 19 exportable fields

The Export side panel lists 19 candidate fields as on/off toggles. Seven are on by default (the same columns you see in the list table, plus Last Update Date is off by default):

  • On by default: First Name, Last Name, Email, Phone Number, Status, Stars, Creation Date.
  • Off by default — toggle on if you need them: Last Update Date, Tags, Skills, Available Date, LinkedIn URL, Communication Channel, Language, Address, French Level, English Level, Actual Salary, Requested Salary.

How to export

  1. Build the view first

    Apply the filters, search text and sort that define which candidates you want to export. The export uses the same query as the list — if a candidate isn’t in your current results, it won’t be in the file.

  2. Click Export

    Top-left of the list toolbar. A side panel slides in from the right with the title Export data.

  3. Pick the fields

    The seven default fields are pre-ticked. Toggle on any of the remaining 12 you need — Skills and Tags are particularly useful for downstream analysis in Excel.

  4. Click Export at the bottom of the panel

    The button shows Exporting… while the data is fetched. Don’t close the panel.

  5. The file downloads automatically

    Named candidates_DD/MM/YYYY.xlsx (the date format follows your locale). Sheet name: Candidate Information.

The 1000-row cap

How values appear in the file

The export does some translation so the file is human-readable, not a raw database dump:

  • Dates — formatted using your locale’s short format (e.g. 2/1/2026 in English, 01/02/2026 in Quebec French). Applied to Creation Date, Last Update Date and Available Date.
  • Status — exported as the human label (e.g. Active), not the numeric ID stored in the database.
  • French Level / English Level — exported as the label (e.g. Highly proficient in spoken and written), not the 1–6 numeric value.
  • Preferred Language — exported as the language name (e.g. English).
  • Communication Channel — exported as Email, Phone Call, or Text message.
  • Tags / Skills — exported as comma-separated strings within a single cell (e.g. “react, typescript, node”).
  • Address — exported as the formatted address string, not the structured object.
  • Empty values — exported as empty cells, never as null or undefined.

Tips

  • Export before bulk operations. Run an export first so you have a snapshot of the pre-change state. If a bulk Add tag or Change status goes wrong, you can recreate or audit from the file.
  • Pair with the favorites bar. Save the filter that defines your export view as a favorite. Re-applying it next quarter is one click, and the export will match the exact same definition.
  • Need more than 1000 rows? Split by Status (run one export per status), by Creation Date range, or by Tag — each export then captures a slice under the cap.
  • Open in Excel or Google Sheets. The .xlsx file is standard — both apps handle it natively. The first row is the column headers; data starts on row 2.

Pagination

A pagination footer sits at the bottom of the results table. It shows page navigation (Previous, page numbers, Next) driven by the URL parameter ?page=0. Any change to filters or search resets page to 0 so you don’t end up on an empty page 7 of 2.

Tips and shortcuts

  • Share a view. Copy the URL — it contains the filter string, the search text, the sort key/direction, and the page number. A teammate opening that URL sees exactly the same view.
  • Favorite your top 3. Pick the three filters you reapply daily (“Active senior devs”, “New this week”, “No CV yet”) and mark them favorite. One click each from the chip bar above the table.
  • Combine text search with filters. The search bar and the filter drawer compose. Filter to Status: Active then type “react” — you get Active candidates whose name/CV mentions React, sorted by Relevance.
  • Use “has a value” before pulling reports. Want to see which candidates have a salary captured? Filter Requested Salary has a value. The result count immediately shows your data-completeness rate.