## Why It Matters

Hiring rarely starts with an empty pipeline. There is a folder of CVs from a careers fair, an agency shortlist in your inbox, forty applicants from a role you ran last year. None of it is in Kit, and typing it in by hand is why it stays where it is.

The importer takes the whole folder at once — and the part nobody enjoys with it. Every one of those files is a person whose data you now hold, who never clicked anything on your career portal. Kit makes you say where the files came from before it saves any of them.

## Where the CVs Land

You pick the destination first, and it applies to the whole batch:

- **A job posting** — open the posting from [Hiring > Job Postings](/hiring/job_postings) and choose **Import CVs**, either from the posting's ⋯ menu or on its **Applications** card. You choose the stage everyone enters, so a shortlist can land in Interview rather than at the top of the funnel.
- **The talent pool** — start from [Hiring > Talent Pool](/hiring/talent_pool). No role is attached. Use this for CVs you want findable later, not people you are assessing today. See [Talent Pool](/docs/talent-pool) for how that list works.

The choice is made before you upload and cannot be changed mid-batch. If half the folder belongs to a posting, run two imports.

## Uploading Files

Drag a folder onto the drop zone, or click to browse. Files upload and parse **one at a time** with a live progress count, so a slow file never blocks the rest.

| Constraint | Limit |
|------------|-------|
| Files per import | 200 |
| Max file size | 10 MB per file |
| Accepted formats | PDF and .docx |

`.doc`, the older Word format, is refused — save it as PDF first.

Kit checks what a file contains, not what it is called. Renaming `photo.png` to `cv.pdf` does not get it in: the file is rejected on upload, with the reason next to it.

## The Staging Tray

Uploading saves nothing to your pipeline. Every file becomes a row in a staging tray only your team can see, and the tray is where you review.

| Row status | What it means |
|------------|---------------|
| Pending | Queued, not read yet |
| Reading | The AI is parsing this file now |
| Ready | Name, email, phone, title and company came back — check them |
| Not a resume | Readable, but not a CV |
| Couldn't read | Corrupt, scanned without text, or password-protected |
| Not read | AI enrichment is off or out of credits — type the fields in yourself |

The AI reads identity only: name, email, phone, current title, current company. It does not score, rank, or rate anyone. Full-text [resume extraction](/docs/resume-extraction) runs afterwards, once the records exist.

**Every row needs an email address before the batch can be committed.** Rows without one are flagged and the confirm button stays disabled until you fill them in or drop those rows.

Closing the tab is safe. Only files that had not finished uploading are lost — everything already in the tray is waiting under **Hiring > Imports** when you come back.

## Merging Duplicates

A batch almost always contains people Kit already knows. Those rows are flagged: Kit never quietly creates a second copy of someone, and never quietly drops a row for looking familiar. For each flagged row you choose:

- **Attach this CV to the existing person** — the file joins the record you already have
- **Import as new** — you have decided they are two different people
- **Skip** — do not import this row at all

Matching is on email address, so a CV with no email Kit could read cannot be matched against anything. Fill the email in first and the match appears.

## Source & Lawful Basis

An imported CV carries no consent record — nobody ticked a box, because nobody was there. So before the batch commits you record **where the files came from** (your own inbox, a past posting, a referral, an event, or something you describe yourself) and **attest to a lawful basis** for holding them.

Both are stored with every record the import creates and shown on each profile, so a year from now "why do we have this person's CV" is answered on the page rather than from memory.

> [!WARNING]
> The attestation is a record of your decision, not legal advice, and Kit does not verify it. Telling those people you hold their CV is your job — Kit records the decision, it does not send the notice. If you cannot name a lawful basis for a batch, do not import it.

## What an Imported Record Looks Like

Kit never calls these applications, anywhere a person can see. The candidate page reads **Imported 14 March by Anna Kowalska**, with the source you recorded, the original filename, and a link back to the import.

Nothing tells the person their application advanced, because nothing has. The first email they ever get from you is the one Kit sends when **you** advance them to a stage — the moment a stranger first hears from your company. Read it before you click.

## Committing the Import

Confirming reports what happened: how many records were **created**, how many CVs were **merged** into existing people, how many rows you **skipped**, and how many **failed**.

From that moment they are ordinary records — same pipeline, same [review flow](/docs/reviewing-applications) and [stage management](/docs/managing-your-pipeline), the same retention and anonymization rules as everyone else ([Candidate Privacy & Consent](/docs/candidate-privacy-and-consent)), and they appear in [data exports](/docs/data-export) like any other candidate.

## AI Credits

Parsing runs on your account's AI credits, roughly two calls per file. Out of credits, or on an inactive subscription, rows come back **Not read**: the import still works, you type the fields in yourself, and parsing resumes automatically once credits are back. Check the balance at [AI settings](/integrations/ai/settings).

## Permissions

| Action | Who can do it |
|--------|---------------|
| Run an import into a job posting | Admins, and hiring managers on that posting |
| Run an import into the talent pool | Admins only |
| View and edit imported records | All team members |

See [Team Roles](/docs/team-roles) for what each role covers.

## Quick Checklist

- [ ] Decide the destination before you upload — a posting with a stage, or the talent pool
- [ ] Save `.doc` files as PDF, and keep each file under 10 MB
- [ ] Fill in every missing email before confirming, so duplicates can be matched
- [ ] Resolve each flagged duplicate: attach, import as new, or skip
- [ ] Record the source and attest to a lawful basis you could defend
- [ ] Read the stage-advance email before advancing an imported person — it is your first contact