Skip to content
← Back to projects

Case study · Government analytics

CBS IntelligenceRegulatory analytics from the ground up

At South Australia's consumer and business regulator, I built the Prevention Team's first analytics capability. It brought ABS, SA Health, ACCC and Data SA figures together into dashboards, reports and maps that senior management and the Minister's office used.

ASO4 Intelligence & Coordination Officer, January 2025 to March 2026

Try the concept demo ↓

This is my own write-up. It repeats only what my public career summary already says, and it shares no internal data, reports or briefing material. The demo further down is a concept illustration with synthetic data. It is not the system I worked on, and it is not CBS data.

The problem

Consumer and Business Services (CBS) is South Australia's consumer and business regulator. It covers tobacco and vaping, building work, product safety and consumer law. I joined the Prevention Team in Compliance and Enforcement in January 2025, in my first full-time role, and the team had no analytics capability of its own.

A regulator cannot inspect everywhere at once, so it has to choose. The 1,500+ licensed sites in the tobacco and e-cigarette schedule had to be weighed against legislation, resourcing, strategy and politics. The reasons also had to hold up when senior management or the Minister's office asked for them, often within 24 to 72 hours.

What I built

The work grew into four parts, and each one made the next easier to trust.

  1. 1

    A risk-based schedule

    I designed the inspection scheduling framework for Tobacco and E-Cigarette Products Act compliance across 1,500+ licensed sites, and worked through the trade-offs with the Senior Management Team.

  2. 2

    Data that lines up

    I built extraction and validation workflows across 6+ sources, including ABS, SA Health, ACCC and Data SA. One Python check compared 3,000+ raw files against Salesforce records.

  3. 3

    Analysis people can read

    I analysed 400+ inspections with time series, clustering and multivariate methods, wrote the quarterly Compliance and Enforcement report, and built Power BI dashboards and GIS maps for senior management.

  4. 4

    Answers on a deadline

    I answered 24+ urgent requests for ministerial briefings and Cabinet within 24 to 72 hours, and wrote the SOPs that keep each method repeatable.

The impact

When I moved on in March 2026, the methods were written down as SOPs, so the team could keep producing the same numbers the same way. These are the figures from my career summary.

licensed sites in the tobacco and e-cigarette inspection schedule
1,500+
compliance inspections analysed
400+
raw files validated in Python against Salesforce records
3,000+
ministerial and Cabinet requests answered within 24 to 72 hours
24+
  • Data-sharing MOUs with SAPOL, the Illicit Tobacco and E-cigarette Commissioner and federal regulators, a first for the team.
  • Dashboards and GIS maps that senior management and the Minister's office used for reporting.
  • An intelligence product, developed with colleagues, that detected fraudulent licence applications through document metadata and applicant network mapping.

How it was built

Role
ASO4 Intelligence & Coordination Officer
Team
Prevention Team, Compliance & Enforcement
Period
Jan 2025 to Mar 2026
Read by
Senior management and the Minister's office
  • Power BI
  • DAX
  • Power Query
  • Python
  • SQL Server
  • ArcGIS
  • Time series
  • Regression
  • Clustering
  • ABS API
  • Data SA

Most of the early work was plumbing. Before any chart could be trusted, a site had to mean the same thing in every source, so I wrote the extraction and validation steps first and checked the counts against the system of record.

The analysis itself used plain, explainable methods. Time series showed the trends, clustering grouped similar sites, and regression put a number on a relationship when one was needed. Power BI and DAX carried the dashboards, and ArcGIS carried the maps.

I wrote the methods up as SOPs, so the next urgent request could be answered the same way by whoever picked it up.

Concept demo: a regulatory map in miniature

Concept illustration with synthetic data. The 24 areas, their populations, IRSD scores and counts are generated in your browser from a fixed seed. They are not real councils, not CBS data and not the system I worked on at CBS.

A public-data version of this idea would join ABS SEIFA scores and adult population by local government area with published counts of licensed gaming venues and machines. SEIFA's IRSD is an index where a lower score means more disadvantage. The demo walks the same steps with made-up areas. Start with raw counts, switch to a rate per 10,000 adults, then look at how far each area sits from the trend line.

Synthetic data · seed 2025

Measure
Shade the map by

Rates in small areas jump around, because one venue more or less moves them a lot.

Each square is one area, the same size whatever its population, and the layout is a sketch rather than a real map. Use the arrow keys to move between areas.

LowerHigher

0 … 24

Red outline and ▲: more than 1.5 standard deviations above the trend line

Selected area

E1East 1

Adults
24,100
IRSD score
913
Venues
12
Machines
236
Venues per 10,000 adults
5.0
Trend line predicts
3.0
Gap from trend
+2.2 SD

Above what its IRSD score predicts. Worth a closer look, but not a finding.

Rate against disadvantage

Venues per 10,000 adults

Rate against disadvantageScatter plot of 24 areas in the fit, venues per 10,000 adults against IRSD score, with a straight trend line. In this sample, each 100-point drop in IRSD goes with 1.1 more venues per 10,000 adults (95% interval 0.4 to 1.8). The line explains 33% of the variation between areas. The selected area is East 1.0246850900950100010501100E1S3

IRSD score (lower means more disadvantaged)

Areas in the fit
24
Per 100-point IRSD drop
+1.1
R²
0.33
Above the trend
2

In this sample, each 100-point drop in IRSD goes with 1.1 more venues per 10,000 adults (95% interval 0.4 to 1.8). The line explains 33% of the variation between areas.

A trend line shows association, not cause. Disadvantage, venue numbers and population tend to move together, and a real analysis would test other explanations before anyone acted on it.

Same data, three questions

Highest count

Highest rate

Furthest above trend

Counts mostly follow population. Rates and the gap from trend can point somewhere else, so the question you ask shapes the answer. Choose an area to select it on the map.

Show the synthetic table
All 24 synthetic areas for the chosen measure
AreaAdultsIRSDCountPer 10kTrendGap (SD)
R1 · Regional 112,000101610.81.8−1.1
N1 · North 152,800994142.72.1+0.6
N2 · North 219,900103231.51.6−0.1
R2 · Regional 215,60098931.92.1−0.2
W1 · West 129,800102182.71.8+1.0
N3 · North 3102,6001040161.61.6+0.0
N4 · North 490,0001052212.31.4+1.0
N5 · North 564,900900132.03.1−1.2
W2 · West 286,9001065141.61.3+0.4
C1 · Central 166,600897243.63.2+0.5
C2 · Central 293,200999171.82.0−0.2
E1 · East 124,100913125.03.0+2.2
W3 · West 376,000969152.02.3−0.4
C3 · Central 355,700910183.23.0+0.2
C4 · Central 4112,0001041121.11.5−0.5
E2 · East 272,400920212.92.9+0.0
E3 · East 345,40092361.32.9−1.7
S1 · South 150,700975112.22.3−0.1
S2 · South 2116,8001059191.61.3+0.3
E4 · East 466,100103860.91.6−0.7
R3 · Regional 315,90094231.92.7−0.8
S3 · South 341,900990174.12.1+2.1
S4 · South 430,700102562.01.7+0.3
R4 · Regional 43,700105800.01.3−1.5

If gambling is affecting you or someone close to you, the National Gambling Helpline is free and confidential on 1800 858 858.

What I learned

The analysis was rarely the slow part. Agreeing on what a number meant, checking that two systems counted the same thing and writing the method down took most of the time. That work paid back every time a request arrived with a 24-hour deadline.

I also learned to show the denominator. A raw count usually tracks population, so a map of counts mostly shows where people live. A rate, and the gap from what you would expect, start to say something about risk. The demo above is a small version of that lesson.

The role itself, with the same figures, is on my career page.