> ## Documentation Index
> Fetch the complete documentation index at: https://docs.encoreos.io/llms.txt
> Use this file to discover all available pages before exploring further.

# EEOC / Title VII Compliance Evidence

> Evidence that interview scorecards and selection procedures align with Title VII and the EEOC Uniform Guidelines.

**Regulations:** Title VII of the Civil Rights Act, EEOC Uniform Guidelines on Employee Selection Procedures\
**Date:** 2026-03-25\
**Status:** ✅ Implemented

***

## 1. Regulatory Context

Title VII and the EEOC Uniform Guidelines require that employee selection procedures (including interviews) be:

* **Job-related and consistent with business necessity** (§1607.3)
* **Applied uniformly** to all candidates for a given position
* **Free from discriminatory bias** in both design and application
* **Documented** with sufficient records for adverse impact analysis (§1607.4)

Structured interviews with standardized scoring criteria are recognized best practice for demonstrating compliance.

***

## 2. Controls Implemented

### 2.1 Standardized Evaluation Criteria

| Control                               | Implementation                                                                                 | Evidence                                                                                                      |
| ------------------------------------- | ---------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- |
| Pre-defined competencies per position | `hr_interview_scorecard_templates.competencies` JSONB with name, description, weight, category | Migration: `20260325132353_ebf0fec5-db63-41ec-9656-95b6b12e9bb4.sql` creates table with NOT NULL competencies |
| Consistent rating scale               | `hr_interview_scorecard_templates.rating_scale` JSONB with min, max, labels                    | Zod schema validation: `ratingScaleSchema` in `ats-scorecards.ts`                                             |
| Template assignment to job postings   | `hr_job_postings.default_scorecard_template_id` FK                                             | All candidates for a posting use the same template                                                            |
| Weighted scoring formula              | `computeOverallScore()` in `interviewScorecard.ts`                                             | Unit tested (13 tests in `interviewScorecard.test.ts`)                                                        |

### 2.2 Blind Evaluation (Bias Prevention)

| Control                                                  | Implementation                                                                      | Evidence                                                     |
| -------------------------------------------------------- | ----------------------------------------------------------------------------------- | ------------------------------------------------------------ |
| Interviewers cannot see others' scores before submitting | RLS policy using `hr_scorecard_interviewer_has_submitted()` SECURITY DEFINER helper | Migration lines 92-101: SELECT policy restricts visibility   |
| Submission lock                                          | `is_submitted` flag; once true, scorecard is immutable                              | CHECK constraint + application-level enforcement             |
| Independent evaluation                                   | Each interviewer completes their own scorecard independently                        | No shared editing; individual `interviewer_id` per scorecard |

### 2.3 Audit Trail

| Control                              | Implementation                                      | Evidence                                   |
| ------------------------------------ | --------------------------------------------------- | ------------------------------------------ |
| Scorecard creation/update timestamps | `created_at`, `updated_at` columns with defaults    | Standard audit columns in migration        |
| Actor tracking                       | `created_by`, `updated_by` UUID FK to `pf_profiles` | Tracks who created/modified each scorecard |
| Submission timestamp                 | `completed_at` timestamp set on submission          | Immutable after submission                 |
| Tenant isolation                     | RLS + `organization_id` on all tables               | Prevents cross-org data leakage            |

### 2.4 Recommendation Constraints

| Control                            | Implementation                                                       | Evidence                                       |
| ---------------------------------- | -------------------------------------------------------------------- | ---------------------------------------------- |
| Standardized recommendation values | CHECK constraint: `strong_hire`, `hire`, `no_hire`, `strong_no_hire` | Migration CHECK constraint on `recommendation` |
| Aggregate recommendation view      | `countRecommendations()` utility + Comparison Grid                   | Shows distribution across all interviewers     |

***

## 3. Documentation & Recordkeeping

Per EEOC §1607.15, organizations must maintain records of selection procedures and their impact:

* **Scorecard data** is retained indefinitely in `hr_interview_scorecards` (no TTL/purge)
* **Template history** preserved via `is_active` soft-disable (templates are not deleted)
* **PDF export** capability allows generation of compliance-ready documentation
* **Comparison Grid** provides aggregate view for adverse impact analysis

***

## 4. Gaps and Recommendations

| Item                                          | Status                    | Notes                                                               |
| --------------------------------------------- | ------------------------- | ------------------------------------------------------------------- |
| Adverse impact ratio calculator (4/5ths rule) | 🔲 Not implemented        | Recommended for Phase 2; can be built from scorecard aggregate data |
| Competency validation against job analysis    | 🔲 Manual process         | Templates should be reviewed by HR/Legal to ensure job-relatedness  |
| Interviewer calibration training              | 🔲 Organizational process | Not a system feature; recommended as operational procedure          |
| Retention policy documentation                | 🔲 Pending                | Define retention periods per state/federal requirements             |

***

## 5. Testing Evidence

* **Unit tests:** 13 tests covering `computeOverallScore`, `countRecommendations`, `averageOverallScores`
* **RLS tests:** `hr-interview-scorecard-templates.rls.test.ts`, `hr-interview-scorecards.rls.test.ts` — tenant isolation, cross-org blocking
* **E2E tests:** `ats-scorecard-workflow.spec.ts` — route rendering, skeleton loading, breadcrumbs

***

## 6. References

* [EEOC Uniform Guidelines on Employee Selection Procedures](https://www.eeoc.gov/laws/guidance/uniform-guidelines-employee-selection-procedures-1978)
* [Title VII of the Civil Rights Act](https://www.eeoc.gov/statutes/title-vii-civil-rights-act-1964)
* [HR-09-ENHANCEMENTS Spec](https://github.com/Encore-OS/encoreos/blob/development/specs/hr/specs/HR-09-ENHANCEMENTS.md)
* [REGULATORY\_COMPLIANCE\_TRACKER.md](/compliance/REGULATORY_COMPLIANCE_TRACKER)
