All projects

Occupational Health Analytics Dashboard

Iran Fava Gostaresh · IKCO Group

An AI-assisted analytics platform visualising predictive occupational health trends across an industrial workforce, built on Highcharts.

Role
Senior Frontend Engineer
Period
2024
Type
Private

Overview

A dashboard for occupational health teams at an industrial group, turning workforce health records and model output into something a non-analyst can act on: which sites and roles are trending toward risk, and how confident the prediction is.

The problem

Predictive output is easy to visualise badly. A chart that plots a forecast with the same weight as a measurement invites people to treat a model’s guess as a fact — and in an occupational health context that produces decisions about real people. The audience is health and safety staff, not data scientists, so the interface had to carry uncertainty visibly without turning every chart into a statistics lesson. The data also arrives at mixed granularity, which makes naive aggregation quietly misleading.

Approach

  • Separated measured history from predicted range visually — solid versus banded — so a forecast never reads as a recorded value.
  • Put the confidence interval in the chart itself rather than a footnote, so the width of the band is the first thing seen.
  • Standardised on a small set of chart types matched to the question being asked, instead of offering every Highcharts type and letting dashboards drift.
  • Made aggregation level explicit in every view, so a chart states what a point represents rather than leaving it inferable.
  • Built the chart layer as configured wrappers over Highcharts, so axis, tooltip and colour behaviour stay consistent across the dashboard.

What shipped

  • Predictive trend visualisation with explicit confidence ranges.
  • Consistent chart layer built over Highcharts.
  • Designed for health and safety staff rather than analysts.

Outcome

Health teams read the dashboard directly instead of requesting one-off reports, and the visual separation of measured and predicted values keeps model output being treated as what it is.

More work