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

# Profile signals

> AI-evaluated pedigree, quality, and industry tags on search hits

Every search hit includes a **`profileSignals`** object — pre-digested AI evaluation from the candidate's profile. Use it for triage alongside `redactedResumeText`.

## Shape

```json theme={null}
{
  "educationPedigree": { "score": 3, "level": "tier1plus", "reason": "B.Tech from IIT Delhi…" },
  "workQuality":       { "score": 3, "level": "high", "reason": "…" },
  "careerGrowth":      { "score": 2, "level": "fast", "reason": "…" },
  "startupExperience": { "score": 3, "level": "funded_startup", "reason": "…" },
  "entrepreneurship":  { "score": 2, "level": "early_employee", "reason": "…" },
  "jobTenure":         { "score": 1, "level": "stable", "reason": "…" },
  "industryTags": [
    { "tag": "ecommerce", "label": "E-commerce", "score": 3, "reason": "…" }
  ]
}
```

Each scalar field is either `{ score, level, reason }` or **`null`**.

## How to interpret

| Field        | Meaning                                                 |
| ------------ | ------------------------------------------------------- |
| **`reason`** | Authoritative one-line explanation — show this to users |
| **`level`**  | Normalized bucket for comparison                        |
| **`score`**  | Raw strength 0–3                                        |
| **`null`**   | Not evaluated — **not a negative signal**               |

## Scalar fields and levels

| Field               | Levels (best → weakest)             |
| ------------------- | ----------------------------------- |
| `educationPedigree` | `tier1plus` → `tier1` → `tier2`     |
| `workQuality`       | `high` → `medium` → `low`           |
| `careerGrowth`      | `fast` → `moderate` → `slow`        |
| `startupExperience` | `funded_startup` → `other_startup`  |
| `entrepreneurship`  | `cofounder` → `early_employee`      |
| `jobTenure`         | `short_tenure` → `mixed` → `stable` |

### Education pedigree ↔ search filter

| `level`     | Colleges                                  |
| ----------- | ----------------------------------------- |
| `tier1plus` | IIT, IIM, BITS Pilani, top NIT/IIIT       |
| `tier1`     | Other NITs, IIITs, top state universities |
| `tier2`     | Other engineering / management colleges   |

Filter with `eduPed=tier1plus-tier1` on search, or run a broader search and rank by `profileSignals.educationPedigree` post-fetch.

## Industry tags

`industryTags` lists domain experience (e-commerce, B2B SaaS, fintech, etc.) with `label`, `score`, and `reason`. Only tags with score ≥ 2 are included. Filter by domain at search time with the `domainTags` param.

## Mapping to search filters

| Signal / level                             | Search param                         |
| ------------------------------------------ | ------------------------------------ |
| `educationPedigree.level`                  | `eduPed=tier1plus-tier1` etc.        |
| `startupExperience.level = funded_startup` | `startupExp=funded_startup`          |
| `entrepreneurship.level = cofounder`       | `entrExp=cofounder`                  |
| `industryTags`                             | `domainTags=b2b_saas-ecommerce` etc. |

`workQuality`, `careerGrowth`, and `jobTenure` are **response-only** signals — there is no search filter for them. When those matter, run a broader search and rank hits by the relevant `profileSignals` field post-fetch.

When requirements are preferences (not hard filters), prefer that broader-search-then-rank approach — or use `profileAttributesMode=or` (see [Search candidates](/guides/search-candidates)) instead of over-narrowing filters.
