The challenge
Underground mines move. Walls and roofs shift over time, and small movements can be early signs of a hazard. Detecting them means scanning the same spaces again and again and comparing the results, in conditions that work against every sensor: dust, steam and low light.
Mining engineers needed to detect millimetric ground movement without being on site for every check. That created a hard problem at each stage. LiDAR scans of underground spaces are very large, the raw data is noisy, and the useful signal is a tiny change between scans taken at different times. The results then had to reach engineers in a form they could explore and share remotely, in a browser.
- Turn raw LiDAR capture into accurate 3D models of underground spaces
- Separate real movement from noise caused by dust, steam and low light
- Compare scans over time and alert on millimetric movement automatically
- Put very large point clouds in front of engineers remotely, in the browser
- Connect field devices underground to cloud dashboards reliably
What I built
I designed the platform around an edge-to-cloud split. Some work belongs close to the capture, where the devices are and connectivity underground is limited. The heavy processing belongs in the cloud, where it can scale. Getting that boundary right is what lets field devices feed cloud dashboards without the network becoming the bottleneck.
The processing pipelines take LiDAR capture and build high-precision 3D digital twins of the mine. Noise suppression removes the artefacts that dust, steam and low light leave in the data, so later stages compare geometry rather than interference. Convergence monitoring then runs across time-series scans of the same areas and raises an alert when it detects millimetric movement.
Heavy processing runs on FastAPI services in Python, with C++ for the performance-critical work and PyTorch-backed computer vision for the AI. The same AI capabilities support predictive maintenance and hazard detection, so the platform does more than record what has already happened. It helps engineers see what is likely to need attention next.
On the front end, React and Three.js stream georeferenced point clouds into the browser. Streaming matters because a full scan is far too large to download in one go before anything appears on screen. From the viewer, engineers can inspect the mine remotely, quantify volumes, extract structural features and share safety reports with colleagues.
Because this was a founding role, delivery mattered as much as the algorithms. I set up CI/CD automation and testing on a secure, scalable architecture, so new processing and product features could be deployed reliably.
Architecture and stack
- Capture & processing
- LiDAR · Python · FastAPI · C++
- AI
- PyTorch · Computer vision · Predictive maintenance · Hazard detection
- Visualisation
- React · Three.js · Georeferenced point-cloud streaming
- Delivery
- Edge-to-cloud architecture · CI/CD automation · Automated testing
Outcome
Point.Laz gives mining engineers remote inspection, volume quantification and automated movement alerts: safety reporting they can act on from anywhere. Instead of relying on site visits to spot change, engineers are alerted when convergence monitoring detects millimetric movement between scans, and can open the 3D model in a browser to see where it is happening.
Noise suppression is what makes those alerts usable. An alert has to reflect ground movement, not dust or steam in the scan, or engineers stop trusting it. And because reporting is collaborative, findings are shared across the team rather than staying with whoever ran the scan.
- Remote inspection of underground spaces through browser-based 3D
- Automated alerts on millimetric movement across time-series scans
- Volume quantification and structural feature extraction from the digital twin
- Collaborative safety reporting
- Reliable deployments through CI/CD automation and testing
Last updated 2026-10-03
