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

# Searching Candidates

> Find candidates with the search bar, Boolean queries, structured filters, and AI text to filters, and save your setup as a view.

The Candidates page gives you three ways to find people: the search bar for quick lookups,
structured filters for precise slices of your database, and the **Search** tab for deep,
AI-powered sourcing across the whole pool.

Open the **Candidates** page from the left menu (shortcut: `G` then `A`; see all
[keyboard shortcuts](/docs/settings/keyboard-shortcuts)).

<Frame>
  <img src="https://mintcdn.com/spott-docs/p014P0_PfappR2TU/images/candidates/candidates-page-overview.webp?fit=max&auto=format&n=p014P0_PfappR2TU&q=85&s=e18fb05bc8b47ede7d942770a71cf552" alt="The Candidates page with the search bar and Filters button" width="1600" height="956" data-path="images/candidates/candidates-page-overview.webp" />
</Frame>

## Use the search bar

The search bar sits in the top left of the candidate table. Type a name or keyword to
narrow the list as you type.

<Tip>
  Looking up who owns an **email address or phone number**? Use [global search](/docs/get-started/global-search)
  (`⌘K` / `Ctrl+K`) instead. It finds the person an identifier belongs to across the
  whole database.
</Tip>

### Boolean search

The search bar supports full Boolean queries with **AND**, **OR**, **NOT**, and
parentheses. Spott switches to Boolean mode automatically as soon as your query
contains double quotes:

```
("Java developer" OR "backend engineer") AND NOT "intern"
```

This gives you precise control when a plain keyword search returns too much.

<Frame>
  <img src="https://mintcdn.com/spott-docs/p014P0_PfappR2TU/images/candidates/candidates-boolean-search.webp?fit=max&auto=format&n=p014P0_PfappR2TU&q=85&s=2f1bc8378ec675e8dee7eb4633753db3" alt="A Boolean query in the candidate search bar" width="1600" height="956" data-path="images/candidates/candidates-boolean-search.webp" />
</Frame>

## Apply structured filters

Click the **Filters** button above the table to add a filter. Filters are grouped by
the kind of data they match. The menu is built from your own workspace, so it is longer
than any list here: custom attributes and the fields your integrations add show up in it
as well. The groups worth knowing about are these.

* **Current Job Title**, **Years of Experience**, and **Keywords**
* **Company**, with industry and past companies
* **Location** and **Education**
* **Compensation** and **Last Interaction**
* **Jobs**: everyone who is in a process for a specific job or company, or currently
  sitting in a specific stage
* **Rejected**: everyone whose application was closed, filtered by who ended it, **By
  Us**, **By Candidate** or **By Client**, and by the
  [rejection label](/docs/settings/labels) that was recorded. The two together are how you
  find the people worth going back to: someone the client turned down because the role was
  already filled is a different prospect from someone who withdrew, and both are different
  from a candidate your team rejected on skills.
* **Lists** and **Source**
* For candidates synced from the **VDAB CV database**, the date their CV was last
  updated **on VDAB**, which you can filter and sort on as well as the date the record
  was first created in Spott. The two answer different questions: creation date tells you
  how long you have had the profile, the VDAB date tells you how fresh it actually is.
  Sort on it to work the recently refreshed profiles first.
* **Phone number**, including its **area code**, so you can cut a list by dialling code
  when the location field is thin
* Any **custom fields** your workspace has configured
* **Compliance** filters such as consent status, when consent tracking is enabled

<Frame>
  <img src="https://mintcdn.com/spott-docs/p014P0_PfappR2TU/images/candidates/candidates-filter-menu.webp?fit=max&auto=format&n=p014P0_PfappR2TU&q=85&s=dde51c8e4479e7701755bbbd7b000280" alt="The filter menu with its filter groups" width="1600" height="956" data-path="images/candidates/candidates-filter-menu.webp" />
</Frame>

By default, results match **all** applied filters. Use the three-dot menu on an applied
filter to combine filters as **any** instead, for example "Paris or London". For more
complex slices, combine filters into **filter groups**: each condition in a group is
joined with **AND** or **OR**, and you click the operator in front of a condition to
switch it.

<Frame>
  <img src="https://mintcdn.com/spott-docs/3HKAw3AxW9mZFCSt/images/candidates/filter-group.webp?fit=max&auto=format&n=3HKAw3AxW9mZFCSt&q=85&s=2e1e0e2d6da730819e0d9994346268eb" alt="A filter group combining degree, location, and experience conditions with AND" width="410" height="249" data-path="images/candidates/filter-group.webp" />
</Frame>

**Location** offers **Set location** for a radius around a point, and **Set area** for a
named area, which can be a city, a region, or a country. As you type, each suggestion is
labelled with what it is, such as **Region**, **Municipality**, or **Place**, so you can
tell "Flanders, Belgium" the region from a town of the same name before you pick it.
Locations are geocoded, so both "London" and "Greater London" resolve to the same area.

**Set area** also accepts whole continents: **Europe**, **North America**, **South
America**, **Asia**, **Africa**, and **Oceania**. Useful for the coarse cut you make
before anything else, such as everyone outside Europe on a role that cannot sponsor a
visa.

Location also filters on **ZIP or postal code**, which is the precise cut when a named
area is too broad and a radius is too round. It is the filter to reach for when a client
recruits by postcode district, or when a shift pattern only works for people in specific
codes. The same **Location** filter behaves this way everywhere in Spott, on contacts,
companies, and jobs, not only on candidates.

There is no "has received an email" filter as such. **Last Interaction** is the one to
reach for, since email is one of the touchpoints that moves it: filter on **Last
Interaction At** for when you were last in contact, **Last Interaction With** for which
colleague it was, or the broader **Last Activity Date** for any activity on the record.

### AI text to filters

You do not need to know where each filter lives. Keep typing a description in the
filter box, for example "React developer with 5+ years of experience, living in
California", and Spott converts it into filters for you with **AI Text to filters**.

Locations follow what you actually wrote. Ask for "within 30 km of Ghent" and you get a
**radius** filter around Ghent; name a place without a distance, such as "living in
Flanders", and you get an **area** filter for that place.

<Frame>
  <img src="https://mintcdn.com/spott-docs/p014P0_PfappR2TU/images/candidates/candidates-ai-text-to-filters.webp?fit=max&auto=format&n=p014P0_PfappR2TU&q=85&s=f045a9b86258101bc562e1758016a952" alt="AI Text to filters converting a description into filters" width="1600" height="956" data-path="images/candidates/candidates-ai-text-to-filters.webp" />
</Frame>

### Preset filters

A filter set you use often can be saved as a **preset filter**, so you apply it in
one click instead of rebuilding it. With your filters applied, open the filter menu,
hover over **Preset filters**, and choose **Save current filter set**.

<Frame>
  <img src="https://mintcdn.com/spott-docs/8fqNimCEMQMhBdQT/images/candidates/preset-filters-menu.webp?fit=max&auto=format&n=8fqNimCEMQMhBdQT&q=85&s=b16447ccf059176a61e222837f8d6c30" alt="The Preset filters submenu with Save current filter set" width="406" height="228" data-path="images/candidates/preset-filters-menu.webp" />
</Frame>

Give the preset a name and save. From then on it appears under **Preset filters**,
ready to apply.

<Frame>
  <img src="https://mintcdn.com/spott-docs/8fqNimCEMQMhBdQT/images/candidates/preset-filter-save-dialog.webp?fit=max&auto=format&n=8fqNimCEMQMhBdQT&q=85&s=e986dd110ad1caad44003d0b5936c8c6" alt="The Save preset filter dialog" width="504" height="236" data-path="images/candidates/preset-filter-save-dialog.webp" />
</Frame>

Where a [view](#save-filters-into-views) saves the whole table setup, a preset saves
just the filter set. Presets are also available when editing the **pre-filters** of a
search, so you can reuse the same filter set for deep sourcing:

<Frame>
  <img src="https://mintcdn.com/spott-docs/8fqNimCEMQMhBdQT/images/candidates/preset-filters-prefilters.webp?fit=max&auto=format&n=8fqNimCEMQMhBdQT&q=85&s=3e091957d2464b644ec8ce127188b782" alt="A saved preset filter available in the Edit pre-filters dialog" width="716" height="386" data-path="images/candidates/preset-filters-prefilters.webp" />
</Frame>

## Save filters into Views

Save a set of filters as a view to come back to it later. You can create as many views
as you want:

* Click the view picker (it shows **All** at first)
* Set your filters
* Click **Save view**
* The saved view is now available from the dropdown

When you change filters, sorts, or columns on a view, a save / discard prompt appears
at the top of the table. Changes only stick after you save them. See
[using views](/docs/settings/using-views) for everything a view holds.

<Frame>
  <img src="https://mintcdn.com/spott-docs/p014P0_PfappR2TU/images/candidates/candidates-view-picker.webp?fit=max&auto=format&n=p014P0_PfappR2TU&q=85&s=71ca8b353c1f3fd0d9184336abe459d3" alt="The view picker with saved views" width="1600" height="956" data-path="images/candidates/candidates-view-picker.webp" />
</Frame>

## Deep sourcing with the Search tab

Where the search bar and filters match profile fields, **Search** runs an AI-ranked
search across every candidate in your database, including their notes and the
attachments **labeled as CVs** (other attachments are not searched).
Open it from **Search** under **Tools** in the left menu, or from the **Search** tab
next to **All candidates** at the top left of the Candidates page.

<Frame>
  <img src="https://mintcdn.com/spott-docs/p014P0_PfappR2TU/images/candidates/candidates-search-tab.webp?fit=max&auto=format&n=p014P0_PfappR2TU&q=85&s=913010f54ab2dc7cb3a18aeca0529b79" alt="The Search tab with the prompt box and recent searches" width="1600" height="810" data-path="images/candidates/candidates-search-tab.webp" />
</Frame>

Describe your ideal profile in your own words, or use **Start from** to base the search
on an existing job in Spott or on a pasted job description. Spott turns your input into
pre-filters and criteria that you review before running the search, then ranks the
results by match score. Nothing Spott picks up is fixed: you can add, edit, or remove
any pre-filter or criterion, both before you run the search and afterwards.

The tags under the prompt box, for example **Job Title**, **Location**, and
**Experience**, light up as Spott recognises those details in your description. They let
you check what was picked up before you run the search.

### Recent searches and history

Your recent searches sit under the prompt box, each with its pre-filters and criteria,
its top match, and the number of candidates found. Click one to reopen it instead of
describing the profile again. **Search History**, in the top right, shows the full list.

<Frame>
  <img src="https://mintcdn.com/spott-docs/8fqNimCEMQMhBdQT/images/candidates/search-history.webp?fit=max&auto=format&n=8fqNimCEMQMhBdQT&q=85&s=751e2b3b25cde92ff625ee5bbaa92371" alt="The Search tab with Search History open on the right" width="1919" height="991" data-path="images/candidates/search-history.webp" />
</Frame>

### Reading the results

Search and [Matching](/docs/jobs/matching) run on the same engine and return the same
result table. How the two halves of a search work together is explained in full there:

<CardGroup cols={2}>
  <Card title="Filters vs criteria" icon="filter" href="/docs/jobs/matching#filters-vs-criteria">
    Why pre-filters narrow the pool and criteria rank what is left.
  </Card>

  <Card title="Read a match score" icon="chart-simple" href="/docs/jobs/matching#read-the-results">
    Scores from 0 to 100, the thumbs rating per criterion, and the reasoning behind them.
  </Card>
</CardGroup>

The **pre-filters** and **criteria** chips above the results stay editable. Open either
one to adjust the search and run it again, rather than describing the profile from
scratch.

### Act on the results

Work through the list with the **All**, **To Review**, and **Reviewed** tabs. Tick the
candidates you want, and an action bar appears at the bottom of the table.

<Frame>
  <img src="https://mintcdn.com/spott-docs/p014P0_PfappR2TU/images/candidates/search-bulk-actions.webp?fit=max&auto=format&n=p014P0_PfappR2TU&q=85&s=f2fd57685a251888bf1f103e19f7f64f" alt="The bulk action bar with Accept, Mark as reviewed, and Enrich" width="905" height="65" data-path="images/candidates/search-bulk-actions.webp" />
</Frame>

* **Accept** moves the selected candidates into a pipeline. A stage picker opens so you
  choose where they land, using the [stages](/docs/settings/stages) your workspace has
  configured.
* **Mark as reviewed** moves them to the Reviewed tab, so you can keep working through
  the ones you have not judged yet.
* **Candidate Actions** and **Communication Actions** hold the bulk operations on the
  selected records, including **Generate Shortlist**, which writes the selection into a
  [Word shortlist for a client](/docs/candidates/client-documents#shortlist).
* **Enrich** looks up missing emails and phone numbers for the selection. See
  [contact enrichment](/docs/candidates/contact-enrichment).

<Frame>
  <img src="https://mintcdn.com/spott-docs/p014P0_PfappR2TU/images/candidates/search-accept-stage.webp?fit=max&auto=format&n=p014P0_PfappR2TU&q=85&s=1588935e60db4ffce5dd53eb751be2bf" alt="The stage picker that opens from Accept" width="115" height="257" data-path="images/candidates/search-accept-stage.webp" />
</Frame>

### Change a field on many records at once

The same action bar carries an attribute update, which opens a dialog called **Update
Candidate Attribute**. Pick the attribute, set the value, and it is written to every
record you selected.

The picker covers your **custom attributes** and **Main Contact**, which makes it the way
to hand a batch of candidates to a different consultant after an import, or to set a
custom status across a list without opening the records one by one. It works on
candidates and contacts. Companies have no equivalent yet, so an off-limits flag across a
few hundred companies still has to be set record by record.

Bulk actions that write to records, such as adding a selection to a list or to a job,
handle **1,000 records at a time**. Larger jobs have to be split, or handed to support.

A bulk email reaches each person on their **work address first, then their personal one**,
taking the address marked primary where there is more than one. Somebody whose address sits
only in the personal field is still reached. That resolution is described in full under
[which address a recipient is reached on](/docs/outreach/campaigns#which-address-a-recipient-is-reached-on),
and unlike a campaign, a bulk email gives you no control over it.

<Warning>
  A bulk email from **Communication Actions** is paced deliberately, leaving 30 to 90
  seconds between messages so your provider does not read the burst as spam. A send to 50
  people takes the best part of an hour, and there is no way to speed it up. Nothing is
  stuck: watch them leave rather than sending again.
</Warning>

Use **Share Search**, in the top right, to hand the search over to a colleague.

## Organize results

* By default the table is sorted by **last activity**, so recently active candidates
  come first.
* Sort on any sortable column from its header menu. Sorts are saved as part of the view.
* Results in the Search tab and in matching are always ranked by **match score**.
* Clear all filters to return to the full candidate list.

Two ranking rules override a column sort without saying so. A **similar to** filter on
job title orders the results by similarity, so clicking a column header appears to do
nothing; switch that filter to **is**, or add a last interaction filter, and the sort
comes back. The Search and matching tabs behave the same way, ranked by match score.

To count the results of a search, **select all**: the count appears with the selection.
There is no total on the table itself.

Every other place Spott uses AI is mapped out in [AI in Spott](/docs/get-started/ai-in-spott).


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.