MapMyMine
Lead Technical Consultant & Full-Stack Engineer
A mining rehabilitation and operational intelligence platform. I am the primary technical person on the estate: spatial model, NestJS API, both Angular applications, the Python services, enterprise authentication and infrastructure, across a multi-repository system.
mapmymine.com(opens in new tab)
The problem
Queensland has required a Progressive Rehabilitation and Closure Plan for resource activities since November 2019, and a site has to keep a defensible record of disturbance and rehabilitation against the granted schedule. The source material is a mix of survey shapefiles, aerial rasters, coded activity dictionaries and the schedule itself: a final site design, post-mining land uses, non-use management areas, and a table of time-based milestones. The obligations are spatial. The artefact carrying them is prose.
That same spatial truth then has to satisfy several separate regulatory processes, each with its own approved form and schema: the annual return, estimated rehabilitation cost, the plan of operations, and the PRCP. Disturbance and rehabilitation polygons are submitted as shapefiles conforming to the department’s master schema, with mandatory coded fields and a prescribed naming convention. The annual return asks for lifetime totals, the current twelve months, and the twelve months proposed next, so last year’s position has to still be reproducible this year.
Those pieces do not compose themselves into something a site can tick, report or audit. MapMyMine’s job is to make one spatial record, Single Point of Truth (SPoT), and hang the compliance workflow off it. The organisation is the identity and SSO boundary; the project is the GIS and compliance tenant.
Architecture
Spatial system
Custom OpenLayers tooling rather than a wrapped GIS widget: lazy-loaded map layers, coordinate reference handling the user confirms before ingest instead of a silent guess, geometry operations carried out in projected metres, and a dissolve that keeps actual and proposed disturbance separable. ECW and TIFF survey rasters are converted and served as map tilesets.


Matching shapefile language to the dictionary
Upload Mine Data takes a contractor shapefile and the columns carrying its activity labels, then uses a local sentence-transformer service to propose Disturbance and Rehabilitation Activity codes from the project dictionary. Matches are suggestions. A person confirms or overrides them before anything is written to the editable SPoT layer. The same service later proposes PMLU codes against the regulator catalogue, and those are locked by a person before they count as compliance truth.

Reading a granted PRCP schedule
A separate Python service turns a granted Queensland PRCP schedule PDF into a typed payload: rehabilitation areas, milestones, a nested criteria tree, PMLU and timeline. That is a jurisdiction-scoped pipeline, not a generic “PDF extractor”.
The governing principle matters more than the mechanics. The cheapest reliable reading is attempted before a model is asked for anything, and deterministic code, not the model, owns verification and the final verdict. Legal wording stays verbatim, invented identifiers are stripped, and a failed check stops the product seeding unreviewed compliance data. Collector stays closed until a person accepts the reading.

Reports the site is audited against
Once SPoT is locked and the schedule is in, the product has to produce the tables a Queensland annual return and financial provisioning process actually use. The Financial Provisioning Scheme report below is one of those: operational domains per rehab area, mining method, disturbed / available / completed land, and outstanding rehab cost.

Enterprise identity
Microsoft Entra workforce tenants, via OIDC authorisation code with PKCE. An organisation can use the platform-managed registration or bring its own. Work-email domains are claimed and proven before single sign-on can be enforced, and SCIM 2.0 handles user provisioning. Secrets and provisioning tokens are never displayed twice.

What it changes
Done conventionally, this is desktop work: CAD and GIS packages, a cartographer, and a set of deliverables assembled again for each submission and each site. The product owner spent three decades doing exactly that for Queensland mines, which is why the domain model is organised around the submission a site is assessed on rather than around a generic map.
Each part of the system removes one of those manual steps. A locked SPoT version is what makes a previous year’s position reproducible. Dictionary matching is what gets contractor labels into the regulator’s coded fields. Reading the granted schedule is what turns milestone prose into criteria a site can be measured against. The reports are what falls out once those three hold, rather than a separate exercise in reconciliation.
It is in production with Australian mining organisations, and the path from a survey shapefile to submitted figures now runs inside one system. I would not put a figure on the time that saves, but it is substantial.
What I actually own
- PostGIS spatial model and geometry operations
- OpenLayers map interaction and layer pipeline
- SPoT versioning, lock, dissolve and export
- Upload Mine Data ingest and dictionary matching
- QLD PRCP extraction service and criteria review gate
- Compliance reports, including FPS
- Microsoft Entra OIDC, domain proof and SCIM
- Raster conversion and tile delivery
- NestJS API, both Angular apps, infrastructure