## Why It Matters

Every role is different, and generic application forms leave gaps. Candidate data fields let you attach structured, queryable data to each application — salary expectations, availability, location preferences, custom scores, or anything else your team tracks. When AI extraction is enabled, Kit reads the candidate's cover letter and resume to fill these fields automatically, cutting manual data entry across hundreds of applications.

## What Are Candidate Data Fields

Each job posting has its own set of data field definitions (also called metafield definitions). A field definition specifies:

- **Label** — what the field is called in the UI
- **Key** — a stable identifier used in automations and exports
- **Field type** — the shape of the data (text, number, date, etc.)
- **Visibility** — who can see the field (everyone or managers only)
- **AI extraction** — whether Kit should attempt to populate the field from uploaded documents

Fields live on the job posting, not on the application form itself. Candidates never see them — they are internal data captured by your team or extracted by AI.

## Field Types

Kit supports nine field types. Choose the one that best fits the data you want to capture.

| Type | Description | Good For |
|------|-------------|----------|
| `text` | Single-line free text | Salary expectation, source, location |
| `textarea` | Multi-line free text | Interview notes, recruiter observations |
| `number` | Numeric value | Years of experience, test score |
| `date` | Calendar date | Availability date, offer expiry |
| `select` | Single choice from a predefined list | Stage fit, department match |
| `boolean` | Yes / No toggle | Has work permit, references provided |
| `url` | Web address | Portfolio link, LinkedIn, GitHub |
| `rating` | Integer score up to a configured max (default 5) | Culture fit, technical skill rating |
| `tags` | Multiple values from a predefined list | Skills confirmed, interview panel |

## Adding Fields

Navigate to a job posting and open the **Data Fields** tab. Click **Add Field** to open the field form.

| Form Field | Required | Notes |
|------------|----------|-------|
| Label | Yes | Shown in the UI. Generates the key automatically if left blank first. |
| Key | Yes | Lowercase snake_case. Auto-generated from the label — see [Field Keys](#field-keys). |
| Field Type | Yes | Choose from the nine types above. |
| Placeholder | No | Hint text shown when the field is empty. |
| Required | No | Marks the field as required for completeness tracking. |
| Managers only | No | Hides the field from non-manager team members. |
| AI extraction | No | Enables automatic population from uploaded documents. Requires an AI prompt. |

Fields are ordered. Drag to reorder them after creation.

## Default Fields

When you add your first field, Kit offers four commonly used defaults as a starting point. These come pre-configured with AI extraction enabled and sensible prompts.

| Key | Label | Type | AI Prompt |
|-----|-------|------|-----------|
| `salary_expectation` | Salary Expectation | text | Extracts expected salary, compensation range, or rate |
| `availability` | Availability / Start Date | text | Extracts start date or notice period |
| `source` | Source / Referral | text | No AI extraction — filled in manually |
| `location_preference` | Location Preference | text | Extracts location, city, country, or remote preference |

These defaults are a template, not a requirement. Edit, remove, or skip them as needed.

## Select and Tags Options

When the field type is `select` or `tags`, a **Choices** textarea appears. Enter one option per line (or comma-separated). These become the allowed values for the field.

```
Senior
Mid-level
Junior
```

For `select`, the candidate record stores one choice. For `tags`, it stores an array — multiple choices can apply to a single application.

You can update the choices list after fields are created. Existing values on applications are preserved even if a choice is removed from the list.

## Visibility Controls

Each field has a visibility setting that controls which team members can see it.

| Visibility | Who Can See |
|------------|-------------|
| `everyone` (default) | All team members with access to the job posting |
| `managers_only` | Admins and team members designated as hiring managers for the job |

Use `managers_only` for sensitive fields like salary expectations or compensation-related notes that you don't want shared with every interviewer.

The **Managers only** checkbox on the field form sets this visibility. Fields are visible to everyone by default.

## Field Keys

The key is a stable, lowercase identifier for the field. It is used in data exports, process template automations, and AI extraction schemas.

Rules for valid keys:

- Must start with a lowercase letter (`a-z`)
- Can contain lowercase letters, digits, and underscores (`a-z`, `0-9`, `_`)
- Must be unique within the job posting
- Maximum 50 characters

Kit generates a key automatically from the label when you type it. For example, the label "Salary Expectation" produces the key `salary_expectation`. You can override it manually before saving. Once saved, the key cannot be changed — other systems may reference it.

If a label starts with a digit (e.g., "3D experience"), the generated key is prefixed with `f_` to satisfy the leading-letter rule: `f_3d_experience`.

## Process Template Integration

When you define candidate data fields on a job posting that was created from a [Process Template](/docs/process-template-configuration), those fields apply only to that job. To standardize fields across all jobs using a template, add the field definitions to the template itself — new job postings created from the template will inherit them.

AI-extractable fields automatically participate in the document ingestion pipeline. When a candidate uploads a resume or cover letter during an [Application Form](/docs/creating-a-job-posting#configuring-stages) stage, Kit runs all enabled extraction prompts in a single pass and populates the matching fields on the application.

## Quick Checklist

- [ ] Open the job posting and navigate to **Data Fields**
- [ ] Add fields relevant to this role (or insert defaults as a starting point)
- [ ] Set the field type to match the shape of data you want (`select`, `rating`, `tags`, etc.)
- [ ] Add choices for `select` and `tags` fields
- [ ] Enable AI extraction on fields that can be inferred from cover letters or resumes, and write a clear extraction prompt
- [ ] Mark sensitive fields (e.g., salary) as **Managers only**
- [ ] Verify the auto-generated key is readable and meaningful before saving
- [ ] If you want these fields on all future jobs, add them to your [Process Template](/docs/process-template-configuration) instead