Australian Defence Force
Australian Defence Force
Competency platform at the centre of a Defence training initiative, built on public standards. Search and learning analytics across the framework.
Off-limits
service topology, deployment architecture, schema versions in use, graph internals and traversal operations, xAPI LRS internals and extension choices, how Keycloak was configured, how Azure AD federation worked, internal Defence processes, internal service names, business-rule specifics, contract terms
- Role
- Principal Engineer
- Period
- Dec 2024 – Jul 2025
- Engagement
- embedded
- Tech
- Vue 3 / Nuxt / Elasticsearch / Keycloak
Seven months as principal engineer on an ADF training platform. Baseline cleared. The brief was tracking demonstration, not completion. That distinction shaped almost every other decision.
Standards over custom
The data layer speaks public standards from IMS Global: CASS for competency modelling, xAPI for the analytics. Picking standards meant the platform spoke a public language from day one rather than a bespoke vocabulary that would need a translation layer at every integration point.
The internals of how the standards are applied stay private.
What it does
Find a person by competency, or a competency by person. Elasticsearch under search, the graph layer in front. Relevance had to absorb the framework's depth, where what mattered for someone's progression wasn't always what matched the keyword.
xAPI gives you the demonstration, not just completion. For Defence, completion was never the question. The question was whether the person could do the thing, and whether you could prove it later to someone who wasn't in the room.
Identity
Keycloak federated to Azure AD so personnel signed in with the credentials they already had. The configuration is the part I can't talk about. Standard Keycloak shape on the public side; the contract takes over from there.
Outcome
Owned the build end to end. Real-database integration tests from day one. Stayed inside the lines of what adjacent teams owned.
Seven months. Handed over running.
- Role
- Principal Engineer
- Period
- Dec 2024 – Jul 2025
- Engagement
- embedded
- Tech
- Vue 3 / Nuxt / Elasticsearch / Keycloak / Azure AD / xAPI / CASS (IMS Global)