Hamza Fayz
Home/ Case Studies/ Governed HR Compliance Layer
Case · 08·Supporting·HR intelligence

From raw HR documents to a governed compliance layer.

Executive HR command view · contract risk monitor with 60 / 30 / 0-day windows · per-employee profile with linked source PDFs · insurance and social coverage · skills and qualifications extracted from source documents · governed review workflow. Not a folder structure. An intelligence layer HR can actually operate.

SurfaceExecutive + profile-level
SignalsContract · medical · work permit
LinkageProfile ↔ source document
ReviewGoverned · owner-routed
HR command view · snapshot Compliance · live
Workforce health Today
Headcount45
Active38
At risk7
Iqama ok31
Expiring11
Expired3
Contract risk · top 4 days-to-expiry
EMP-5037Site Engineer · Aurora-2
EMP-5012QS · Dune4
EMP-5044Accountant · Delta23
EMP-5051Foreman · Mesa47
Document types7Contract · CV · iqama · medical · work permit · certs · visa
Per-employee profileUnifiedAll docs linked to emp_id
Compliance signals62From workforce sample
Windows tracked60 / 30 / 0 dPer category
Owner routing4 rolesHR Gov · Benefits · Talent · PM
Profile-level storyboard

One employee. Every document. Every signal.

The profile pulls the contract PDF, iqama, work permit, medical insurance, social insurance, skills, certificates, and current project assignment into one governed view.

Employee profile · EMP-5037 Active
SE
Employee · EMP-5037 Site Engineer · Aurora · 28 months on payroll Nationality EG · Location KSA · Riyadh · 2 dependents
Coverage · insurance + social Per category
MedicalValid
DentalValid
FamilyRenew 30d
GOSIActive
Dependents2
SpouseCovered
ChildrenCovered
GOSI % base2.0%
Last renewal2025-09
Next actionIqama 30d
Why this mattered

HR lived in folders. The business needed a signal.

Documents existed. Dates existed. Owners existed. But the combination — contract + iqama + insurance + skills + project assignment + compliance window — never sat in one place. So renewal windows were discovered late, fines became routine, and HR couldn't answer the questions leadership actually asked.

Operational problem

Documents ≠ intelligence. The HR layer was a shared drive.

  • Contracts, iqamas, medical cards, and work permits lived in folders named by year, then by nationality, then by employee — three clicks minimum to find one document.
  • Expiry dates were tracked in a spreadsheet separate from the documents themselves. The two drifted. Renewal was reactive, not scheduled.
  • "Who is available with a valid certification and relevant project experience?" required reading CVs one at a time.
  • Compliance exceptions (expired iqama, lapsed medical, contract ending) surfaced when someone was blocked at a checkpoint — not before.
System & data gap

No linked profile. No signal layer. No governed review.

  • No unified profile record keyed by emp_id linking every document, date, and status.
  • No structured extraction — skills, certificates, roles, expiry dates lived inside PDFs, never in queryable fields.
  • No scored compliance signal — "at risk" was a judgement, not a number.
  • No owner-routed review workflow — exceptions had no defined escalation path.
What I built

A governed HR intelligence layer — documents become signals.

Architecture · HR intelligence pipeline Docs → extract → link → signal → command view
01Source documents
02Structured extraction
03Profile link
04Compliance signal
05Executive command view
Everything anchored to emp_id
Docs · PDF
Dates · fields
Status · scored
Dashboard
Logic & control

Three control patterns make HR data defensible.

Pattern 01 · extraction with source ref

Every extracted field points back to the document

Skills, certificates, contract dates, visa numbers — all stored with their source_ref (document ID + page + region). HR answers become auditable, not opinion.

profile.field = { value, source_doc, page, confidence }
Spreadsheet
Typed byadmin
Auditableno
Anchored
Typed byextractor
Auditableyes
Pattern 02 · compliance signal

Every renewal window is a scored alert

Iqama, medical, work permit, contract — each category produces a signal at 60 / 30 / 0 days with owner and required action.

alert = fn(category, days_to_expiry, dependents) · owner-scoped
Folder review
Discoveredat block
Costfines · outage
Signal
Discovered60d ahead
Costroutine renewal
Pattern 03 · governed review

Exceptions route to the right HR function

Iqama / work permit → HR Gov. Relations. Medical → HR Benefits. Contract → HR Talent. Project conflict → PM. No "HR inbox" that absorbs everything.

owner = map[category].owner
One inbox
Triage timedays
SLAdrifts
Owner-routed
Triage timesame-day
SLAtracked
Traceability

An HR answer walks back to a page in a document.

If leadership asks "is EMP-5037 able to work next week?" the answer traces the whole chain.

Contract PDF · v3 End date extracted Iqama PDF · expiring 30d Medical · valid Status: at-risk · action required
CV PDF Skills extracted · 6 Certificates · 3 valid Project history · indexed Match · Site Engineer vacancy
Outcomes as signals

What shifted in how HR operates.

"Who can work next week?"Queryableinstead of read-a-CV
Compliance windows60d signalnot day-of discovery
Document linkageOne profileevery PDF, every date
Review routingOwner-scopedno catch-all inbox
Artifacts

Proof artifacts — live and planned.

Excel · live

Compliance alerts sheet

62 real compliance alerts (iqama · medical · work permit · contract) from the workforce-cost workbook — scored risk, days-to-action, owner routing. Same data model that feeds the dashboard above.

Download Excel → Available · open Compliance_Alerts sheet
Dashboard · on-page

HR command view

Workforce health KPIs + contract-risk top list + per-employee profile modal + insurance coverage grid — shown above as a visual storyboard.

Visual on-page
Profile sample · planned

Employee profile record (redacted)

Full structured profile JSON/XLSX sample — every extracted field with its source_ref, confidence, and owner. Production representation is a Power BI model backed by the HR document store.

Phase 5