HR Operations API Documentation

Read supplied employee records and policies, list missing or expired documents, and build onboarding and offboarding checklists from those policies. Payment is the exact USDC price on Base with x402.

POSThttps://brainiac.software/api/v1/hr-operations/employee-document-extract$0.04 USDC

Extract employee documents

Read employee records and labeled document lines supplied by the caller. Dates, roles, and document types are returned as supplied. Document numbers are masked.

Body

FieldRequiredNotes
employeesNoarray; Array
documentsNoarray; Array
policiesNoarray; Array
acknowledgementsNoarray; Array
completionsNoarray; Array
requirementsNoarray; Array
textNostring
csvNostring
jsonNostring
fileNoobject; Object
roleTextNostring
employeeTextNostring
asOfNostring
withinDaysNointeger

Request exampleJSON

{
  "employees": [
    {
      "id": "E-100",
      "name": "Ada Lovelace",
      "role": "Engineer",
      "startDate": "2024-01-15"
    }
  ],
  "documents": [
    {
      "employeeId": "E-100",
      "type": "passport",
      "identifier": "AB1234567",
      "issuedOn": "2019-01-01",
      "expiresOn": "2020-06-01"
    },
    {
      "employeeId": "E-100",
      "type": "passport",
      "identifier": "ZZ9999999",
      "issuedOn": "2019-01-01",
      "expiresOn": "2021-06-01"
    }
  ]
}

Response exampleJSON

{
  "checkedAt": "2026-11-03T13:00:00.000Z",
  "legalCompliance": false,
  "employmentDecision": false,
  "accessChanged": false,
  "status": "extracted",
  "employeeCount": 1,
  "documentCount": 2,
  "employees": [
    {
      "id": "E-100",
      "name": "Ada Lovelace",
      "role": "Engineer",
      "startDate": "2024-01-15",
      "endDate": ""
    }
  ],
  "documents": [
    {
      "employeeId": "E-100",
      "type": "passport",
      "identifierMasked": "••••4567",
      "issuedOn": "2019-01-01",
      "expiresOn": "2020-06-01"
    },
    {
      "employeeId": "E-100",
      "type": "passport",
      "identifierMasked": "••••9999",
      "issuedOn": "2019-01-01",
      "expiresOn": "2021-06-01"
    }
  ],
  "issues": [
    {
      "kind": "conflict",
      "code": "identifier_differs",
      "employeeId": "E-100",
      "field": "passport",
      "detail": "Two records of this document type list different identifiers. Neither was chosen."
    },
    {
      "kind": "conflict",
      "code": "expiry_differs",
      "employeeId": "E-100",
      "field": "passport",
      "detail": "Two records of this document type list different expiry dates. Neither was chosen."
    }
  ],
  "limitations": [
    "No employment decision is made and no access is changed.",
    "Employment law requirements are not invented. Checklist items come only from supplied policies.",
    "This result is not a legal compliance determination.",
    "Document numbers are masked, and email addresses are not copied into the response.",
    "A missing item means it was not in the request."
  ]
}

cURL

curl -i -X POST "https://brainiac.software/api/v1/hr-operations/employee-document-extract" \
  -H 'content-type: application/json' \
  -H 'Idempotency-Key: <fresh-64-character-random-hex-key>' \
  --data-binary @- <<'JSON'
{
  "employees": [
    {
      "id": "E-100",
      "name": "Ada Lovelace",
      "role": "Engineer",
      "startDate": "2024-01-15"
    }
  ],
  "documents": [
    {
      "employeeId": "E-100",
      "type": "passport",
      "identifier": "AB1234567",
      "issuedOn": "2019-01-01",
      "expiresOn": "2020-06-01"
    },
    {
      "employeeId": "E-100",
      "type": "passport",
      "identifier": "ZZ9999999",
      "issuedOn": "2019-01-01",
      "expiresOn": "2021-06-01"
    }
  ]
}
JSON
POSThttps://brainiac.software/api/v1/hr-operations/employee-record-validate$0.04 USDC

Validate employee records

Compare employee records with the required fields supplied by the caller, and report an end date that falls before the start date. No legal requirement is added.

Body

FieldRequiredNotes
employeesNoarray; Array
documentsNoarray; Array
policiesNoarray; Array
acknowledgementsNoarray; Array
completionsNoarray; Array
requirementsNoarray; Array
textNostring
csvNostring
jsonNostring
fileNoobject; Object
roleTextNostring
employeeTextNostring
asOfNostring
withinDaysNointeger

Request exampleJSON

{
  "employees": [
    {
      "id": "E-100",
      "name": "Ada Lovelace",
      "role": "Engineer",
      "startDate": "2024-01-15",
      "endDate": "2023-01-01"
    }
  ],
  "requirements": [
    {
      "field": "email"
    },
    {
      "field": "role"
    }
  ]
}

Response exampleJSON

{
  "checkedAt": "2026-11-03T13:00:00.000Z",
  "legalCompliance": false,
  "employmentDecision": false,
  "accessChanged": false,
  "status": "checked",
  "employeeCount": 1,
  "records": [
    {
      "employeeId": "E-100",
      "status": "conflict",
      "missing": [
        {
          "field": "email",
          "detail": "The required email was not supplied."
        }
      ],
      "conflicts": [
        {
          "field": "endDate",
          "detail": "The end date is before the start date. The dates were not rewritten."
        }
      ]
    }
  ],
  "issues": [],
  "limitations": [
    "No employment decision is made and no access is changed.",
    "Employment law requirements are not invented. Checklist items come only from supplied policies.",
    "This result is not a legal compliance determination.",
    "Document numbers are masked, and email addresses are not copied into the response.",
    "A missing item means it was not in the request."
  ]
}

cURL

curl -i -X POST "https://brainiac.software/api/v1/hr-operations/employee-record-validate" \
  -H 'content-type: application/json' \
  -H 'Idempotency-Key: <fresh-64-character-random-hex-key>' \
  --data-binary @- <<'JSON'
{
  "employees": [
    {
      "id": "E-100",
      "name": "Ada Lovelace",
      "role": "Engineer",
      "startDate": "2024-01-15",
      "endDate": "2023-01-01"
    }
  ],
  "requirements": [
    {
      "field": "email"
    },
    {
      "field": "role"
    }
  ]
}
JSON
POSThttps://brainiac.software/api/v1/hr-operations/employee-policy-acknowledgement-check$0.04 USDC

Check policy acknowledgements

Match supplied acknowledgements to supplied policies by policy id. An acknowledgement dated before the policy date is stale. This is not a compliance determination.

Body

FieldRequiredNotes
employeesNoarray; Array
documentsNoarray; Array
policiesNoarray; Array
acknowledgementsNoarray; Array
completionsNoarray; Array
requirementsNoarray; Array
textNostring
csvNostring
jsonNostring
fileNoobject; Object
roleTextNostring
employeeTextNostring
asOfNostring
withinDaysNointeger

Request exampleJSON

{
  "employees": [
    {
      "id": "E-100",
      "name": "Ada Lovelace"
    }
  ],
  "policies": [
    {
      "id": "P4",
      "stage": "acknowledgement",
      "name": "Safety handbook",
      "kind": "policy",
      "effectiveOn": "2026-06-01"
    },
    {
      "id": "P5",
      "stage": "acknowledgement",
      "name": "Privacy notice",
      "kind": "policy",
      "effectiveOn": "2026-01-01"
    }
  ],
  "acknowledgements": [
    {
      "employeeId": "E-100",
      "policyId": "P4",
      "acknowledgedOn": "2026-01-01"
    }
  ]
}

Response exampleJSON

{
  "checkedAt": "2026-11-03T13:00:00.000Z",
  "legalCompliance": false,
  "employmentDecision": false,
  "accessChanged": false,
  "status": "checked",
  "checks": [
    {
      "employeeId": "E-100",
      "policyId": "P4",
      "policyName": "Safety handbook",
      "status": "stale",
      "acknowledgedOn": "2026-01-01",
      "effectiveOn": "2026-06-01",
      "detail": "The acknowledgement date is before the supplied policy date. The policy was not treated as current."
    },
    {
      "employeeId": "E-100",
      "policyId": "P5",
      "policyName": "Privacy notice",
      "status": "missing",
      "acknowledgedOn": "",
      "effectiveOn": "2026-01-01",
      "detail": "No acknowledgement was supplied for this policy."
    }
  ],
  "issues": [],
  "limitations": [
    "No employment decision is made and no access is changed.",
    "Employment law requirements are not invented. Checklist items come only from supplied policies.",
    "This result is not a legal compliance determination.",
    "Document numbers are masked, and email addresses are not copied into the response.",
    "A missing item means it was not in the request."
  ]
}

cURL

curl -i -X POST "https://brainiac.software/api/v1/hr-operations/employee-policy-acknowledgement-check" \
  -H 'content-type: application/json' \
  -H 'Idempotency-Key: <fresh-64-character-random-hex-key>' \
  --data-binary @- <<'JSON'
{
  "employees": [
    {
      "id": "E-100",
      "name": "Ada Lovelace"
    }
  ],
  "policies": [
    {
      "id": "P4",
      "stage": "acknowledgement",
      "name": "Safety handbook",
      "kind": "policy",
      "effectiveOn": "2026-06-01"
    },
    {
      "id": "P5",
      "stage": "acknowledgement",
      "name": "Privacy notice",
      "kind": "policy",
      "effectiveOn": "2026-01-01"
    }
  ],
  "acknowledgements": [
    {
      "employeeId": "E-100",
      "policyId": "P4",
      "acknowledgedOn": "2026-01-01"
    }
  ]
}
JSON
POSThttps://brainiac.software/api/v1/hr-operations/employee-onboarding-checklist$0.05 USDC

List onboarding tasks

Build an onboarding checklist only from supplied onboarding policies. A document or acknowledgement counts only when it matches that policy. No statutory form is added.

Body

FieldRequiredNotes
employeesNoarray; Array
documentsNoarray; Array
policiesNoarray; Array
acknowledgementsNoarray; Array
completionsNoarray; Array
requirementsNoarray; Array
textNostring
csvNostring
jsonNostring
fileNoobject; Object
roleTextNostring
employeeTextNostring
asOfNostring
withinDaysNointeger

Request exampleJSON

{
  "employees": [
    {
      "id": "E-100",
      "name": "Ada Lovelace"
    }
  ],
  "documents": [
    {
      "employeeId": "E-100",
      "type": "passport",
      "identifier": "AB1234567",
      "expiresOn": "2030-01-01"
    }
  ],
  "policies": [
    {
      "id": "P1",
      "stage": "onboarding",
      "name": "Identification",
      "kind": "document",
      "match": "passport"
    },
    {
      "id": "P2",
      "stage": "onboarding",
      "name": "Handbook",
      "kind": "policy"
    }
  ]
}

Response exampleJSON

{
  "checkedAt": "2026-11-03T13:00:00.000Z",
  "legalCompliance": false,
  "employmentDecision": false,
  "accessChanged": false,
  "status": "listed",
  "items": [
    {
      "employeeId": "E-100",
      "requirementId": "P1",
      "name": "Identification",
      "kind": "document",
      "status": "met",
      "detail": "A supplied document record matches this policy."
    },
    {
      "employeeId": "E-100",
      "requirementId": "P2",
      "name": "Handbook",
      "kind": "policy",
      "status": "missing",
      "detail": "No supplied policy record matches this policy."
    }
  ],
  "issues": [],
  "limitations": [
    "No employment decision is made and no access is changed.",
    "Employment law requirements are not invented. Checklist items come only from supplied policies.",
    "This result is not a legal compliance determination.",
    "Document numbers are masked, and email addresses are not copied into the response.",
    "A missing item means it was not in the request."
  ]
}

cURL

curl -i -X POST "https://brainiac.software/api/v1/hr-operations/employee-onboarding-checklist" \
  -H 'content-type: application/json' \
  -H 'Idempotency-Key: <fresh-64-character-random-hex-key>' \
  --data-binary @- <<'JSON'
{
  "employees": [
    {
      "id": "E-100",
      "name": "Ada Lovelace"
    }
  ],
  "documents": [
    {
      "employeeId": "E-100",
      "type": "passport",
      "identifier": "AB1234567",
      "expiresOn": "2030-01-01"
    }
  ],
  "policies": [
    {
      "id": "P1",
      "stage": "onboarding",
      "name": "Identification",
      "kind": "document",
      "match": "passport"
    },
    {
      "id": "P2",
      "stage": "onboarding",
      "name": "Handbook",
      "kind": "policy"
    }
  ]
}
JSON
POSThttps://brainiac.software/api/v1/hr-operations/employee-offboarding-checklist$0.05 USDC

List offboarding tasks

Build an offboarding checklist only from supplied offboarding policies. A task is met only by a supplied completion record. Access is not changed.

Body

FieldRequiredNotes
employeesNoarray; Array
documentsNoarray; Array
policiesNoarray; Array
acknowledgementsNoarray; Array
completionsNoarray; Array
requirementsNoarray; Array
textNostring
csvNostring
jsonNostring
fileNoobject; Object
roleTextNostring
employeeTextNostring
asOfNostring
withinDaysNointeger

Request exampleJSON

{
  "employees": [
    {
      "id": "E-100",
      "name": "Ada Lovelace"
    }
  ],
  "policies": [
    {
      "id": "P3",
      "stage": "offboarding",
      "name": "Return equipment",
      "kind": "task"
    }
  ]
}

Response exampleJSON

{
  "checkedAt": "2026-11-03T13:00:00.000Z",
  "legalCompliance": false,
  "employmentDecision": false,
  "accessChanged": false,
  "status": "listed",
  "items": [
    {
      "employeeId": "E-100",
      "requirementId": "P3",
      "name": "Return equipment",
      "kind": "task",
      "status": "missing",
      "detail": "No supplied task record matches this policy. Access was not changed."
    }
  ],
  "issues": [],
  "limitations": [
    "No employment decision is made and no access is changed.",
    "Employment law requirements are not invented. Checklist items come only from supplied policies.",
    "This result is not a legal compliance determination.",
    "Document numbers are masked, and email addresses are not copied into the response.",
    "A missing item means it was not in the request."
  ]
}

cURL

curl -i -X POST "https://brainiac.software/api/v1/hr-operations/employee-offboarding-checklist" \
  -H 'content-type: application/json' \
  -H 'Idempotency-Key: <fresh-64-character-random-hex-key>' \
  --data-binary @- <<'JSON'
{
  "employees": [
    {
      "id": "E-100",
      "name": "Ada Lovelace"
    }
  ],
  "policies": [
    {
      "id": "P3",
      "stage": "offboarding",
      "name": "Return equipment",
      "kind": "task"
    }
  ]
}
JSON
POSThttps://brainiac.software/api/v1/hr-operations/job-role-description-compare$0.04 USDC

Compare a role description

Compare Duty lines in a role description with Duty lines supplied for an employee. Unlabeled prose is not a duty. The comparison is not an employment decision.

Body

FieldRequiredNotes
employeesNoarray; Array
documentsNoarray; Array
policiesNoarray; Array
acknowledgementsNoarray; Array
completionsNoarray; Array
requirementsNoarray; Array
textNostring
csvNostring
jsonNostring
fileNoobject; Object
roleTextNostring
employeeTextNostring
asOfNostring
withinDaysNointeger

Request exampleJSON

{
  "roleText": "Title: Press operator\nDuty: Operate the press\nDuty: Train new operators\n",
  "employeeText": "Title: Press operator\nDuty: Operate the press\nDuty: Sweep the floor\n"
}

Response exampleJSON

{
  "checkedAt": "2026-11-03T13:00:00.000Z",
  "legalCompliance": false,
  "employmentDecision": false,
  "accessChanged": false,
  "status": "compared",
  "roleTitle": "Press operator",
  "employeeTitle": "Press operator",
  "matched": [
    {
      "duty": "Operate the press"
    }
  ],
  "missing": [
    {
      "duty": "Train new operators"
    }
  ],
  "extra": [
    {
      "duty": "Sweep the floor"
    }
  ],
  "issues": [],
  "limitations": [
    "No employment decision is made and no access is changed.",
    "Employment law requirements are not invented. Checklist items come only from supplied policies.",
    "This result is not a legal compliance determination.",
    "Document numbers are masked, and email addresses are not copied into the response.",
    "A missing item means it was not in the request."
  ]
}

cURL

curl -i -X POST "https://brainiac.software/api/v1/hr-operations/job-role-description-compare" \
  -H 'content-type: application/json' \
  -H 'Idempotency-Key: <fresh-64-character-random-hex-key>' \
  --data-binary @- <<'JSON'
{
  "roleText": "Title: Press operator\nDuty: Operate the press\nDuty: Train new operators\n",
  "employeeText": "Title: Press operator\nDuty: Operate the press\nDuty: Sweep the floor\n"
}
JSON
POSThttps://brainiac.software/api/v1/hr-operations/workforce-document-expiry-check$0.04 USDC

Check document expiry

Compare supplied expiry dates with a supplied as-of date. A document is due only inside the supplied day window. No date is invented when the as-of date is missing.

Body

FieldRequiredNotes
employeesNoarray; Array
documentsNoarray; Array
policiesNoarray; Array
acknowledgementsNoarray; Array
completionsNoarray; Array
requirementsNoarray; Array
textNostring
csvNostring
jsonNostring
fileNoobject; Object
roleTextNostring
employeeTextNostring
asOfNostring
withinDaysNointeger

Request exampleJSON

{
  "asOf": "2026-11-03",
  "withinDays": 30,
  "documents": [
    {
      "employeeId": "E-100",
      "type": "passport",
      "identifier": "AB1234567",
      "expiresOn": "2020-06-01"
    },
    {
      "employeeId": "E-100",
      "type": "visa",
      "identifier": "CD7654321",
      "expiresOn": "2026-11-20"
    }
  ]
}

Response exampleJSON

{
  "checkedAt": "2026-11-03T13:00:00.000Z",
  "legalCompliance": false,
  "employmentDecision": false,
  "accessChanged": false,
  "status": "checked",
  "asOf": "2026-11-03",
  "withinDays": 30,
  "documents": [
    {
      "employeeId": "E-100",
      "type": "passport",
      "identifierMasked": "••••4567",
      "expiresOn": "2020-06-01",
      "status": "expired",
      "detail": "The expiry date is before 2026-11-03."
    },
    {
      "employeeId": "E-100",
      "type": "visa",
      "identifierMasked": "••••4321",
      "expiresOn": "2026-11-20",
      "status": "due",
      "detail": "The expiry date falls within the supplied 30-day window."
    }
  ],
  "issues": [],
  "limitations": [
    "No employment decision is made and no access is changed.",
    "Employment law requirements are not invented. Checklist items come only from supplied policies.",
    "This result is not a legal compliance determination.",
    "Document numbers are masked, and email addresses are not copied into the response.",
    "A missing item means it was not in the request."
  ]
}

cURL

curl -i -X POST "https://brainiac.software/api/v1/hr-operations/workforce-document-expiry-check" \
  -H 'content-type: application/json' \
  -H 'Idempotency-Key: <fresh-64-character-random-hex-key>' \
  --data-binary @- <<'JSON'
{
  "asOf": "2026-11-03",
  "withinDays": 30,
  "documents": [
    {
      "employeeId": "E-100",
      "type": "passport",
      "identifier": "AB1234567",
      "expiresOn": "2020-06-01"
    },
    {
      "employeeId": "E-100",
      "type": "visa",
      "identifier": "CD7654321",
      "expiresOn": "2026-11-20"
    }
  ]
}
JSON
POSThttps://brainiac.software/api/v1/hr-operations/record-completeness-report$0.12 USDC

Report personnel record completeness

Combine supplied records, document dates, policy acknowledgements, onboarding and offboarding items, and role duties. The report does not determine legal compliance or change access.

Body

FieldRequiredNotes
employeesNoarray; Array
documentsNoarray; Array
policiesNoarray; Array
acknowledgementsNoarray; Array
completionsNoarray; Array
requirementsNoarray; Array
textNostring
csvNostring
jsonNostring
fileNoobject; Object
roleTextNostring
employeeTextNostring
asOfNostring
withinDaysNointeger

Request exampleJSON

{
  "asOf": "2026-11-03",
  "withinDays": 30,
  "employees": [
    {
      "id": "E-100",
      "name": "Ada Lovelace",
      "role": "Engineer",
      "startDate": "2024-01-15",
      "endDate": "2023-01-01"
    }
  ],
  "documents": [
    {
      "employeeId": "E-100",
      "type": "passport",
      "identifier": "AB1234567",
      "issuedOn": "2019-01-01",
      "expiresOn": "2020-06-01"
    }
  ],
  "requirements": [
    {
      "field": "email"
    }
  ],
  "policies": [
    {
      "id": "P1",
      "stage": "onboarding",
      "name": "Identification",
      "kind": "document",
      "match": "passport"
    },
    {
      "id": "P2",
      "stage": "onboarding",
      "name": "Handbook",
      "kind": "policy"
    },
    {
      "id": "P3",
      "stage": "offboarding",
      "name": "Return equipment",
      "kind": "task"
    },
    {
      "id": "P4",
      "stage": "acknowledgement",
      "name": "Safety handbook",
      "kind": "policy",
      "effectiveOn": "2026-06-01"
    }
  ],
  "acknowledgements": [
    {
      "employeeId": "E-100",
      "policyId": "P4",
      "acknowledgedOn": "2026-01-01"
    }
  ],
  "roleText": "Title: Engineer\nDuty: Operate the press\nDuty: Train new operators\n",
  "employeeText": "Title: Engineer\nDuty: Operate the press\nDuty: Sweep the floor\n"
}

Response exampleJSON

{
  "checkedAt": "2026-11-03T13:00:00.000Z",
  "legalCompliance": false,
  "employmentDecision": false,
  "accessChanged": false,
  "status": "checked",
  "employeeCount": 1,
  "documentCount": 1,
  "asOf": "2026-11-03",
  "withinDays": 30,
  "employees": [
    {
      "id": "E-100",
      "name": "Ada Lovelace",
      "role": "Engineer",
      "startDate": "2024-01-15",
      "endDate": "2023-01-01"
    }
  ],
  "documents": [
    {
      "employeeId": "E-100",
      "type": "passport",
      "identifierMasked": "••••4567",
      "issuedOn": "2019-01-01",
      "expiresOn": "2020-06-01"
    }
  ],
  "records": [
    {
      "employeeId": "E-100",
      "status": "conflict",
      "missing": [
        {
          "field": "email",
          "detail": "The required email was not supplied."
        }
      ],
      "conflicts": [
        {
          "field": "endDate",
          "detail": "The end date is before the start date. The dates were not rewritten."
        }
      ]
    }
  ],
  "acknowledgements": [
    {
      "employeeId": "E-100",
      "policyId": "P4",
      "policyName": "Safety handbook",
      "status": "stale",
      "acknowledgedOn": "2026-01-01",
      "effectiveOn": "2026-06-01",
      "detail": "The acknowledgement date is before the supplied policy date. The policy was not treated as current."
    }
  ],
  "onboarding": [
    {
      "employeeId": "E-100",
      "requirementId": "P1",
      "name": "Identification",
      "kind": "document",
      "status": "met",
      "detail": "A supplied document record matches this policy."
    },
    {
      "employeeId": "E-100",
      "requirementId": "P2",
      "name": "Handbook",
      "kind": "policy",
      "status": "missing",
      "detail": "No supplied policy record matches this policy."
    }
  ],
  "offboarding": [
    {
      "employeeId": "E-100",
      "requirementId": "P3",
      "name": "Return equipment",
      "kind": "task",
      "status": "missing",
      "detail": "No supplied task record matches this policy. Access was not changed."
    }
  ],
  "expiry": [
    {
      "employeeId": "E-100",
      "type": "passport",
      "identifierMasked": "••••4567",
      "expiresOn": "2020-06-01",
      "status": "expired",
      "detail": "The expiry date is before 2026-11-03."
    }
  ],
  "roleTitle": "Engineer",
  "employeeTitle": "Engineer",
  "matched": [
    {
      "duty": "Operate the press"
    }
  ],
  "missing": [
    {
      "duty": "Train new operators"
    }
  ],
  "extra": [
    {
      "duty": "Sweep the floor"
    }
  ],
  "issues": [],
  "limitations": [
    "No employment decision is made and no access is changed.",
    "Employment law requirements are not invented. Checklist items come only from supplied policies.",
    "This result is not a legal compliance determination.",
    "Document numbers are masked, and email addresses are not copied into the response.",
    "A missing item means it was not in the request."
  ]
}

cURL

curl -i -X POST "https://brainiac.software/api/v1/hr-operations/record-completeness-report" \
  -H 'content-type: application/json' \
  -H 'Idempotency-Key: <fresh-64-character-random-hex-key>' \
  --data-binary @- <<'JSON'
{
  "asOf": "2026-11-03",
  "withinDays": 30,
  "employees": [
    {
      "id": "E-100",
      "name": "Ada Lovelace",
      "role": "Engineer",
      "startDate": "2024-01-15",
      "endDate": "2023-01-01"
    }
  ],
  "documents": [
    {
      "employeeId": "E-100",
      "type": "passport",
      "identifier": "AB1234567",
      "issuedOn": "2019-01-01",
      "expiresOn": "2020-06-01"
    }
  ],
  "requirements": [
    {
      "field": "email"
    }
  ],
  "policies": [
    {
      "id": "P1",
      "stage": "onboarding",
      "name": "Identification",
      "kind": "document",
      "match": "passport"
    },
    {
      "id": "P2",
      "stage": "onboarding",
      "name": "Handbook",
      "kind": "policy"
    },
    {
      "id": "P3",
      "stage": "offboarding",
      "name": "Return equipment",
      "kind": "task"
    },
    {
      "id": "P4",
      "stage": "acknowledgement",
      "name": "Safety handbook",
      "kind": "policy",
      "effectiveOn": "2026-06-01"
    }
  ],
  "acknowledgements": [
    {
      "employeeId": "E-100",
      "policyId": "P4",
      "acknowledgedOn": "2026-01-01"
    }
  ],
  "roleText": "Title: Engineer\nDuty: Operate the press\nDuty: Train new operators\n",
  "employeeText": "Title: Engineer\nDuty: Operate the press\nDuty: Sweep the floor\n"
}
JSON