Domain: hr

System prompt:
# HR MANAGEMENT ASSISTANT POLICY

**Role:** HR Management Assistant

**System Scope:** Internal Employee Services, HR Case Management, Personnel Data, and Policy Fulfillment.

**Compliance Level:** Strict, especially regarding PII/PHI.

You are an HR Management Assistant. Your primary goal is to facilitate the efficient, secure, and compliant delivery of Human Resources services to all employees. Your functions include: registering HR cases, managing employee profile data, processing approvals, assigning fulfillment tasks, maintaining document integrity, and ensuring strict adherence to internal policies and privacy regulations (PII/PHI).

You must always act based on **confirmed user context**, **existing record relationships**, and **database integrity best practices**. You are strictly prohibited from assuming data values, executing ambiguous commands, providing information outside the verified system state, or performing actions that violate employee privacy or security.

## 1. GENERAL OPERATIONAL INSTRUCTIONS AND CONSTRAINTS

* **Policy Violation:** If a user request or internal process step violates any protocol listed in this document, you must halt the operation and provide a citation of the specific policy restriction before pausing.

* **Atomic Operations:** Perform one distinct operation at a time. Do not chain sequential actions if the failure of an initial step compromises the integrity or security of subsequent steps.

* **Knowledge Scope:** Do not provide knowledge, procedures, or employee-specific data that cannot be retrieved directly from the authenticated HR system tables. Do not generate or fabricate record IDs or data fields.

* **User Clarification:** Do not ask for any information or confirmation from the user. If you cannot proceed (e.g., ambiguous query, missing mandatory field), provide the precise reason for the inability to proceed and pause.

* **No Assumptions:** When identifiers such as names or IDs are missing, perform lookups, verify that you are reusing correct values from previous responses, and proceed using the retrieved data. Never assume or fabricate IDs.

## 2. ROLES AND ACCESS SCOPE

Access is strictly compartmentalized by the system role defined in the `role` table.

**Administrator (`admin`)**

* **Authority:** Global system configuration and maintenance.

* **Capabilities:** Full read/write access to all tables (`hr_service`, `workflow`, `assignment_rule`, `user`, `role`, etc.).

* **Restrictions:** Must not perform routine HR case work. Direct modification of Employee PII/PHI is only permissible for data correction or bulk migration under audited procedures.

**HR Specialist (`agent`)**

* **Authority:** Frontline processing of employee requests and fulfillment tasks.

* **Capabilities:**

* Create, update, and manage HR Cases (`hr_case`), Work Notes, and Fulfillment Tasks (`hr_case_task`).

* View and update non-sensitive fields of an employee's HR Profile (`hr_profile`).

* Associate Knowledge Articles (`hr_knowledge`) with a case.

* Manage Case assignment, status, and resolution fields.

* **Restrictions:** Cannot modify core user data, approval records, or system configuration. Sensitive PII fields are read-only and masked.

**HR Manager (`manager`)**

* **Authority:** Supervision, escalation, and approval of HR processes.

* **Capabilities:** Includes all `agent` privileges plus:

* Reassign HR Cases and Tasks across groups.

* Escalate cases and override standard priority settings.

* Approve or reject pending `hr_approval` records.

* Monitor SLA adherence.

* **Restrictions:** Cannot modify system configuration or roles.

**Employee (`employee`)**

* **Authority:** Access to personal HR records and the Service Catalog.

* **Capabilities:**

* Create HR Cases via the Service Catalog.

* Track the status of their own cases.

* View their own HR Profile (except restricted fields).

* View `external` Knowledge Articles.

* Manage their own `hr_approval` requests.

* **Restrictions:** Limited strictly to their own data (`hr_profile_id` matching the authenticated user).

## 3. CORE OPERATIONS: HR CASE AND TASK MANAGEMENT

### 3.1 Registering an HR Case

* **Initiation:** Identify `opened_for` (the subject employee) and `opened_by` (the requester).

* **Mandatory Inputs:**

* `hr_service_id`: Must reference an active service.

* `short_description`: Free-form text (30-120 chars).

* `priority`: If not provided, default is **moderate**.

* **Default Status:** All new cases default to **`status = draft`** or **`ready`**.

* **Automated Action:** The system runs the entitlement check and assignment rule upon creation.

### 3.2 Case Assignment and Task Fulfillment

* **Assignment:** Cases/Tasks must be assigned to an active user in the specified `assignment_group`.

* **Task Generation:** When an HR case moves to `status = work_in_progress`, fulfillment tasks (`hr_case_task`) are generated based on the service template.

* **Task Types:** `checklist`, `survey`, `hr service`, `mark when complete`, `url`.

* **Closure Constraint:** A case cannot move to a closed status (`closed_complete` or `closed_incomplete`) until all mandatory tasks are inactive or closed.

### 3.3 Case Lifecycle Management

Valid `status` transitions must be strictly followed:

* `draft` / `ready` → `work_in_progress`, `awaiting_approval`, `suspended`, or `cancelled`.

* `work_in_progress` → `awaiting_acceptance`, `awaiting_approval`, `suspended`, `closed_complete`, `closed_incomplete`.

* `awaiting_approval` → `work_in_progress` (if rejected) / `closed_complete` (if approved).

* `closed_complete` / `closed_incomplete` → `awaiting_acceptance`.

* `awaiting_acceptance` → `closed` (final internal state).

* `cancelled` is a final state.

### 3.4 Approvals Management

* **Trigger:** When a case requires authorization, it transitions to `status = awaiting_approval`, triggering an `hr_approval` record.

* **Status:** The approval record `request_status` transitions: `requested` → `approved` / `rejected`.

* **Actor:** Only `manager` or `admin` roles may approve/reject.

## 4. SERVICE LEVELS AND KNOWLEDGE MANAGEMENT

* **SLA Breach:** If `resolution_time` is exceeded, set the case escalation flag to true.

* **Knowledge Linking:**

* Only articles with `state = published` are linkable.

* **Visibility:** `internal` (Agents/Managers only) vs. `external` (All employees).

* **Linking Type:** `suggested`, `applied`, `resolution`.

## 5. EMPLOYEE PROFILE AND PII/PHI HANDLING

### 5.1 Employee Profile Management

* **Table:** `hr_profile`.

* **Integrity:** `department_id` and `manager_id` must reference active records.

* **Employment Type:** Valid values for `hr_profile.type` are `full-time`, `part-time`, `contractor`.

### 5.2 Strict PII Security

* **Encryption:** Fields like `national_tax_id` and `bank_account` must be encrypted.

* **Audit:** Read/write operations on PII must be logged in `security_audit`.

* **No Public Disclosure:** Do not output PII in chat/email responses.

## 6. VALIDATION AND LOGGING

* **Validation:** Ensure `user`, `hr_profile`, `hr_case`, and `hr_service` exist and are active before processing.

* **Logging:** Update `sys_updated_on` and `updated_by` automatically. Log failures in `operation_log`.

## 7. PREDEFINED LISTS (ENUMERATIONS)

Usage of values outside these lists results in an `INVALID_ENUM_VALUE` error.

* **user.role:** `admin`, `manager`, `agent`, `employee`

* **hr_service.fulfillment_type:** `manual`, `service_activity`, `workflow`, `lifecycle event`, `advanced`, `flow`

* **hr_profile.type:** `full-time`, `part-time`, `contractor`

* **hr_case.source:** `self-service`, `phone`, `email`, `chat`, `walk-in`, `virtual-agent`

* **hr_case.priority:** `critical`, `high`, `moderate`, `low`, `planning`

* **hr_case.status:** `draft`, `ready`, `awaiting_approval`, `work_in_progress`, `closed_complete`, `closed_incomplete`, `awaiting_acceptance`, `suspended`, `cancelled`

* **hr_case_task.type:** `checklist`, `survey`, `hr service`, `mark when complete`, `url`

* **hr_approval.request_status:** `requested`, `approved`, `rejected`

* **hr_knowledge.state:** `draft`, `published`, `retired`

* **hr_knowledge.visibility:** `internal`, `external`

* **case_knowledge.used_as:** `suggested`, `applied`, `resolution`

* **hr_document.type:** `onboarding_form`, `policy`, `contract`, `performance_review`

## 8. FREE FORM TEXT POLICIES

* **Character Limits:** 15–120 characters for `short_description` and `worknotes`.

* **Case Short Description Format:** "Service: ``, Subject: ``, Detail: ``."

* **Knowledge Article Title:** "Resolution Guide: `` fulfillment steps for ``."

* **Resolution Notes:** Summary < 120 chars; Body < 2000 chars.

Task:
I noticed Christina Oliver has a Workforce Administration case on general inquiry regarding HR policies that's been sitting in the system. Create a Workforce Administration Specialist Skill, assign it to Travis Wood, and assign the case to him directly so he can start working on it. Since Christina is moving, update her HR profile to Office Based Staff status. Transition case status as work is ongoing under the HR Service Desk Group and add Verify Bank Details task. Also, we're no longer using the Needs Relocation Approval criteria, so please deactivate it for the organization. Finally, find the notification for this specific case and mark it ready.

Available tools:
add_new_skill
add_new_skill_to_user
find_notifications_sent_for_incident
update_hr_criteria
get_user_using_name
update_notification
list_hr_criteria
list_hr_cases
update_hr_case
create_hr_case_task
update_hr_profile

Verification checks:
[{"verifier_type": "database_state", "name": "hr_profile_location_type_update", "description": "Verifies that Christina Oliver\u2019s HR profile was updated with location_type set to Office Based.", "gym_name": "sn-hr-internal", "validation_config": {"query": "SELECT COUNT(*) FROM hr_profile WHERE user_id = 2 AND location_type = 'Office Based' AND org_id = 2;", "expected_value": 1, "comparison_type": "equals"}}, {"verifier_type": "database_state", "name": "workforce_administration_specialist_skill_creation", "description": "Verifies that the Workforce Administration Specialist skill was created with active status in organization 1.", "gym_name": "sn-hr-internal", "validation_config": {"query": "SELECT COUNT(*) FROM skill WHERE skill_id = 20 AND name = 'Workforce Administration Specialist' AND active = true AND org_id = 1;", "expected_value": 1, "comparison_type": "equals"}}, {"verifier_type": "database_state", "name": "skill_assignment_to_travis_wood", "description": "Verifies that the Workforce Administration Specialist skill was assigned to Travis Wood with the correct user_skill_id.", "gym_name": "sn-hr-internal", "validation_config": {"query": "SELECT COUNT(*) FROM user_skill WHERE user_skill_id = 336 AND skill = 20 AND user = 11 AND org_id = 1;", "expected_value": 1, "comparison_type": "equals"}}, {"verifier_type": "database_state", "name": "needs_relocation_criteria_deactivation", "description": "Verifies that the Needs Relocation HR approval criteria was deactivated.", "gym_name": "sn-hr-internal", "validation_config": {"query": "SELECT COUNT(*) FROM hr_criteria WHERE hr_criteria_id = 3 AND name = 'Needs Relocation' AND active = false AND org_id = 1;", "expected_value": 1, "comparison_type": "equals"}}, {"verifier_type": "database_state", "name": "hr_case_status_and_skill_update", "description": "Verifies that case HRC0000711 was updated to work_in_progress status with skill 20 added and correct assignment.", "gym_name": "sn-hr-internal", "validation_config": {"query": "SELECT COUNT(*) FROM hr_case WHERE hr_case_id = 1 AND number = 'HRC0000711' AND status = 'work_in_progress' AND assigned_to = 11 AND assignment_group = 4 AND org_id = 1;", "expected_value": 1, "comparison_type": "equals"}}, {"verifier_type": "database_state", "name": "verify_bank_details_task_creation", "description": "Verifies that the Verify Bank Details task was created, linked to parent case 1, assigned to HR Service Desk, and marked ready.", "gym_name": "sn-hr-internal", "validation_config": {"query": "SELECT COUNT(*) FROM hr_case_task WHERE hr_case_task_id = 150 AND short_description = 'Verify Bank Details' AND status = 'ready' AND parent_case = 1 AND assignment_group = 4 AND active = true AND org_id = 1;", "expected_value": 1, "comparison_type": "equals"}}, {"verifier_type": "database_state", "name": "notification_status_update", "description": "Verifies that the notification for case 1 was updated to ready status with correct email and type.", "gym_name": "sn-hr-internal", "validation_config": {"query": "SELECT COUNT(*) FROM notification WHERE notification_id = 1 AND hr_case_id = 1 AND status = 'ready' AND email = 'christina.oliver.2@personal.example.com' AND type = 'report' AND org_id = 1;", "expected_value": 1, "comparison_type": "equals"}}, {"verifier_type": "database_state", "name": "combined_comprehensive_verifier", "description": "Master verifier that sums all individual checks and returns 7 only if all database changes were successful.", "gym_name": "sn-hr-internal", "validation_config": {"query": "SELECT (SELECT COUNT() FROM hr_profile WHERE user_id = 2 AND location_type = 'Office Based' AND org_id = 2) + (SELECT COUNT() FROM skill WHERE skill_id = 20 AND name = 'Workforce Administration Specialist' AND active = true AND org_id = 1) + (SELECT COUNT() FROM user_skill WHERE user_skill_id = 336 AND skill = 20 AND user = 11 AND org_id = 1) + (SELECT COUNT() FROM hr_criteria WHERE hr_criteria_id = 3 AND active = false AND org_id = 1) + (SELECT COUNT() FROM hr_case WHERE hr_case_id = 1 AND status = 'work_in_progress' AND org_id = 1) + (SELECT COUNT() FROM hr_case_task WHERE hr_case_task_id = 150 AND parent_case = 1 AND status = 'ready' AND org_id = 1) + (SELECT COUNT(*) FROM notification WHERE notification_id = 1 AND status = 'ready' AND org_id = 1) AS total_successful_changes;", "expected_value": 7, "comparison_type": "equals"}}, {"verifier_type": "database_state", "name": "hr_profile_location_type_update", "description": "Verifies that Christina Oliver\u2019s HR profile was updated with location_type set to Office Based.", "gym_name": "sn-hr-internal", "validation_config": {"query": "SELECT COUNT(*) FROM hr_profile WHERE user_id = 2 AND location_type = 'Office Based' AND org_id = 2;", "expected_value": 1, "comparison_type": "equals"}}, {"verifier_type": "database_state", "name": "workforce_administration_specialist_skill_creation", "description": "Verifies that the Workforce Administration Specialist skill was created with active status in organization 1.", "gym_name": "sn-hr-internal", "validation_config": {"query": "SELECT COUNT(*) FROM skill WHERE skill_id = 20 AND name = 'Workforce Administration Specialist' AND active = true AND org_id = 1;", "expected_value": 1, "comparison_type": "equals"}}, {"verifier_type": "database_state", "name": "skill_assignment_to_travis_wood", "description": "Verifies that the Workforce Administration Specialist skill was assigned to Travis Wood with the correct user_skill_id.", "gym_name": "sn-hr-internal", "validation_config": {"query": "SELECT COUNT(*) FROM user_skill WHERE user_skill_id = 336 AND skill = 20 AND user = 11 AND org_id = 1;", "expected_value": 1, "comparison_type": "equals"}}, {"verifier_type": "database_state", "name": "needs_relocation_criteria_deactivation", "description": "Verifies that the Needs Relocation HR approval criteria was deactivated.", "gym_name": "sn-hr-internal", "validation_config": {"query": "SELECT COUNT(*) FROM hr_criteria WHERE hr_criteria_id = 3 AND name = 'Needs Relocation' AND active = false AND org_id = 1;", "expected_value": 1, "comparison_type": "equals"}}, {"verifier_type": "database_state", "name": "hr_case_status_and_skill_update", "description": "Verifies that case HRC0000711 was updated to work_in_progress status with skill 20 added and correct assignment.", "gym_name": "sn-hr-internal", "validation_config": {"query": "SELECT COUNT(*) FROM hr_case WHERE hr_case_id = 1 AND number = 'HRC0000711' AND status = 'work_in_progress' AND assigned_to = 11 AND assignment_group = 4 AND org_id = 1;", "expected_value": 1, "comparison_type": "equals"}}, {"verifier_type": "database_state", "name": "verify_bank_details_task_creation", "description": "Verifies that the Verify Bank Details task was created, linked to parent case 1, assigned to HR Service Desk, and marked ready.", "gym_name": "sn-hr-internal", "validation_config": {"query": "SELECT COUNT(*) FROM hr_case_task WHERE hr_case_task_id = 150 AND short_description = 'Verify Bank Details' AND status = 'ready' AND parent_case = 1 AND assignment_group = 4 AND active = true AND org_id = 1;", "expected_value": 1, "comparison_type": "equals"}}, {"verifier_type": "database_state", "name": "notification_status_update", "description": "Verifies that the notification for case 1 was updated to ready status with correct email and type.", "gym_name": "sn-hr-internal", "validation_config": {"query": "SELECT COUNT(*) FROM notification WHERE notification_id = 1 AND hr_case_id = 1 AND status = 'ready' AND email = 'christina.oliver.2@personal.example.com' AND type = 'report' AND org_id = 1;", "expected_value": 1, "comparison_type": "equals"}}, {"verifier_type": "database_state", "name": "combined_comprehensive_verifier", "description": "Master verifier that sums all individual checks and returns 7 only if all database changes were successful.", "gym_name": "sn-hr-internal", "validation_config": {"query": "SELECT (SELECT COUNT() FROM hr_profile WHERE user_id = 2 AND location_type = 'Office Based' AND org_id = 2) + (SELECT COUNT() FROM skill WHERE skill_id = 20 AND name = 'Workforce Administration Specialist' AND active = true AND org_id = 1) + (SELECT COUNT() FROM user_skill WHERE user_skill_id = 336 AND skill = 20 AND user = 11 AND org_id = 1) + (SELECT COUNT() FROM hr_criteria WHERE hr_criteria_id = 3 AND active = false AND org_id = 1) + (SELECT COUNT() FROM hr_case WHERE hr_case_id = 1 AND status = 'work_in_progress' AND org_id = 1) + (SELECT COUNT() FROM hr_case_task WHERE hr_case_task_id = 150 AND parent_case = 1 AND status = 'ready' AND org_id = 1) + (SELECT COUNT(*) FROM notification WHERE notification_id = 1 AND status = 'ready' AND org_id = 1) AS total_successful_changes;", "expected_value": 7, "comparison_type": "equals"}}, {"verifier_type": "database_state", "name": "hr_profile_location_type_update", "description": "Verifies that Christina Oliver\u2019s HR profile was updated with location_type set to Office Based.", "gym_name": "sn-hr-internal", "validation_config": {"query": "SELECT COUNT(*) FROM hr_profile WHERE user_id = 2 AND location_type = 'Office Based' AND org_id = 2;", "expected_value": 1, "comparison_type": "equals"}}, {"verifier_type": "database_state", "name": "workforce_administration_specialist_skill_creation", "description": "Verifies that the Workforce Administration Specialist skill was created with active status in organization 1.", "gym_name": "sn-hr-internal", "validation_config": {"query": "SELECT COUNT(*) FROM skill WHERE skill_id = 20 AND name = 'Workforce Administration Specialist' AND active = true AND org_id = 1;", "expected_value": 1, "comparison_type": "equals"}}, {"verifier_type": "database_state", "name": "skill_assignment_to_travis_wood", "description": "Verifies that the Workforce Administration Specialist skill was assigned to Travis Wood with the correct user_skill_id.", "gym_name": "sn-hr-internal", "validation_config": {"query": "SELECT COUNT(*) FROM user_skill WHERE user_skill_id = 336 AND skill = 20 AND user = 11 AND org_id = 1;", "expected_value": 1, "comparison_type": "equals"}}, {"verifier_type": "database_state", "name": "needs_relocation_criteria_deactivation", "description": "Verifies that the Needs Relocation HR approval criteria was deactivated.", "gym_name": "sn-hr-internal", "validation_config": {"query": "SELECT COUNT(*) FROM hr_criteria WHERE hr_criteria_id = 3 AND name = 'Needs Relocation' AND active = false AND org_id = 1;", "expected_value": 1, "comparison_type": "equals"}}, {"verifier_type": "database_state", "name": "hr_case_status_and_skill_update", "description": "Verifies that case HRC0000711 was updated to work_in_progress status with skill 20 added and correct assignment.", "gym_name": "sn-hr-internal", "validation_config": {"query": "SELECT COUNT(*) FROM hr_case WHERE hr_case_id = 1 AND number = 'HRC0000711' AND status = 'work_in_progress' AND assigned_to = 11 AND assignment_group = 4 AND org_id = 1;", "expected_value": 1, "comparison_type": "equals"}}, {"verifier_type": "database_state", "name": "verify_bank_details_task_creation", "description": "Verifies that the Verify Bank Details task was created, linked to parent case 1, assigned to HR Service Desk, and marked ready.", "gym_name": "sn-hr-internal", "validation_config": {"query": "SELECT COUNT(*) FROM hr_case_task WHERE hr_case_task_id = 150 AND short_description = 'Verify Bank Details' AND status = 'ready' AND parent_case = 1 AND assignment_group = 4 AND active = true AND org_id = 1;", "expected_value": 1, "comparison_type": "equals"}}, {"verifier_type": "database_state", "name": "notification_status_update", "description": "Verifies that the notification for case 1 was updated to ready status with correct email and type.", "gym_name": "sn-hr-internal", "validation_config": {"query": "SELECT COUNT(*) FROM notification WHERE notification_id = 1 AND hr_case_id = 1 AND status = 'ready' AND email = 'christina.oliver.2@personal.example.com' AND type = 'report' AND org_id = 1;", "expected_value": 1, "comparison_type": "equals"}}, {"verifier_type": "database_state", "name": "combined_comprehensive_verifier", "description": "Master verifier that sums all individual checks and returns 7 only if all database changes were successful.", "gym_name": "sn-hr-internal", "validation_config": {"query": "SELECT (SELECT COUNT() FROM hr_profile WHERE user_id = 2 AND location_type = 'Office Based' AND org_id = 2) + (SELECT COUNT() FROM skill WHERE skill_id = 20 AND name = 'Workforce Administration Specialist' AND active = true AND org_id = 1) + (SELECT COUNT() FROM user_skill WHERE user_skill_id = 336 AND skill = 20 AND user = 11 AND org_id = 1) + (SELECT COUNT() FROM hr_criteria WHERE hr_criteria_id = 3 AND active = false AND org_id = 1) + (SELECT COUNT() FROM hr_case WHERE hr_case_id = 1 AND status = 'work_in_progress' AND org_id = 1) + (SELECT COUNT() FROM hr_case_task WHERE hr_case_task_id = 150 AND parent_case = 1 AND status = 'ready' AND org_id = 1) + (SELECT COUNT(*) FROM notification WHERE notification_id = 1 AND status = 'ready' AND org_id = 1) AS total_successful_changes;", "expected_value": 7, "comparison_type": "equals"}}]