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

# Saved Searches

> Access and manage your previous job searches.

## How Searches Are Saved

Every search you create in Recruitier is automatically saved to your account. There is
no manual "save" step -- the moment you complete the search wizard and the search begins
processing, it appears in your saved searches list. This means you never lose a search
and can always return to previous results.

Saved searches serve as your search history and your active monitoring dashboard. Each
search retains all its original criteria, results, and any actions you have taken on
those results (tags, notes, favorites).

<Info>
  The search entity stores all your criteria persistently: job title, description,
  extra keywords, confirmed and excluded skills, experience level, job type, flexibility,
  recency filter, location with coordinates and radius, search source, boolean type (AND/OR),
  AI search flag, monitoring status, and linked candidate ID. Nothing is lost between sessions.
</Info>

## The Saved Searches List

Navigate to the **Search** page to see all your saved searches displayed as cards in
a list. The most recently created search appears at the top by default.

### Search Card Information

Each search card shows:

| Field             | Description                                                                                                  |
| ----------------- | ------------------------------------------------------------------------------------------------------------ |
| **Search Name**   | The job title you entered when creating the search. Cloned searches are prefixed with "\[Cloned]."           |
| **Status**        | The current processing state: "Searching," "Classifying," or "Done."                                         |
| **Job Count**     | The number of active (non-deleted) jobs in this search.                                                      |
| **New Jobs**      | A badge showing how many new jobs have been found since you last viewed the search (for monitored searches). |
| **Creation Date** | When the search was originally created.                                                                      |
| **Source**        | Whether the search was created via the recommendation engine, LinkedIn, Indeed, or another source.           |
| **Favorited**     | A star icon indicating whether you have favorited this search for quick access.                              |
| **Cloned By**     | If this search was cloned by a teammate, their name and email are shown.                                     |

<Tip>
  Favorite your most important searches by clicking the star icon on the search card.
  This makes them easy to identify in a long list of searches. Favoriting is purely
  organizational -- it does not change how the search behaves or is monitored.
</Tip>

### Monitored Search Indicators

Searches that are being monitored for new matches display additional information:

* A **monitoring badge** indicating the search is actively being tracked
* A **new jobs count** (`new_jobs_count`) showing how many new listings have matched since
  your last visit
* A **last matched timestamp** showing when the most recent match was found

When you open a monitored search, the new jobs count resets to zero and any "New" badges
on individual jobs are cleared, indicating that you have reviewed the new additions.

<Note>
  The monitoring system is powered by background workers that periodically re-evaluate
  your search criteria against newly indexed jobs. When new matches are found, real-time
  notifications are delivered via Server-Sent Events (SSE), so you see the new job count
  update without refreshing the page.
</Note>

## Managing Your Searches

### Viewing Search Results

Click on any search card to open the full search detail page with all results. From
there, you can:

* Browse and sort the results table
* Apply additional filters within the results
* Save individual jobs to your collection
* Tag, favorite, or delete jobs
* View job details and contact information
* Initiate outreach flows

### Re-running a Search

Monitored searches are automatically re-run when new jobs enter the database. The system
continuously checks for new listings that match your saved search criteria and adds them
to your results. You do not need to manually re-run a search -- Recruitier handles this
in the background.

<Note>
  The monitoring system checks for new matches periodically. New jobs typically appear
  in your search results within hours of being scraped from company career pages. You
  receive a real-time notification when new matches are found.
</Note>

### Toggling Monitoring

You can enable or disable monitoring on any search:

* **Enable monitoring** -- Sets `is_monitored = true` on the search entity. The search
  will be included in the periodic new-job matching cycle.
* **Disable monitoring** -- Sets `is_monitored = false`. The search retains all its
  existing results but stops checking for new matches.

<Tip>
  Enable monitoring on your most important, well-targeted searches. Monitoring broad
  searches (e.g., just "Developer" with no filters) can generate a high volume of new
  matches that become difficult to review. Targeted searches with specific skills and
  filters produce a more manageable stream of new jobs.
</Tip>

### Favoriting Searches

Toggle the favorite status of a search by clicking the star icon on the search card.
Favorited searches are visually distinct, making them easy to spot in a long list.
Favoriting does not change the search behavior -- it is purely an organizational tool.

### Deleting Searches

To delete a search you no longer need:

1. Open the search card or detail page
2. Click the **Delete** button (trash icon)
3. Confirm the deletion

<Warning>
  Deleting a search also removes all jobs associated with that search. This is a soft
  delete -- the data is marked as deleted but not permanently erased. However, you cannot
  undo this action from the UI. If you are unsure, consider simply un-favoriting the
  search instead of deleting it. If you want to keep specific jobs, tag or favorite them
  first so you can find them through other searches.
</Warning>

### Pagination

If you have many saved searches, the list is paginated. Use the pagination controls at
the bottom of the list to navigate between pages. The default page size shows enough
searches to fill the screen, with older searches accessible on subsequent pages.

## Search States

Each search goes through several states during its lifecycle:

| State                       | Description                                                                                                                                     |
| --------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------- |
| **Searching Jobs**          | The recommendation engine is scanning the database for matching listings. Vector embeddings are being compared and keyword matching is running. |
| **Classifying Jobs**        | The AI is evaluating each result and assigning match types (excellent, good, poor) based on keyword coverage analysis.                          |
| **Retrieving Company Info** | Company details are being enriched and linked to the search results. Contact information is being aggregated.                                   |
| **Done**                    | Processing is complete. All results are available for review.                                                                                   |

The current state is visible on the search card and updates in real time via SSE
notifications. You can open a search while it is still processing, but the results may
be incomplete until the state reaches "Done."

<Info>
  Most searches complete within 10 to 60 seconds. If a search remains in a processing
  state for more than a few minutes, try refreshing the page. If the issue persists,
  contact support.
</Info>

## Cloned Searches

Searches that were cloned (either by you or by a teammate) are marked with a "\[Cloned]"
prefix in their name and display the original search creator's information. Cloned
searches function identically to original searches -- they have their own results, tags,
and monitoring.

The cloned search stores references to the `original_search_id` and `cloned_by_user_id`
for traceability.

For more information on cloning, see [Cloning a Search](/jobs/search/cloning-a-search).

## Organization Tips

As you create more searches over time, keeping your search list organized becomes
important:

* **Favorite active searches** so they stand out visually
* **Delete completed searches** where you have already saved all relevant jobs
* **Use descriptive job titles** when creating searches -- these become the search name
* **Review new job counts** regularly to stay on top of freshly matched opportunities
* **Clone and iterate** rather than deleting and recreating when you want to adjust
  criteria
* **Disable monitoring** on searches you are no longer actively working on to reduce
  notification noise

## Advanced

### Search Entity Data Model

Each saved search is stored as a search entity with the following key fields:

| Field              | Type        | Purpose                                         |
| ------------------ | ----------- | ----------------------------------------------- |
| `name`             | String      | The search name (job title entered in wizard)   |
| `description`      | String      | Optional description or notes about the search  |
| `extra_keywords`   | String      | Additional keywords beyond the title            |
| `experience_level` | JSONB Array | Selected experience levels (multi-select)       |
| `job_type`         | JSONB Array | Selected job types (multi-select)               |
| `flexibility`      | JSONB Array | Selected flexibility options (multi-select)     |
| `when`             | JSONB Array | Recency filter selection                        |
| `location`         | String      | Location name for display                       |
| `lat` / `lon`      | Float       | Geocoded coordinates for radius filtering       |
| `radius_km`        | Integer     | Search radius in kilometers                     |
| `source`           | Enum        | LINKEDIN, INDEED, or RECOMMENDATION             |
| `type`             | Enum        | AND or OR boolean logic                         |
| `pages`            | Integer     | Number of result pages to fetch                 |
| `state`            | Enum        | Current processing state                        |
| `ai_search`        | Boolean     | Whether AI-enhanced features are enabled        |
| `is_monitored`     | Boolean     | Whether the search watches for new jobs         |
| `new_jobs_count`   | Integer     | Count of unreviewed new matches                 |
| `candidate_id`     | UUID        | Optional linked candidate for CV-based matching |

### How Monitoring Works Under the Hood

The monitoring pipeline operates as follows:

1. A background worker periodically scans all searches where `is_monitored = true`
2. For each monitored search, it re-runs the search criteria against the pool of recently
   indexed jobs (jobs added since the last monitoring cycle)
3. New matches are identified by comparing against the existing result set for that search
4. Newly matched jobs are added to the search's result set with the "New" flag
5. The search entity's `new_jobs_count` is incremented by the number of new matches
6. A real-time SSE notification is published to the user's active session, triggering
   a UI update without page refresh

### How Search Connects to Candidate Matching

When a search has a `candidate_id`, it establishes a connection between the search and a
specific candidate profile. This enables:

* **CV-based matching**: The search criteria can be derived from the candidate's resume
  and skills profile
* **Candidate-job presentation**: Results can be presented in the context of the
  candidate's profile, highlighting matches and gaps
* **Match tracking**: The relationship between the search and candidate enables the
  candidate-job matching workflow where you track which jobs are presented to which
  candidates

### Power-User Tips

<Accordion title="Use search state to prioritize your review queue">
  When you have multiple searches in progress, use the state indicators to prioritize:
  searches in "Done" state are ready for immediate review, while "Searching" or
  "Classifying" searches can be checked later. Do not wait for all searches to complete
  before starting your review -- begin with the first one that finishes.
</Accordion>

<Accordion title="Monitor strategically for different market segments">
  Create separate monitored searches for different market segments: one for "Frontend
  Developer" in Amsterdam, one for "Backend Engineer" in Rotterdam, one for "DevOps
  Engineer" remote. Each monitor operates independently, giving you targeted alerts for
  each segment. This is more effective than a single broad search.
</Accordion>

<Accordion title="Track new job velocity to gauge market activity">
  The `new_jobs_count` on monitored searches is a useful proxy for market activity. If
  a monitored search for "Data Engineer" consistently finds 5-10 new jobs per week, the
  market is active. If it finds 0-1, the market is cold. Use this intelligence to advise
  candidates on timing and set realistic expectations.
</Accordion>

## Related

* [Creating a Search](/jobs/search/creating-a-search) -- How to create new searches
* [Cloning a Search](/jobs/search/cloning-a-search) -- Duplicating searches for teammates
* [Search Results](/jobs/search/search-results) -- Navigating your results
