Back to portfolio Case Study · 01

jacobsmith.info / projects / geotms

Mining Tenements ASX Intelligence PostGIS FOSS

GeoTMS — Mining Tenement Intelligence Platform

A free and open-source mining intelligence platform ingesting live tenement data from WA and QLD, linking each tenement to its ASX-listed holder, scraping daily market announcements, and surfacing price-sensitive exploration events through automated daily digest reports.

37,503Tenements tracked
600+ASX tickers monitored
WA + QLDCoverage
DailyData refresh
GeoTMS interface — tenement map and company intelligence view

The problem

Government tenement registers for WA (DMIRS SLIP) and QLD are publicly accessible but siloed, inconsistently formatted, and carry no market context. Knowing who holds what ground — and what the market is saying about them — normally means stitching together state portals, ASX filings and company registers by hand.

GeoTMS ingests both registers, normalises them into a unified PostGIS schema, and cross-references every tenement holder against its ASX ticker — a live spatial picture of ground positions with the market narrative attached.

Beyond the spatial layer, the platform builds a structured company profile for each listed explorer: JORC resource estimates, director registers, subsidiary relationships, and a full history of ASX announcements scraped daily. An automated intelligence report flags price-sensitive events — new resource statements, tenement acquisitions or surrenders, director changes, and corporate restructures — as they appear each morning.

Data layers

WA Tenements (DMIRS SLIP WFS)Live OGC WFS feed — exploration licences, mining leases, prospecting licences. Paginated ingestion, MD5 change detection on every field.
QLD Tenements (GeoResGlobe)Queensland exploration permit and mining claim data normalised to the same schema as WA for unified querying.
ASX Ticker MappingEach tenement holder resolved to its ASX-listed entity. 600+ tickers currently tracked; subsidiary and related-entity relationships maintained as the corporate structure changes.
Daily ASX AnnouncementsAutomated scrape of ASX market announcements per tracked ticker. Full-text stored and classified by announcement type — JORC, director change, acquisition, quarterly report.
JORC Resource DatabaseStructured resource estimates extracted from announcements: commodity, category (Inferred / Indicated / Measured), tonnage, grade, and associated tenement.
Director & Subsidiary RegisterDirector appointments and resignations tracked per company. Subsidiary relationships updated automatically when companies are mentioned or transferred in announcements.

Intelligence & change tracking

  1. Tenement change detection — Every ingestion run hashes each tenement record and compares it against the previous state. New, changed, and removed tenements are flagged and archived, keeping a full queryable timeline of every tenement at any point in time.
  2. Corporate normalisation — Holder names from both state registers are fuzzy-matched and disambiguated against the ASX entity list. Subsidiary and parent relationships are resolved so tenements held by a subsidiary are attributed to the correct listed company.
  3. Announcement classification — Scraped ASX announcements are parsed and tagged by type. JORC statements trigger resource record creation; tenement-related announcements update spatial holdings; director notices update the personnel register.
  4. Daily intelligence digest — Each morning the platform generates a structured report per tracked ticker: new announcements, tenement status changes, resource estimate updates, director movements, and any price-sensitive flags. Designed to surface material exploration events before they require manual review.
  5. Subsidiary & corporate movement tracking — When a company is acquired, merges, or spins out a subsidiary, the platform detects the relationship from announcement text and migrates tenement attributions accordingly — maintaining a clean ownership chain over time.

Open-source stack

PostGIS / PostgreSQLSpatial database — tenements, company profiles, JORC records, announcement history
Python — geopandas, SQLAlchemy, GeoAlchemy2WFS ingestion, normalisation, change detection pipeline
FastAPI / asyncpgREST API serving tenement, company, and announcement data
Next.js / Tailwind CSSSearchable frontend — tenement browser, company profiles, daily digest view
Docker / PortainerContainerised deployment on self-hosted Linux infrastructure
Next case study Geological Prospectivity Mapping (MPM)