Skip to content

BSC total score goals ​

Configuration document id: bsc-total-score-goals-{cycle_id} (per fiscal cycle; legacy id bsc-total-score-goals migrated to -2025).

API field: bsc_total_score_goals on GET / PATCH /v1/scorecard/configurations?cycle_id=….

See Fiscal cycles & locks for cycle selection and edit rules.

Structure (fixed) ​

  • 3 employee levels: 1, 2, 3 (employment_data.employee_level)
  • 3 tenure rows per level: min_years 1, 2, 3 (whole years employed: 1 yr+, 2 yrs+, 3 yrs+)
  • 3 bands per row: Standard, Expectation, Goal (each min–max, 0–100)

Resolving the correct row ​

  1. Look up employee_level (1–3).
  2. Compute whole years employed as of the end of the BSC fiscal cycle that contains the reporting month (not as of that month alone).
  3. From tenure tiers, use the row with the largest min_years where years_employed >= min_years.

So if an agent will reach a higher tenure tier within the cycle, every month in that cycle uses that higher tier’s Goal / Expectation / Standard bands.

Example: hire Dec 2024, BSC 2026 (Jul 2026–Jun 2027) → 2 whole years by cycle end (Jun 2027). Jul–Nov 2026 still use the 2 yr+ row (not 1 yr+), even though the 2-year anniversary is in Dec 2026.

Example: 2.5 years at cycle end → treat as 2 whole years → use the 2 yr+ row (not 3 yr+).

Helper: years_employed_for_remarks() in api/app/domains/bsc/employee_compute.py.

Classifying a total BSC score (dashboard) ​

After the weighted BSC total is calculated (0–100), compare it to that row’s minimum thresholds (contiguous lower-bound rules — same as the web UI and bonus qualification):

  1. If score ≥ Goal min → Goal
  2. Else if score ≥ Expectation min → Expectation
  3. Else if score ≥ Standard min → Standard
  4. Else → below standard

Scores are not rounded to integers before classification (e.g. 94.69 with Goal min 95 stays Expectation, not Goal).

Helper: classify_total_score() in api/app/domains/bsc/total_score_goals.py.

Code ​

  • Schema: api/app/schemas/scorecard_config.py (BscTotalScoreGoals, …)
  • Helpers: api/app/domains/bsc/total_score_goals.py, years_employed_for_remarks in employee_compute.py
  • UI tab: BSC Total Score Goals