Project Roadmap
Created and maintained by Ryan Chausse (chausse@gmail.com) in my spare time, with my own resources.
Goal: to create a more fault tolerant, predictable, performant, and easy-to-use interface to implement San Francisco's civil service rules regarding hiring.
Current time from git push to production deployment: 45 seconds
You must log in to create and update Eligible Lists, Positions, etc.
Main functions (in progress)
- Create an Eligible List
- Add Candidates to an Eligible List
- Deactivate Candidates on an Eligible List
- Calculate Scores for Candidates on an Eligible List
- Adopt a tentative Eligible List
- Create a Referral, which associates a Position to an Eligible List at a point in time (certification)
- View Candidates and their statuses on a Referral (Reachable/Hired/etc.)
- Create and send a Score Report or Eligible List PDF
- Send Candidates on a Referral to a Job
Note: all data can be edited (including deletion) in Admin section
Create an Eligible List
- Needs to sync with PeopleSoft
- Receive webhook from PeopleSoft when an Eligible List is created
Add Candidates to an Eligible List
- Needs to sync with SmartRecruiters
- Receive webhook from SmartRecruiters when a Candidate is added to Exam job
Deactivate Candidates on an Eligible List
- Can be done with a button
- Needs to sync with SmartRecruiters
- Receive webhooks from SmartRecruiters when a Candidate's status changes
Calculate Scores for Candidates on an Eligible List
- Needs score calculation logic
- Should be triggered by a button, not a webhook from SmartRecruiters
Adopt a tentative Eligible List
- Triggered by a button
Create a Referral
- Associates a Position to an Eligible List at a point in time (certification)
- Triggered by a button
View Candidates and their statuses on a Referral
- Statuses to include Reachable / Alternate / Unavailable / Hired / etc.
- Needs to sync with SmartRecruiters
- Receive webhook from SmartRecruiters when a Candidate is hired, rejected, etc.
- Reachable statuses calculated in real time every time this page is viewed?
Create and send a Score Report or Eligible List PDF
- Use native Python library reportlab, not PHP library
- Design for relative placement of names, scores, other information
- Sends emails automatically to Candidates and EIS Team
Send Candidates on a Referral to a Job
- Needs to sync with SmartRecruiters
- Robust rate limiting of requests and responses via Singleton design pattern
- Robust error handling / pre- and post-condition checks to ensure correctness
All of this is achievable at scale in a monolithic architectural pattern with background workers spawned to handle incoming webhooks (use Celery?), or a high-availability cloud-based endpoint that receives webhooks.
However, it is likely better to ping SmartRecruiters (or whichever ATS) using their audit log API endpoint in order to process new data changes for most functions.