Overview
ION Career extends Frappe’s standard recruitment doctypes with custom fields to support screening questions, applicant scoring, and answer storage.All custom fields are defined in
ion_career/fixtures/custom_field.jsonJob Opening Extensions
The Job Opening doctype receives one custom field:Job Question Set
Links to the Job Question Set doctype. This field:
- Is inserted after the
designationfield - Is required (
reqd: 1) - you must select a question set - Links to “Job Question Set” doctype
- Allows you to select which screening questions to ask applicants
custom_field.json:1-58Usage
When creating a Job Opening:Job Applicant Extensions
The Job Applicant doctype receives seven custom fields organized into a dedicated tab:Questions Tab
Creates a new “Questions” tab in the Job Applicant form.Inserted after
upper_range.Defined in custom_field.json:173-229Section Break
Provides visual separation within the Questions tab.Inserted after
custom_questions tab.Defined in custom_field.json:116-172Score Field
Displays the automatically calculated applicant score based on screening question answers.Properties:
- Read-only - automatically calculated, users cannot edit
- Translatable
- Inserted after
applicant_rating - Appears in the main details section (not in Questions tab)
custom_field.json:59-115Job Question Answers (JSON)
Question Answers (Table)
Displays question answers in a human-readable table format.Properties:
- Links to “Job Applicant Question Answer” child doctype
- Shows question text, fieldname, answer, and job opening
- Populated automatically by the
process_job_questionshandler - Visible in the Questions tab
- Question
- Fieldname
- Answer
- Job Opening
custom_field.json:287-343Questions HTML Display
HTML field for custom rendering of questions and answers.Properties:
- Can be used for custom visualizations
- Inserted after
custom_question_answerstable - Currently unused by default (available for customization)
custom_field.json:344-400Field Insertion Order
The fields are inserted in a specific order to create a logical flow:Job Opening Section
- Standard fields (job title, company, etc.)
designationcustom_job_question_set← Custom field
Job Applicant - Main Form
- Standard fields (name, email, etc.)
applicant_ratingcustom_score← Custom field (visible)- More standard fields…
upper_range
Custom Field Properties Reference
All custom fields share these common properties:Always “Custom Field”
Target doctype: “Job Opening” or “Job Applicant”
Always “ION Career”
Always
false - these are custom, not auto-generatedThe field after which this custom field should be inserted
Data Flow
Accessing Custom Fields
In Python
In JavaScript
In Reports
Permissions
Custom fields inherit permissions from their parent doctype:- Job Opening: Controlled by Job Opening doctype permissions
- Job Applicant: Controlled by Job Applicant doctype permissions
The
custom_score field is read-only, so even users with write permissions on Job Applicant cannot manually edit scores.Migration and Installation
These custom fields are installed automatically via fixtures when you:- Install the ION Career app
- Run
bench migrate
Best Practices
Don't Modify Field Names
Changing fieldnames will break the integration between web forms and scoring logic
Backup Before Changes
Always backup your site before making changes to custom field definitions
Test in Development
Test custom field changes in a development environment first
Document Customizations
If you extend these fields, document your changes for future reference