> ## 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.

# Saving & Managing Jobs

> Save jobs from searches and manage your collection with filters and batch operations.

## How Jobs Get Saved

Jobs enter your collection automatically through the search process. When you create a
search and it completes processing, all matching results are saved as jobs linked to that
search. There is no manual "save" step for search results -- they are part of your
collection from the moment the search finishes.

You can also add jobs to your collection from:

* **Client company pages** -- When viewing a company's active job listings, you can save
  individual listings to your collection
* **Search monitoring** -- When a monitored search finds new matching jobs, they are
  automatically added to the search's result set and flagged as "New" (`is_new = true`)

<Info>
  Jobs are personal records. Even when two recruiters on the same agency team have the
  same underlying job listing, their personal metadata (tags, notes, favorites, outreach
  status) is independent. The shared ScrapedJob data (title, description, company info,
  contacts) is the same for everyone.
</Info>

## The All-Jobs List View

The Jobs page provides a comprehensive view of all jobs across all your searches. This
unified view is your primary workspace for managing your entire job pipeline.

### Table Layout

The all-jobs table displays one row per job with the following information:

| Column          | Details                                                      |
| --------------- | ------------------------------------------------------------ |
| **Checkbox**    | For selecting jobs for batch operations                      |
| **Title**       | The job title, clickable to open the detail page             |
| **Company**     | Hiring company name with favicon                             |
| **Location**    | City/region where the job is based                           |
| **Match Score** | Relevance percentage from the search (30-99% scale)          |
| **Date**        | When the job was posted or first discovered                  |
| **Tags**        | Color-coded tag chips applied to the job                     |
| **Status**      | Badges for "New," "Expired," "Via Agency," "Geen Acquisitie" |

### Sorting

Click any column header to sort the table by that column. Click again to toggle between
ascending and descending order. The default sort is by creation date (newest first).

Common sorting strategies:

* **By match score** -- Focus on the highest-relevance jobs first
* **By date** -- See the most recently posted or discovered jobs
* **By company** -- Group jobs from the same company together for efficient batch outreach

<Tip>
  Sorting by company name is a powerful tactic for agency work. When you see multiple
  jobs at the same company, it often indicates they are actively expanding -- a strong
  signal for outreach. Contact the company once about multiple relevant positions rather
  than reaching out separately for each listing.
</Tip>

## Filtering Your Jobs

The all-jobs view provides several filtering mechanisms to help you find specific jobs
in your collection.

### By Tags

If you have tagged your jobs (see [Tagging Jobs](/jobs/tagging-jobs)), you can filter
by one or more tags:

1. Click the **Tag Filter** dropdown above the table
2. Select one or more tags from the list
3. The table updates to show only jobs with the selected tags

This is the most common way to work through your pipeline -- tag jobs during review,
then filter by tag to focus on specific categories.

### By Attributes

Use the attribute filter dropdowns to narrow by job characteristics:

* **Experience level** -- Junior, medior, senior, lead
* **Job type** -- Full-time, part-time, contract, temporary, internship
* **Flexibility** -- Remote, hybrid, on-site
* **Match type** -- Excellent match, good match, poor match

### By Search Origin

Filter to see only jobs from a specific search:

1. Click the **Search Filter** dropdown
2. Select a search from your saved searches list
3. The table shows only jobs associated with that search

This is equivalent to opening the search detail page, but within the all-jobs context
where you can also combine with tag and attribute filters.

### By Active Status

Toggle the **Active Only** filter to hide expired jobs and focus exclusively on positions
that are still available. This is particularly useful when preparing outreach -- there is
no point in contacting a company about a job that has already been filled.

### Hide Geen Acquisitie

Click the **Hide Geen Acquisitie** button in the filter bar to remove all jobs that have
the "geen acquisitie" (no acquisition) flag from your view. Companies that include this
notice in their listings have explicitly stated they do not want recruiter outreach.
Hiding these jobs lets you focus exclusively on companies that are open to working with
recruitment agencies.

<Tip>
  Combine multiple filters to create precise views. For example, filter by "Priority"
  tag + "Senior" experience level + "Active only" + "Hide Geen Acquisitie" to see
  exactly the high-priority senior roles that are still open and receptive to recruiter
  outreach. This combination is the most common "outreach-ready" view for experienced
  recruiters.
</Tip>

## Batch Operations

Batch operations let you act on multiple jobs at once, saving significant time when
managing a large collection.

### Enabling Batch Mode

To access batch operations, click the **Batch Actions** toggle button above the table.
This activates batch mode, which adds checkboxes to each job row and reveals the batch
action toolbar. Click the toggle again to exit batch mode and return to the standard view.

### Selecting Jobs

* **Individual selection** -- Click the checkbox on each job row
* **Select all visible** -- Click the checkbox in the table header to select all jobs
  currently visible on the page (after filters are applied)

<Note>
  "Select all visible" selects only the jobs on the current page. If your filtered view
  spans multiple pages, you need to process each page separately. Apply filters first to
  narrow down to the jobs you want to act on, then use select-all on the filtered view.
</Note>

### Available Batch Actions

Once you have selected one or more jobs, a batch action toolbar appears:

<Steps>
  <Step title="Batch Tagging">
    Apply a tag to all selected jobs at once. Select the tag from the dropdown in the
    batch toolbar. This is the fastest way to organize a large set of results after
    an initial review.

    For example, after scanning through 50 search results, select the 15 most promising
    ones and apply a "Shortlist" tag in a single action.
  </Step>

  <Step title="Batch Deletion">
    Remove all selected jobs from your collection. This is a soft delete -- the jobs are
    marked as deleted but the underlying ScrapedJob data is preserved. Use this to clean
    up poor matches or irrelevant results.

    <Warning>
      Batch deletion cannot be undone from the UI. Be careful when selecting jobs with
      "Select All" -- make sure your filters are set correctly so you do not accidentally
      delete jobs you want to keep.
    </Warning>
  </Step>
</Steps>

## Pagination

The jobs table supports pagination for large collections. Controls at the bottom of the
table let you:

* Navigate between pages (previous, next, specific page number)
* See the total number of jobs in your current filtered view

The default page size displays enough jobs to fill the screen. Pagination is applied
after all filters, so the page count reflects the filtered result set, not your total
collection.

## Favoriting Individual Jobs

Each job row has a **favorite** toggle (star icon). Favoriting a job marks it for quick
reference. You can filter your view to show only favorited jobs when you want to focus
on your top picks.

Favorites are personal -- your favorited jobs are visible only to you, even in an agency
context. The `favorited` field on the Job entity controls this.

## Deleting Individual Jobs

To remove a single job from your collection:

1. Open the job's detail page or find it in the table
2. Click the **Delete** button (trash icon)
3. Confirm the deletion

The job is soft-deleted: the `deleted` flag is set to true, removing it from your view,
but the underlying ScrapedJob data remains in the system. Other users who have the same
job in their collection are not affected.

<Note>
  Deleting a job from a search reduces the search's job count. If you delete all jobs
  from a search, the search itself remains in your saved searches list with a count of
  zero. The search can still be monitored for new matches.
</Note>

## Managing a Growing Collection

As you create more searches and accumulate more jobs, keeping your collection organized
becomes essential. Here are proven strategies:

* **Tag early, tag often** -- Apply tags during your first review pass so you can filter
  efficiently later
* **Remove poor matches** -- After reviewing a search's results, batch-delete the poor
  matches to keep your collection focused
* **Use the active filter** -- Regularly toggle "Active Only" to avoid spending time on
  expired listings
* **Review by search** -- Use the search origin filter to work through results
  systematically, one search at a time
* **Archive completed opportunities** -- Tag jobs where outreach is complete with an
  "Archived" tag, then filter them out of your daily view
* **Monitor new jobs count** -- Check your monitored searches regularly for new matches
  that need review

## Advanced

### Job Record Lifecycle

Understanding the lifecycle of a Job record helps you manage your collection effectively:

1. **Creation** -- A Job record is created when:
   * A search completes and results are saved (most common)
   * A monitored search finds a new matching job
   * You manually save a listing from a client page

2. **Active use** -- During its active life, a Job record accumulates:
   * Tags (shared with agency team)
   * Internal notes (shared with agency team)
   * Favorite status (personal)
   * Outreach flow progress
   * View history (`last_viewed_at`)

3. **State changes** -- A Job's state can change when:
   * The underlying ScrapedJob expires (`is_expired` becomes true)
   * You mark it as favorited/unfavorited
   * Tags are added or removed
   * The `is_new` flag is cleared when you view the search

4. **Deletion** -- Soft delete sets the `deleted` flag. The Job record persists in the
   database but is excluded from all queries and views.

### How Jobs from Different Sources Interact

When the same ScrapedJob appears in your collection from multiple sources (e.g., from
two different searches, or from a search and a client page save), each source creates a
separate Job record:

* **Same ScrapedJob, different searches**: You see the job in both search result views.
  Each Job record has its own tags, notes, and match score (which may differ because the
  searches had different criteria).
* **Same ScrapedJob, search + client save**: The job appears both in the search results
  and in any client-page views. Again, separate Job records with independent metadata.

This is by design -- each context (search, client page) may warrant different tags,
notes, and outreach strategies for the same underlying listing.

### Soft Deletion Details

When you delete a job (individually or in batch):

* The Job entity's `deleted` field is set to `true`
* The Job is excluded from all list views and filter queries
* The associated ScrapedJob is **not** affected
* Other users' Job records for the same ScrapedJob are **not** affected
* The search's active job count is decremented
* Contact details associated with the Job remain in the database but are no longer
  accessible through the deleted Job

### Power-User Tips

<Accordion title="Batch workflow for processing search results">
  The most efficient workflow for processing a new search with many results:

  1. Sort by match score (highest first)
  2. Quick-scan the top 20-30 results
  3. Select the best ones and batch-tag as "Shortlist"
  4. Select borderline ones and batch-tag as "Review Later"
  5. Filter to show only poor matches
  6. Select all and batch-delete
  7. Your collection is now clean and organized for focused work
</Accordion>

<Accordion title="Using search origin filter for focused review">
  When you have many active searches, the all-jobs view can become overwhelming. Use the
  search origin filter to isolate one search at a time. This mimics the experience of
  opening the search detail page but with the added benefit of the all-jobs filter
  toolbar (tag filters, attribute filters) available alongside.
</Accordion>

<Accordion title="Combining filters for pipeline management">
  Create a tag-based pipeline that mirrors your recruitment workflow:

  * "Shortlist" (green) -- jobs worth pursuing
  * "Contacted" (blue) -- outreach sent
  * "Waiting" (yellow) -- awaiting response
  * "Interview" (purple) -- interview scheduled or in progress
  * "Placed" (dark green) -- successful placement

  Then use the tag filter to view each stage independently. Combined with "Active only,"
  this gives you a real-time pipeline view of your active placements.
</Accordion>

### Business Rules

* **Job ownership**: Jobs belong to the user who created them (via search or manual save).
  Agency teammates can see shared notes but cannot modify another user's job records.
* **Cascading deletion**: When a search is deleted, all its Job records are also soft-deleted.
* **New job flag**: The `is_new` flag is set when a monitored search finds a new match. It
  is cleared when the user opens the search detail page, indicating they have reviewed
  the new additions.
* **Match score immutability**: Once a job is scored during the search, its match score
  does not change. If you want to see how the same jobs would score with different
  criteria, clone the search and modify the clone.

<CardGroup cols={2}>
  <Card title="Job Details" icon="file-lines" href="/jobs/job-details">
    Learn about the full job detail page and what information is available for each listing.
  </Card>

  <Card title="Tagging Jobs" icon="tags" href="/jobs/tagging-jobs">
    Create and apply tags to organize your collection for efficient filtering.
  </Card>
</CardGroup>

## Related

* [Jobs Overview](/jobs/overview) -- High-level introduction to the Jobs section
* [Job Details](/jobs/job-details) -- The complete job detail page
* [Active Jobs](/jobs/active-jobs) -- Filtering for active listings
* [Tagging Jobs](/jobs/tagging-jobs) -- Tag creation and management
