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

# Scoping Documents to Jobs

> Restrict a Knowledge Base document so Alex only answers from it for matching jobs

By default, every synced document is **Global** — Alex may answer from it in any interview. That's usually right for company-wide material like benefits or the hiring process.

It's wrong for anything client-specific or role-specific. A pay-rate sheet for one client shouldn't be readable to a candidate interviewing for another. **Job scope** is how you draw that line.

## Setting a Document's Scope

Open the scope dialog from the scope button on any document row — in the **Uploads** list, or in the pages and files dialogs of a connected source.

![Job scope dialog with All jobs (Global) and Specific jobs options](https://mintcdn.com/apriora/1dLms1nR32YN9Z59/images/kb-job-scope-global.jpg?fit=max\&auto=format\&n=1dLms1nR32YN9Z59\&q=85\&s=b7467a93ae01d47792c5ea361ed47f2c)

| Option | Behavior |
| - | - |
| **All jobs (Global)** | Answerable in every interview. |
| **Specific jobs** | Only used when the interview's job matches the conditions you set. |

## Building Conditions

Choosing **Specific jobs** reveals the condition builder — the same one used by the **Filter by Job** step in Workflows.

![Job conditions builder with a Job Status condition using the Equals operator](https://mintcdn.com/apriora/1dLms1nR32YN9Z59/images/kb-job-scope-conditions.jpg?fit=max\&auto=format\&n=1dLms1nR32YN9Z59\&q=85\&s=da4ef86ba36838bd0f040d74c05ff56f)

Each condition is a **column**, an **operator**, and a **value**.

### Columns

Standard job fields:

| | | |
| - | - | - |
| Job Title | Job Status | Job Description |
| Client | Location | Job Owner Email |
| Annual Salary | Hourly Rate | External Job ID |
| Requisition ID | | |

Plus every [custom variable](https://docs.alex.com/interviews/custom-variables.md) defined on jobs in your company, listed alongside them. Type in the column box to search.

### Operators

| Operator | Matches when |
| - | - |
| **Equals** / **Not Equals** | The field exactly matches, or doesn't match, the value |
| **Contains** / **Does Not Contain** | The value appears anywhere in the field |
| **In List** / **Not In List** | The field matches any of several values |
| **Exists** / **Does Not Exist** | The field is set, or isn't — no value needed |

For fields with a fixed set of values, such as **Job Status**, the value box becomes a picker rather than free text.

### Combining conditions

* Conditions in the same group are joined with **AND** — all of them must match. Add one with **Add AND condition**.
* Groups are joined with **OR** — a job matches if it satisfies any group. Add one with **Add OR group**.

You can build up to 10 groups of up to 10 conditions each.

> [!WARNING]
>
> **A job with no value for a field counts as "not equal" for that field.** A condition like `Client Equals Acme` excludes every job where Client is empty — which is the safe default, but means an incompletely filled-in job silently drops out of scope. If jobs in your ATS often have blank fields, prefer conditions on fields you know are always populated, such as Job Title or Job Status.

## How Scope Is Applied

When a candidate asks a question, Alex works out which job the interview belongs to and searches:

* every **Global** document, plus
* every **scoped** document whose conditions that job satisfies.

Scoped documents that don't match are never searched, so their content can't reach the candidate.

> [!NOTE]
>
> Changing a document's scope takes effect on the next question a candidate asks. There's no re-syncing or re-indexing involved — scope is evaluated at the moment of the search.

If Alex can't resolve the job for an interview, it falls back to Global documents only and withholds every scoped one. Scoping fails closed.

## Worked Examples

> **A pay sheet for one client**
>
> **Specific jobs** → `Client` **Equals** `Acme Logistics`.
>
> Only candidates interviewing for Acme jobs can be answered from it.

> **A nursing-specific credentialing FAQ**
>
> **Specific jobs** → `Job Title` **Contains** `Nurse`.
>
> Covers Registered Nurse, Nurse Practitioner, Travel Nurse, and so on without listing each.

> **Two regions, one document**
>
> **Specific jobs** → `Location` **Contains** `London`, then **Add OR group** → `Location` **Contains** `Manchester`.
>
> Matches jobs in either city.

> **Only jobs that are still open**
>
> **Specific jobs** → `Job Status` **Equals** `Open`, and **Add AND condition** → `Client` **Equals** `Acme Logistics`.
>
> Both must hold, so the document goes quiet for that client's closed reqs.

## Practical Advice

* **Start Global, narrow when there's a reason.** Over-scoping is the more common mistake — a document nobody can reach helps nobody, and there's no warning when conditions match zero jobs.
* **Scope on fields your ATS reliably populates.** `Client` and `Job Status` are usually dependable; free-text custom fields often aren't.
* **Prefer Contains over Equals for titles**, which vary far more than people expect between reqs.
* **Check the scope badge** on each document row — it summarizes the conditions at a glance, so a document that should be client-specific but reads **Global** stands out.


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