From 69a09fac8c2d4ac98801a4636169d1ac2e40da28 Mon Sep 17 00:00:00 2001 From: Rihards Date: Fri, 24 Jul 2026 09:05:23 +0000 Subject: [PATCH] Import UAPF package: HR-atlase-vertesana-ProcessGit-v0.1.1.uapf --- algorithms/candidate-profiler.card.yaml | 87 ++++++++++++++ bpmn/candidate-selection-evaluation.bpmn | 111 ++++++++++++++++++ cmmn/candidate-review-case.cmmn | 19 +++ dmn/01-input-admissibility.dmn | 39 ++++++ dmn/02-review-priority.dmn | 46 ++++++++ docs/CHANGELOG.md | 11 ++ examples/candidate-input.example.json | 58 +++++++++ .../candidate-profile-output.example.json | 96 +++++++++++++++ metadata/lifecycle.yaml | 8 ++ metadata/ownership.yaml | 11 ++ policies/candidate-evaluation-policy.yaml | 61 ++++++++++ resources/guardrails.yaml | 34 ++++++ resources/host-manifest.example.yaml | 15 +++ resources/mappings.yaml | 98 ++++++++++++++++ .../candidate-evaluation-input.schema.json | 47 ++++++++ schemas/candidate-profile-output.schema.json | 82 +++++++++++++ schemas/vacancy-profile.schema.json | 37 ++++++ tests/candidate-profiler-tests.yaml | 27 +++++ uapf.yaml | 82 +++++++++++++ 19 files changed, 969 insertions(+) create mode 100644 algorithms/candidate-profiler.card.yaml create mode 100644 bpmn/candidate-selection-evaluation.bpmn create mode 100644 cmmn/candidate-review-case.cmmn create mode 100644 dmn/01-input-admissibility.dmn create mode 100644 dmn/02-review-priority.dmn create mode 100644 docs/CHANGELOG.md create mode 100644 examples/candidate-input.example.json create mode 100644 examples/candidate-profile-output.example.json create mode 100644 metadata/lifecycle.yaml create mode 100644 metadata/ownership.yaml create mode 100644 policies/candidate-evaluation-policy.yaml create mode 100644 resources/guardrails.yaml create mode 100644 resources/host-manifest.example.yaml create mode 100644 resources/mappings.yaml create mode 100644 schemas/candidate-evaluation-input.schema.json create mode 100644 schemas/candidate-profile-output.schema.json create mode 100644 schemas/vacancy-profile.schema.json create mode 100644 tests/candidate-profiler-tests.yaml create mode 100644 uapf.yaml diff --git a/algorithms/candidate-profiler.card.yaml b/algorithms/candidate-profiler.card.yaml new file mode 100644 index 0000000..b714895 --- /dev/null +++ b/algorithms/candidate-profiler.card.yaml @@ -0,0 +1,87 @@ +kind: uapf.algorithm.card +id: algo.openhr.candidate_profiler +version: "0.1.0" +name: "OpenHR kandidāta daudzdimensionālais profilētājs" +intent: >- + Izvērtēt tikai ar amatu saistītus kandidāta pierādījumus un izveidot + profesionālo, prasmju, darba uzvedības un riska profilu HR speciālista + strukturētai pārskatīšanai. Algoritms nepieņem nodarbinātības lēmumu. +algorithm_kind: classifier +determinism: learned +side_effects: external_call + +io: + inputs: + - id: vacancy_profile + type: object + schema: schemas/vacancy-profile.schema.json + - id: pseudonymous_candidate_id + type: string + - id: redacted_cv_text + type: string + - id: structured_questionnaire + type: object + outputs: + - id: candidate_profile + type: object + schema: schemas/candidate-profile-output.schema.json + +implementation: + type: external + medium: http_api + uri: "processgit://AI_Sandbox/HR-atlase-vertesana/services/candidate-profiler/v1" + hash: "sha256:0000000000000000000000000000000000000000000000000000000000000000" + runtime: + method: POST + path: /evaluate + timeoutSeconds: 90 + contentType: application/json + +owners: + - type: organization + id: algomation-ai + contact: info@algomation.io + +lifecycle: + status: draft + maturity: proof-of-concept + +confidence: + type: probability + threshold: 0.70 + below_threshold: enhanced_human_review + +failure_mode: + action: stop_and_request_human_review + retryable: true + maximumRetries: 1 + +limitations: + - "Rezultāts ir atkarīgs no iesniegto pierādījumu pilnīguma un kvalitātes." + - "Darba uzvedības profils nav personības, psiholoģisks vai medicīnisks novērtējums." + - "Algoritms nedrīkst izmantot aizsargātas vai darbam nebūtiskas pazīmes." + - "Algoritms nedrīkst pieņemt galīgo atlases lēmumu." + +validation: + last_validated: "2026-07-24" + methodology: "POC schema, deterministic fixtures and mandatory human review" + test_suite: tests/candidate-profiler-tests.yaml + metrics: + schemaValidityTarget: 1.0 + evidenceCoverageTarget: 0.85 + +audit: + log_inputs: metadata_only + log_outputs: true + retention: P5Y + +privacy: + personalData: true + technique: pseudonymisation_and_redaction + reIdentificationRisk: low + +risk: + aiActRiskClass: high + domain: employment + humanOversight: mandatory + consequentialDecisionAllowed: false diff --git a/bpmn/candidate-selection-evaluation.bpmn b/bpmn/candidate-selection-evaluation.bpmn new file mode 100644 index 0000000..5ea66fb --- /dev/null +++ b/bpmn/candidate-selection-evaluation.bpmn @@ -0,0 +1,111 @@ + + + + + Flow_01 + + + + Flow_01Flow_02 + + + + Flow_02Flow_03 + + + + Flow_03Flow_04 + + + + Flow_04 + Flow_Profile + Flow_RequestInfo + Flow_ManualOnly + + + + Flow_RequestInfoFlow_EndInfo + + + Flow_EndInfo + + + + Flow_ManualOnlyFlow_ToHumanReview + + + + Flow_ProfileFlow_05 + + + + + + + + Profile_in_vacancy_profile + Profile_in_candidate_id + Profile_in_cv + Profile_in_questionnaire + + Profile_out_profile + + + + + Flow_05Flow_06 + + + + Flow_06Flow_07 + + + + Flow_07 + Flow_ToHumanReview + Flow_08 + + + + Flow_08Flow_09 + + + + Flow_09Flow_10 + + + + Flow_10 + + + + + + + + status = "ADMISSIBLE" + + + status = "INCOMPLETE" or status = "NOT_ADMISSIBLE" + + + status = "REDACTION_REQUIRED" + + + + + + + + + + + diff --git a/cmmn/candidate-review-case.cmmn b/cmmn/candidate-review-case.cmmn new file mode 100644 index 0000000..c228866 --- /dev/null +++ b/cmmn/candidate-review-case.cmmn @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + diff --git a/dmn/01-input-admissibility.dmn b/dmn/01-input-admissibility.dmn new file mode 100644 index 0000000..b62f4cc --- /dev/null +++ b/dmn/01-input-admissibility.dmn @@ -0,0 +1,39 @@ + + + + + + consentConfirmed + + + cvTextPresent + + + prohibitedAttributesDetected + + + + + false-- + "NOT_ADMISSIBLE""REQUEST_CONSENT" + + + truefalse- + "INCOMPLETE""REQUEST_INFORMATION" + + + truetruetrue + "REDACTION_REQUIRED""REDACT_AND_RECHECK" + + + truetruefalse + "ADMISSIBLE""PROFILE" + + + + diff --git a/dmn/02-review-priority.dmn b/dmn/02-review-priority.dmn new file mode 100644 index 0000000..f35beda --- /dev/null +++ b/dmn/02-review-priority.dmn @@ -0,0 +1,46 @@ + + + + + + confidence + + + materialEvidenceGaps + + + materialInconsistencies + + + prohibitedAttributeLeakage + + + + + + + ---true + "MANUAL_ONLY""URGENT""DATA_PROTECTION_REVIEW" + + + --truefalse + "ENHANCED_REVIEW""HIGH""VERIFY_INCONSISTENCIES" + + + -truefalsefalse + "REQUEST_INFORMATION""HIGH""COLLECT_MISSING_EVIDENCE" + + + < 0.70falsefalsefalse + "ENHANCED_REVIEW""HIGH""INDEPENDENT_HUMAN_ASSESSMENT" + + + >= 0.70falsefalsefalse + "NORMAL_REVIEW""NORMAL""STRUCTURED_HR_REVIEW" + + + + diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md new file mode 100644 index 0000000..92665c1 --- /dev/null +++ b/docs/CHANGELOG.md @@ -0,0 +1,11 @@ +# Changelog + +## 0.1.0 — 2026-07-24 + +- sākotnējais kandidātu izvērtēšanas BPMN process; +- ievades pieļaujamības un pārskatīšanas prioritātes DMN tabulas; +- CMMN izņēmumu un cilvēka pārskatīšanas lieta; +- ārējā kandidātu profilētāja Algorithm Card; +- OpenHR resursu un spēju kartējums; +- ievades un izvades JSON shēmas; +- testa piemēri. diff --git a/examples/candidate-input.example.json b/examples/candidate-input.example.json new file mode 100644 index 0000000..373704c --- /dev/null +++ b/examples/candidate-input.example.json @@ -0,0 +1,58 @@ +{ + "vacancy": { + "id": "vacancy-demo-001", + "title": "Senior IT / kiberdrošības projektu vadītājs", + "description": "Vada sarežģītus IT un kiberdrošības projektus.", + "profile": { + "roleTitle": "Senior IT / kiberdrošības projektu vadītājs", + "mandatoryRequirements": [ + { + "id": "experience", + "description": "Vismaz 5 gadu atbilstoša pieredze" + }, + { + "id": "project-management", + "description": "Pieredze sarežģītu projektu vadībā" + }, + { + "id": "cybersecurity", + "description": "Kiberdrošības un riska pārvaldības izpratne" + } + ], + "profileDimensions": [ + { + "id": "professional", + "name": "Profesionālais profils" + }, + { + "id": "skills", + "name": "Prasmju profils" + }, + { + "id": "behavioural", + "name": "Darba uzvedības profils" + }, + { + "id": "risk", + "name": "Riska un pierādījumu profils" + } + ] + } + }, + "candidate": { + "id": "candidate-pseudo-001", + "displayName": "Kandidāts 001" + }, + "application": { + "consentConfirmed": true, + "cvText": "10 gadu pieredze IT un kiberdrošības projektu vadībā...", + "questionnaire": { + "largestProject": "Daudzorganizāciju drošības transformācijas programma", + "riskExample": "Riska reģistrs, kontroles un eskalācijas kārtība", + "stakeholderExample": "Vadības, IT, drošības un piegādātāju koordinācija" + } + }, + "reviewerContext": { + "language": "lv" + } +} \ No newline at end of file diff --git a/examples/candidate-profile-output.example.json b/examples/candidate-profile-output.example.json new file mode 100644 index 0000000..f7708eb --- /dev/null +++ b/examples/candidate-profile-output.example.json @@ -0,0 +1,96 @@ +{ + "algorithm": { + "id": "algo.openhr.candidate_profiler", + "version": "0.1.0" + }, + "professionalProfile": { + "cybersecurityCompetence": { + "score": 82, + "confidence": 0.81, + "evidence": [ + "cv:security-program" + ] + }, + "itProjectManagement": { + "score": 88, + "confidence": 0.86, + "evidence": [ + "questionnaire:largestProject" + ] + }, + "governanceAndRisk": { + "score": 79, + "confidence": 0.78, + "evidence": [ + "questionnaire:riskExample" + ] + }, + "stakeholderManagement": { + "score": 84, + "confidence": 0.8, + "evidence": [ + "questionnaire:stakeholderExample" + ] + } + }, + "skillsProfile": { + "technicalSkills": [ + "cybersecurity governance", + "risk management", + "enterprise IT" + ], + "managementSkills": [ + "programme delivery", + "stakeholder management" + ], + "missingRequiredSkills": [], + "transferableSkills": [ + "consulting", + "business analysis" + ] + }, + "behaviouralProfile": { + "structuredWork": { + "score": 81, + "basis": "Evidence-backed work examples" + }, + "decisionMaking": { + "score": 77, + "basis": "Risk and escalation example" + }, + "collaboration": { + "score": 83, + "basis": "Cross-functional stakeholder example" + } + }, + "riskProfile": { + "evidenceGaps": [ + "Certification evidence not attached" + ], + "claimInconsistencies": [], + "prohibitedAttributeLeakage": false, + "roleMismatchRisks": [], + "confidenceLimitations": [ + "No structured interview evidence" + ] + }, + "recommendation": "NORMAL_REVIEW", + "confidence": 0.79, + "reasons": [ + "Strong role-related project evidence", + "Human verification of certifications required" + ], + "requiredHumanChecks": [ + "Verify employment chronology", + "Verify certifications" + ], + "limitations": [ + "Profile is based on CV and questionnaire only" + ], + "evidenceReferences": [ + { + "id": "cv:security-program", + "source": "redacted_cv_text" + } + ] +} \ No newline at end of file diff --git a/metadata/lifecycle.yaml b/metadata/lifecycle.yaml new file mode 100644 index 0000000..0b52f06 --- /dev/null +++ b/metadata/lifecycle.yaml @@ -0,0 +1,8 @@ +status: draft +version: 0.1.1 +maturity: proof-of-concept +firstPublished: '2026-07-24' +lastModified: '2026-07-24' +changeControl: + model: git-review + requiresHumanApproval: true diff --git a/metadata/ownership.yaml b/metadata/ownership.yaml new file mode 100644 index 0000000..cf409fd --- /dev/null +++ b/metadata/ownership.yaml @@ -0,0 +1,11 @@ +owners: +- type: team + id: openhr-poc + contact: info@algomation.io +- type: role + id: hr-process-owner + contact: info@algomation.io +accountability: + finalDecisionOwner: hr-process-owner + algorithmOwner: openhr-poc + dataProtectionReviewer: data-protection-reviewer diff --git a/policies/candidate-evaluation-policy.yaml b/policies/candidate-evaluation-policy.yaml new file mode 100644 index 0000000..5d4822c --- /dev/null +++ b/policies/candidate-evaluation-policy.yaml @@ -0,0 +1,61 @@ +kind: openhr.candidate-evaluation.policy +id: policy.hr.candidate-evaluation.poc +version: "0.1.0" + +purpose: + allowed: + - assess_job_related_evidence + - identify_evidence_gaps + - create_review_priority + - support_structured_human_review + prohibited: + - infer_medical_condition + - infer_mental_health + - infer_political_opinion + - infer_religion + - infer_sexual_orientation + - infer_ethnicity + - infer_trade_union_membership + - use_family_status + - use_candidate_photo + - automatic_rejection + - automatic_hiring + - automatic_shortlisting + +dataMinimization: + algorithmReceives: + - pseudonymousCandidateId + - redactedCvText + - structuredQuestionnaire + - vacancyProfile + excluded: + - fullName + - personalIdentityNumber + - birthDate + - gender + - nationality + - photo + - homeAddress + - familyStatus + +humanOversight: + mandatory: true + reviewerMustSee: + - algorithmId + - algorithmVersion + - packageVersion + - evidenceReferences + - confidence + - limitations + - requiredHumanChecks + overrideRequiresRationale: true + finalDecisionOwner: role.hr_reviewer + +confidence: + minimumForNormalReview: 0.70 + belowThresholdAction: enhanced_human_review + +retention: + assessmentSnapshot: P2Y + auditEvents: P5Y + rawCv: deployment_policy diff --git a/resources/guardrails.yaml b/resources/guardrails.yaml new file mode 100644 index 0000000..c4a8b41 --- /dev/null +++ b/resources/guardrails.yaml @@ -0,0 +1,34 @@ +kind: uapf.guardrails +id: guardrails.openhr.candidate-evaluation +version: 0.1.1 +rules: +- id: human-decision-required + effect: require + action: authorized_hr_human_review +- id: no-automatic-rejection + effect: deny + action: automatic_rejection +- id: no-automatic-hiring + effect: deny + action: automatic_hiring +- id: no-automatic-shortlisting + effect: deny + action: automatic_shortlisting +- id: protected-attributes-excluded + effect: deny + inputs: + - birthDate + - gender + - nationality + - photo + - familyStatus + - ethnicity + - religion + - politicalOpinion + - sexualOrientation + - healthData +- id: low-confidence-human-review + effect: require + when: + confidenceBelow: 0.7 + action: enhanced_human_review diff --git a/resources/host-manifest.example.yaml b/resources/host-manifest.example.yaml new file mode 100644 index 0000000..b43980e --- /dev/null +++ b/resources/host-manifest.example.yaml @@ -0,0 +1,15 @@ +kind: uapf.host.manifest +host: + id: openhr + name: OpenHR +capabilities: + - id: hr.application.prepare_evaluation_input@1 + inputSchema: schemas/candidate-evaluation-input.schema.json + output: + - pseudonymous_candidate_id + - redacted_cv_text + - structured_questionnaire + - vacancy_profile + - id: hr.assessment.review@1 + - id: hr.decision.record@1 + - id: event.emit@1 diff --git a/resources/mappings.yaml b/resources/mappings.yaml new file mode 100644 index 0000000..05c69e5 --- /dev/null +++ b/resources/mappings.yaml @@ -0,0 +1,98 @@ +kind: uapf.resource.mappings +version: "0.1.0" + +targets: + - id: role.hr_operator + type: human_role + name: "HR operators" + - id: role.hr_reviewer + type: human_role + name: "Pilnvarots HR vērtētājs" + - id: role.data_protection_reviewer + type: human_role + name: "Datu aizsardzības pārskatītājs" + - id: system.openhr + type: system_api + name: "OpenHR" + baseUrlRef: OPENHR_HOST_BASE_URL + - id: system.dmn_engine + type: system_api + name: "UAPF DMN engine" + - id: service.candidate_profiler + type: external_service + name: "Candidate profiler service" + endpointRef: PROCESSGIT_CANDIDATE_PROFILER_URL + - id: system.audit_log + type: system_api + name: "OpenHR audit event store" + +bindings: + - source: {type: bpmn.userTask, ref: Task_RegisterApplication} + targetId: role.hr_operator + mode: manual + + - source: {type: bpmn.serviceTask, ref: Task_RedactInput} + targetId: system.openhr + mode: autonomous + capability: hr.application.prepare_evaluation_input@1 + + - source: {type: bpmn.businessRuleTask, ref: Task_InputAdmissibility} + targetId: system.dmn_engine + mode: autonomous + usesDecision: dmn/01-input-admissibility.dmn#Decision_InputAdmissibility + + - source: {type: bpmn.serviceTask, ref: Task_ProfileCandidate} + targetId: service.candidate_profiler + mode: assisted + algorithmCardRef: algo.openhr.candidate_profiler + + - source: {type: bpmn.businessRuleTask, ref: Task_ReviewPriority} + targetId: system.dmn_engine + mode: autonomous + usesDecision: dmn/02-review-priority.dmn#Decision_ReviewPriority + + - source: {type: bpmn.userTask, ref: Task_DataProtectionReview} + targetId: role.data_protection_reviewer + mode: manual + + - source: {type: bpmn.userTask, ref: Task_HumanReview} + targetId: role.hr_reviewer + mode: manual + capability: hr.assessment.review@1 + + - source: {type: bpmn.userTask, ref: Task_RecordDecision} + targetId: role.hr_reviewer + mode: manual + capability: hr.decision.record@1 + + - source: {type: bpmn.serviceTask, ref: Task_WriteAudit} + targetId: system.audit_log + mode: autonomous + capability: event.emit@1 + + - source: {type: cmmn.humanTask, ref: HT_VerifyEvidence} + targetId: role.hr_reviewer + mode: manual + discretionary: true + + - source: {type: cmmn.humanTask, ref: HT_IndependentReview} + targetId: role.hr_reviewer + mode: manual + discretionary: true + + - source: {type: cmmn.humanTask, ref: HT_DataProtectionReview} + targetId: role.data_protection_reviewer + mode: manual + discretionary: true + +audit: + targetId: system.audit_log + events: + - application_registered + - evaluation_input_prepared + - admissibility_checked + - candidate_profile_generated + - review_priority_determined + - exception_review_opened + - human_review_completed + - human_decision_recorded diff --git a/schemas/candidate-evaluation-input.schema.json b/schemas/candidate-evaluation-input.schema.json new file mode 100644 index 0000000..c08896b --- /dev/null +++ b/schemas/candidate-evaluation-input.schema.json @@ -0,0 +1,47 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "https://processgit.org/schemas/openhr/candidate-evaluation-input.schema.json", + "title": "Candidate evaluation input", + "type": "object", + "required": [ + "vacancy", + "candidate", + "application" + ], + "properties": { + "vacancy": { + "type": "object" + }, + "candidate": { + "type": "object", + "required": [ + "id" + ], + "properties": { + "id": { + "type": "string" + }, + "displayName": { + "type": "string" + } + } + }, + "application": { + "type": "object", + "properties": { + "cvText": { + "type": "string" + }, + "questionnaire": { + "type": "object" + }, + "consentConfirmed": { + "type": "boolean" + } + } + }, + "reviewerContext": { + "type": "object" + } + } +} \ No newline at end of file diff --git a/schemas/candidate-profile-output.schema.json b/schemas/candidate-profile-output.schema.json new file mode 100644 index 0000000..aac2fcf --- /dev/null +++ b/schemas/candidate-profile-output.schema.json @@ -0,0 +1,82 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "https://processgit.org/schemas/openhr/candidate-profile-output.schema.json", + "title": "Candidate multidimensional profile", + "type": "object", + "required": [ + "algorithm", + "professionalProfile", + "skillsProfile", + "behaviouralProfile", + "riskProfile", + "recommendation", + "confidence" + ], + "properties": { + "algorithm": { + "type": "object", + "required": [ + "id", + "version" + ], + "properties": { + "id": { + "type": "string" + }, + "version": { + "type": "string" + } + } + }, + "professionalProfile": { + "type": "object" + }, + "skillsProfile": { + "type": "object" + }, + "behaviouralProfile": { + "type": "object" + }, + "riskProfile": { + "type": "object" + }, + "recommendation": { + "enum": [ + "NORMAL_REVIEW", + "ENHANCED_REVIEW", + "REQUEST_INFORMATION", + "MANUAL_ONLY" + ] + }, + "confidence": { + "type": "number", + "minimum": 0, + "maximum": 1 + }, + "reasons": { + "type": "array", + "items": { + "type": "string" + } + }, + "requiredHumanChecks": { + "type": "array", + "items": { + "type": "string" + } + }, + "limitations": { + "type": "array", + "items": { + "type": "string" + } + }, + "evidenceReferences": { + "type": "array", + "items": { + "type": "object" + } + } + }, + "additionalProperties": true +} \ No newline at end of file diff --git a/schemas/vacancy-profile.schema.json b/schemas/vacancy-profile.schema.json new file mode 100644 index 0000000..cf5ed6f --- /dev/null +++ b/schemas/vacancy-profile.schema.json @@ -0,0 +1,37 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "https://processgit.org/schemas/openhr/vacancy-profile.schema.json", + "title": "OpenHR vacancy profile", + "type": "object", + "required": [ + "roleTitle", + "mandatoryRequirements", + "profileDimensions" + ], + "properties": { + "roleTitle": { + "type": "string" + }, + "mandatoryRequirements": { + "type": "array", + "items": { + "type": "object" + } + }, + "profileDimensions": { + "type": "array", + "items": { + "type": "object" + } + }, + "weights": { + "type": "object", + "additionalProperties": { + "type": "number", + "minimum": 0, + "maximum": 1 + } + } + }, + "additionalProperties": true +} \ No newline at end of file diff --git a/tests/candidate-profiler-tests.yaml b/tests/candidate-profiler-tests.yaml new file mode 100644 index 0000000..af668f5 --- /dev/null +++ b/tests/candidate-profiler-tests.yaml @@ -0,0 +1,27 @@ +kind: uapf.algorithm.tests +algorithmCardRef: algo.openhr.candidate_profiler +cases: + - id: complete-evidence + input: examples/candidate-input.example.json + assertions: + - path: $.algorithm.id + equals: algo.openhr.candidate_profiler + - path: $.confidence + minimum: 0.0 + maximum: 1.0 + - path: $.requiredHumanChecks + type: array + - path: $.recommendation + oneOf: [NORMAL_REVIEW, ENHANCED_REVIEW, REQUEST_INFORMATION, MANUAL_ONLY] + - id: protected-attribute-leakage + fixture: + prohibitedAttributeLeakage: true + expected: + recommendation: MANUAL_ONLY + requiredCheck: DATA_PROTECTION_REVIEW + - id: low-confidence + fixture: + confidence: 0.45 + expected: + recommendation: ENHANCED_REVIEW + requiredCheck: INDEPENDENT_HUMAN_ASSESSMENT diff --git a/uapf.yaml b/uapf.yaml new file mode 100644 index 0000000..645779f --- /dev/null +++ b/uapf.yaml @@ -0,0 +1,82 @@ +kind: uapf.package +id: lv.ai-sandbox.hr.candidate-selection-evaluation +name: HR atlase un kandidātu daudzdimensionālā vērtēšana +description: UAPF Level-4 pakotne kandidāta pieteikuma pieļaujamības pārbaudei, ārēja + daudzdimensionāla profila izveidei un obligātai HR cilvēka pārskatīšanai. +level: 4 +version: 0.1.1 +cornerstones: + bpmn: true + dmn: true + cmmn: true + resources: true +paths: + bpmn: bpmn + dmn: dmn + cmmn: cmmn + resources: resources + metadata: metadata +owners: +- type: team + id: openhr-poc + contact: info@algomation.io +- type: role + id: hr-process-owner + contact: info@algomation.io +lifecycle: draft +artifacts: + bpmn: + - path: bpmn/candidate-selection-evaluation.bpmn + role: primary-process + dmn: + - path: dmn/01-input-admissibility.dmn + role: input-gate + - path: dmn/02-review-priority.dmn + role: review-priority + cmmn: + - path: cmmn/candidate-review-case.cmmn + role: exception-review + resources: + - path: resources/mappings.yaml + role: resource-mapping + - path: resources/guardrails.yaml + role: guardrails + - path: algorithms/candidate-profiler.card.yaml + role: algorithm-card + - path: schemas/candidate-evaluation-input.schema.json + role: input-schema + - path: schemas/candidate-profile-output.schema.json + role: output-schema +inputs: +- vacancy +- candidate +- application +- reviewerContext +outputs: +- admissibilityResult +- candidateProfile +- reviewPriority +- requiredHumanChecks +- processRecommendation +- auditTrail +requires_capabilities: +- hr.application.prepare_evaluation_input@1 +- hr.assessment.review@1 +- hr.decision.record@1 +- event.emit@1 +profiles_supported: +- uapf-ip-orchestrated +guardrails: resources/guardrails.yaml +exposure: + mcp: + enabled: true + runnable: true + exposedEntrypoints: + - process: Process_CandidateSelectionEvaluation + tool: evaluate_candidate + exposedArtifacts: + - manifest + - bpmn + - dmn + - cmmn + - tests