Skip to main content

Overview

Job Question Sets allow you to create reusable collections of screening questions that can be attached to Job Openings. When applicants apply through the web form, they’ll be presented with these questions and their answers are automatically scored.

What are Question Sets?

A Job Question Set is a collection of screening questions that help you pre-qualify job applicants. Each question set can contain multiple questions with different input types and validation rules.
Question sets are defined in ion_career/ion_career/doctype/job_question_set/job_question_set.json:8-24

Structure

Each Job Question Set contains:
  • Title: Unique identifier for the question set
  • Questions: A table of questions to ask applicants

Question Fields and Properties

Each question in a Job Question Set has the following properties:
question
Data
required
The question text displayed to applicants. This field is shown in the list view and is required.Defined in ion_career/ion_career/doctype/job_question/job_question.json:16-22
fieldname
Data
Auto-generated unique field name used to store the answer. This field is hidden and read-only.Defined in ion_career/ion_career/doctype/job_question/job_question.json:23-29
input_type
Select
default:"Select"
The type of input control to display:
  • Checkbox: Simple checkbox input
  • Select: Dropdown with Yes/No options
This field is hidden and read-only. Defined in ion_career/ion_career/doctype/job_question/job_question.json:30-38
required
Check
default:"0"
Whether the question must be answered. Shown in list view and validated on the client side.Defined in ion_career/ion_career/doctype/job_question/job_question.json:39-45
order
Int
Display order of the question. Lower numbers appear first.Defined in ion_career/ion_career/doctype/job_question/job_question.json:46-51

Creating a Question Set

1

Navigate to Job Question Set

Go to the Job Question Set doctype from the desk.
2

Create New

Click “New” and enter a unique title for your question set.
3

Add Questions

In the Questions table, add your screening questions:
  • Enter the question text
  • Set whether it’s required
  • Specify the display order
4

Save

Save the question set to make it available for Job Openings.

Managing Question Sets

Attaching to Job Openings

Once created, question sets are attached to Job Openings via the custom_job_question_set field. When applicants apply for that position, they’ll see all questions from the linked question set.
The question set field on Job Opening is required (reqd: 1). You must select a question set before publishing a job opening.

Editing Questions

You can modify questions at any time. Changes will apply to:
  • New job applications (immediately)
  • The web form display for existing job openings
Changing questions won’t affect already-submitted applications, as answers are stored separately.

Use Cases

Technical Screening

Create a question set for technical positions:
- Do you have 5+ years of Python experience?
- Are you proficient with Frappe Framework?
- Can you work in EST timezone?

Compliance Questions

Ensure legal requirements are met:
- Are you authorized to work in [Country]?
- Do you have a valid driver's license? (if required)
- Can you pass a background check?

Eligibility Screening

Filter candidates based on basic requirements:
- Do you have a bachelor's degree?
- Are you willing to relocate?
- Can you start within 30 days?

Role-Specific Questions

Create specialized question sets for different roles:
  • Sales: Experience with CRM, willingness to travel
  • Engineering: Technical skills, open-source contributions
  • Support: Customer service experience, shift flexibility

API Access

Question sets are retrieved via the get_job_questions API method:
import frappe

@frappe.whitelist()
def get_job_questions(job_opening):
    jo = frappe.get_doc("Job Opening", job_opening)
    qset_name = jo.custom_job_question_set
    
    if not qset_name:
        return []
    
    qset = frappe.get_doc("Job Question Set", qset_name)
    return [{"question": q.question, "fieldname": q.fieldname, 
             "input_type": q.input_type, "required": q.required} 
            for q in qset.questions]
See the implementation in ion_career/api.py:2-18

Best Practices

Keep it Short

Limit to 5-10 questions to avoid applicant fatigue

Use Clear Language

Write questions that are easy to understand and unambiguous

Mark Required Carefully

Only mark questions as required if they’re truly deal-breakers

Order Strategically

Put the most important questions first

Build docs developers (and LLMs) love