Skip to main content

Import questions into the Question Bank (CSV)

Goal: Bulk-load questions into the Question Bank from a CSV file.

Who can do this: Platform administrators and Directory administrators only. The Import button is not visible to any other role.


Before you start

  • Your CSV must be 2 MB or smaller.
  • The job_family column must match a job family name that already exists in the Skills taxonomy. The import will reject rows with an unrecognised job family — check the taxonomy first if you're not sure.
  • Each question needs a unique question_id. If a question ID already exists in the bank, that row is silently skipped (no error, just not inserted). This makes re-imports safe to run.
  • New primary roles that don't yet exist in the taxonomy are created automatically during a real import. This does not happen during a preview/dry run.

CSV column reference

Required columns (every row)

ColumnWhat to put in it
question_idA unique identifier for this question — used to prevent duplicates. Any consistent string works (e.g. a UUID, an internal code).
job_familyName of an existing job family in the Skills taxonomy (e.g. "Engineering", "Design")
skill_typeOne of: Role Capability (Hard Skill), Hard Skill, Foundational/Cognitive, Judgment (Soft Skill), Hard + Soft Skill, Values
levelDifficulty tier: L1L6, L0.1, L0.2, L0.3, or NA
formatOne of: mcq, scenario, short_answer, open
sourceOne of: Internal, JD Corpus, Employer Engagement
question_textThe full question text shown to candidates

Required only for MCQ format

When format is mcq, all of these must be filled in:

ColumnWhat to put in it
option_aText for answer option A
option_bText for answer option B
option_cText for answer option C
option_dText for answer option D
correct_answerThe correct letter: A, B, C, or D
rationale_aExplanation of why option A is correct or incorrect
rationale_bExplanation of why option B is correct or incorrect
rationale_cExplanation of why option C is correct or incorrect
rationale_dExplanation of why option D is correct or incorrect

Optional columns

ColumnWhat it does
primary_roleThe specific role this question targets within the job family (auto-created if it doesn't exist)
variant_groupA group label for questions that are variants of each other — questions sharing the same label are linked
parent_skill_labelThe parent skill in the taxonomy this question assesses
primary_subskill_labelThe specific subskill within the parent skill
parent_codeInternal code for the skill, if used in your content process
also_applies_toOther roles or families this question is relevant to — separate multiple values with semicolons
industry_contextIndustry or sector context (e.g. "Financial services")
toolsTools or technologies the question covers — separate multiple values with semicolons
notesInternal notes for content reviewers — not shown to candidates

Steps

Step 1 — Open the import dialog

  1. Sidebar → Question Bank.
  2. Click Import at the top of the Question List tab. This opens the Import CSV dialog.

Step 2 — Upload your file

Drag your .csv file onto the upload area, or click it to browse and select the file. The file name and size appear once it's loaded. You can click again to swap the file.

The Preview only checkbox is on by default. Leave it checked and click Preview to validate your file without inserting anything.

The preview result shows:

  • Total rows — how many question rows were found in the file
  • Valid — rows that passed all validation checks
  • Skipped (dupe) — rows whose question_id already exists in the bank
  • Would insert — the net new rows that would be added

Any errors appear in a table below, showing the row number, column name, and what's wrong. Fix these in your source file before proceeding.

:::tip Always preview first

A preview run is free — it doesn't touch the bank. Use it to catch job family mismatches, missing MCQ options, or unknown skill types before you commit.

:::

Step 4 — Run the real import

Once the preview looks clean:

  1. Uncheck Preview only.
  2. Click Import.
  3. Wait for the result — the dialog shows how many questions were inserted and lists any remaining errors.

Step 5 — Check the Question List

Close the dialog. The newly imported questions appear in the Question List tab with Draft status. From there, submit them for review, promote them through the lifecycle, or bulk-update their status as needed. See Question bank — operator guide for the review and status workflow.


What happens to imported questions

  • Every imported question lands as Draft — none go live automatically.
  • Questions are owned by the platform (not by a specific company).
  • The question_id from your CSV is stored as the external reference — this is what's checked on future imports to skip duplicates.

Common issues

Error messageWhat it meansHow to fix
Job family not found: "[name]"The job family in your CSV doesn't match anything in the taxonomyCheck the exact spelling against the Skills taxonomy and correct the CSV
[field] is required for MCQ formatAn MCQ row is missing an option, correct answer, or rationaleFill in all eight MCQ columns for that row
Unknown level value: "[value]"The level column has an unrecognised valueUse one of: L1–L6, L0.1, L0.2, L0.3, NA
Unknown skill_type value: "[value]"The skill_type column has an unrecognised valueMatch one of the accepted values exactly (see column reference above)
Row appears in "Skipped (dupe)"A question with that question_id already existsIf you want to update an existing question, edit it directly — imports only add new rows
File too largeCSV exceeds 2 MBSplit the file into smaller batches and import in multiple passes

See also