Overview
ION Career automatically calculates a score for each job applicant based on their answers to screening questions. This helps recruiters quickly identify the most qualified candidates.Scoring logic is implemented in
ion_career/handlers.py:4-41How Scoring Works
The scoring system uses a simple algorithm:- Count the number of “Yes” answers to screening questions
- Calculate a score multiplier based on total questions
- Multiply to get a score out of 10
Score Calculation Formula
Example Calculation
If a job has 5 screening questions and an applicant answers “Yes” to 4 of them:
- Score multiplier = 10 / 5 = 2
- Final score = 2 × 4 = 8 out of 10
Score Calculation Process
When a Job Applicant is created via the web form, theprocess_job_questions handler is triggered:
Full implementation available in
ion_career/handlers.py:4-41Score Display
The score is stored in thecustom_score field on the Job Applicant doctype.
Field Properties
Displays the calculated score for the applicant. This field is:
- Read-only (users cannot manually edit)
- Translatable
- Inserted after
applicant_rating - Not required
custom_field.json:59-115Where to Find Scores
Scores are visible in:- Job Applicant Form: In the main details section, after the applicant rating
- List View: Can be added as a column for quick comparison
- Reports: Available for filtering and sorting candidates
Score Usage
Ranking Candidates
Use scores to quickly identify top candidates:Setting Thresholds
Establish score thresholds for different actions:9-10: Auto-Interview
Automatically schedule for interview
6-8: Review
Manual review by recruiter
0-5: Reject
Politely decline with templated email
Combining with Manual Rating
The score complements Frappe’s built-inapplicant_rating field:
- Custom Score: Objective measure based on screening questions
- Applicant Rating: Subjective rating by recruiters after review
Answer Storage
Answers are stored in two formats:1. JSON Format (Hidden)
Thecustom_job_question_answers field stores raw answers as JSON:
2. Table Format (Visible)
Thecustom_question_answers field displays answers in a readable table:
Links to Job Applicant Question Answer child doctype. Shows:
- Question text
- Field name
- Answer value
- Associated job opening
custom_field.json:287-343Validation with Scoring
Thevalidate handler ensures required questions are answered before saving:
See implementation in
ion_career/handlers.py:44-62Real-World Examples
Example 1: Perfect Score
Question Set: Software Engineer Screening (5 questions)- Do you have 3+ years Python experience? → Yes
- Are you familiar with Frappe Framework? → Yes
- Can you work EST timezone? → Yes
- Do you have experience with REST APIs? → Yes
- Are you comfortable with Git? → Yes
Example 2: Partial Match
Question Set: Remote Sales Position (4 questions)- Do you have sales experience? → Yes
- Can you work remotely? → Yes
- Do you have CRM experience? → No
- Are you available for travel? → No
Example 3: Deal-Breaker Questions
Question Set: Licensed Professional (3 questions)- Do you have required certification? → No (required)
- Are you authorized to work? → Yes (required)
- Can you start immediately? → Yes
Customizing the Scoring Algorithm
You can modify the scoring logic to fit your needs:Weighted Questions
Assign different weights to questions:Pass/Fail Threshold
Require minimum score to proceed:Multi-Criteria Scoring
Combine multiple factors:Best Practices
Design Effective Questions
Design Effective Questions
- Use questions that truly differentiate candidates
- Avoid questions that most applicants will answer the same way
- Balance “must-have” vs “nice-to-have” criteria
Set Realistic Thresholds
Set Realistic Thresholds
- Track scores over time to understand distribution
- Adjust thresholds based on hiring success rates
- Don’t rely solely on scores—use as one input
Communicate Transparently
Communicate Transparently
- Let applicants know screening questions affect ranking
- Provide clear instructions on the web form
- Send personalized rejections, not just automated ones
Audit and Improve
Audit and Improve
- Regularly review which questions correlate with successful hires
- Remove questions that don’t provide useful signal
- Update question sets based on changing requirements