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

# Importing Job Applications

> Bring your existing job application spreadsheet into Nico via CSV

# Importing Job Applications

Already tracking your job search in a spreadsheet? Import it into Nico in one upload. Go to **Profile → My Data → Import**, or download the CSV template from that page to start from a working example.

The import runs in two steps: Nico first **validates** your file and shows a full preview — row errors, duplicates, and which companies will be created — and only creates applications after you confirm. Nothing is written during validation.

## The CSV format

Only two columns are required: `company_name` and `title`. Everything else is optional — the more you provide, the more complete your history in Nico.

| Column                                                         | Required | Notes                                                                                                                                             |
| -------------------------------------------------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------- |
| `company_name`                                                 | **Yes**  | Matched case-insensitively against your existing companies; new ones are created automatically                                                    |
| `title`                                                        | **Yes**  | The job title                                                                                                                                     |
| `status`                                                       | No       | One of the seven values below; defaults to `draft`                                                                                                |
| `applied_at`                                                   | No       | Date you applied. Sets the application's creation date                                                                                            |
| `first_interview_at`                                           | No       | Date of your first interview — see [why this matters](#make-your-statistics-work-first_interview_at). Requires `applied_at` and cannot be earlier |
| `updated_at`                                                   | No       | Date of the last activity on this application; cannot be earlier than `applied_at` when both are given                                            |
| `url`                                                          | No       | Job posting URL — the deduplication key; see [Duplicates and re-runs](#duplicates-and-re-runs)                                                    |
| `location`                                                     | No       | Free text, e.g. `Amsterdam, NL`                                                                                                                   |
| `work_mode`                                                    | No       | `remote`, `remote-optional`, `hybrid`, or `on-site`                                                                                               |
| `employment_type`                                              | No       | `full-time`, `part-time`, `contract`, `internship`, or `temporary`                                                                                |
| `salary_min` / `salary_max`                                    | No       | Numbers, no currency symbols                                                                                                                      |
| `salary_currency`                                              | No       | 3-letter code, e.g. `USD`, `EUR`                                                                                                                  |
| `salary_period`                                                | No       | `hourly`, `daily`, `weekly`, `four_weekly`, `monthly`, or `yearly`                                                                                |
| `termination_reason`                                           | No       | For rejected/withdrawn applications                                                                                                               |
| `notes`                                                        | No       | Becomes a note on the application (max 10,000 characters)                                                                                         |
| `company_url` / `company_careers_url` / `company_linkedin_url` | No       | Used when creating a new company                                                                                                                  |

Dates accept ISO format (`2026-05-02`) always, or your locale's short format (`05/02/2026` for US English, `02/05/2026` otherwise).

Files are limited to **200 rows** per upload — split larger histories into multiple files.

## Statuses

The import accepts a deliberate subset of [Nico's statuses](/using-nico/statuses-and-transitions) — the seven that cover what people actually track in a spreadsheet:

| Value          | Meaning                               |
| -------------- | ------------------------------------- |
| `draft`        | Found the job but haven't applied yet |
| `applied`      | Application submitted                 |
| `interviewing` | In the interview process              |
| `offer`        | Received an offer                     |
| `rejected`     | The company declined                  |
| `withdrawn`    | You pulled out                        |
| `hired`        | You accepted the offer                |

Finer-grained stages like `phone_screen`, `final_round`, and `negotiating` aren't accepted on import — map them to `interviewing` or `offer`, then refine the status in Nico afterwards.

## Make your statistics work: `first_interview_at`

Nico's [statistics](/using-nico/statistics) are built from your application's **timeline**, not just its current status. The import reconstructs that timeline from your dates:

* `applied_at` → when the application was submitted (feeds *submissions per week*)
* `first_interview_at` → when you entered the interview process (feeds *interview rate* and *average time to interview*), and creates one interview record so the *interviews booked/held* charts include it
* `updated_at` → when the application reached its final status

Without `first_interview_at`, a `rejected` row is counted as a submission but not as an interview — Nico doesn't invent history it can't know. If you interviewed, include the date, even approximately: it's the difference between your funnel metrics reflecting your real track record or undercounting it.

## Duplicates and re-runs

The job posting **URL is the only deduplication key**:

* A row whose URL already exists in your account is **skipped**, not duplicated — so re-uploading a file with URLs is safe.
* Two rows with the same URL **within one file** are flagged as an error during validation.
* Rows **without a URL are always created** — including rows with the same company and title. That's deliberate: applying twice to the same role at the same company is a real thing (reposted openings, a second attempt a year later), and without a URL Nico can't tell a duplicate from a genuine re-application.

If you re-upload a file containing rows without URLs, those rows will be created again. Remove already-imported rows first, or add URLs so deduplication can do its work.
