Have a password?

Unlocks the client-named version of every project.

Job Title-to-Medical Surveillance

Occupational health · UAE energy group · 204 roles

Turned an occupational-health team's spreadsheets into a one-search dashboard: any role, its required examinations, its hazards and their risk ratings.

Re-enacted role view: summary, surveillance factors and the activities-and-exposures table

Context

The occupational health risk assessment existed and was thorough — a surveillance sheet per role, a factor catalogue, and one exposure workbook per business unit. It was also unusable at the moment it mattered: a doctor, an HSE officer or HR asking what a specific role needs had to know which of a dozen sheets to open.

  • Surveillance factors, examinations and exposures were split across separate workbooks with no shared key
  • Whether a role counted as office or field staff was decided by whoever read the sheet
  • A new job title had no profile until someone assessed it from scratch
  • The same question — what does this role need? — was answered differently depending on who answered it

Outcome

204job titles, one search

  • A role's surveillance requirements went from several sheets and a specialist to one search for anyone
  • Office/field classification became a rule instead of a judgement
  • PLACEHOLDER — add a measured figure here (e.g. lookups per week, or time per profile before vs after)
Re-enacted: search a role, read its surveillance profile, open a factor for its tests — the dashboard's own flow, in the site's palette

What we built

First the join. Every workbook is read in the browser as-is — no migration, no new database — and matched on job title and business unit, so the surveillance sheet, the factor definitions and the exposure rows become one record per role. Office-or-field is decided by rule from the title and the exposures, not by eye.

Then the lookup: a searchable list of every onsite title across the group's business units. Choosing one opens the role's summary, its HR mapping, its active surveillance factors as chips, the health-examination table (test, frequency, pre-employment versus routine, field-specific) and the activity-and-exposure table with a risk rating on every row and High/Medium/Low counts at the top.

Then a second organisation. The same reader takes a different pair of workbooks, so a government dataset was added with a toggle rather than a second build.

Then intake. For a title that has no profile, an admin page finds the closest existing roles by fuzzy match and asks a language model to draft the full surveillance profile — constrained to factors that exist in the catalogue, with the best local match as the fallback if the model fails. The draft is editable before it is saved.

What stuck

  • The workbooks stayed the source of truth — the team keeps editing Excel, and the dashboard reads it
  • One answer per role, whoever asks
  • New roles start from a draft grounded in the existing rules rather than from a blank sheet

Snapshot

Client profile
Occupational health function of a UAE energy group; a second government dataset added
Engagement
Catalyst — scoped build
Timeline
About two weeks, April 2026
Scale
204 job titles, 11 business units, ~2,800 activity-and-exposure rows, 19 surveillance factors
Scope
Workbook ingestion, role lookup, exposure and examination tables, AI-assisted intake for new roles
← All work