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