MeritBridge Replacement App

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.