BLACK OPS SOLUTIONS · IT
Graduate IT Interview PackAU · 2026

Australia · 2026 · graduate level

Four graduate IT roles, end to end

Four graduate roles, each with the job ad a candidate would apply to, the questions a panel would actually ask, and a worked example CV with notes on why it lands. Everything here is written for the Australian market in 2026. Every company and candidate is fictional.

4roles
84questions with model answers
4annotated CVs
20questions to ask them

The four roles

RoleIn one lineBase salary in this packFictional employer
Software DeveloperShips features end to end on a customer-facing web platform.$78,000 baseMeridian Freight & Logistics
DevOps / Platform EngineerBuilds and runs the infrastructure other engineers deploy onto.$82,000 baseKestrel Health Systems
AI / ML EngineerBuilds language-model features that have to work on real, messy inputs.$88,000 baseCorella AI
Data Engineer / AnalystTurns raw operational data into numbers the business will actually act on.$76,000 baseYarrow Energy Retail

How to use this pack

If you are preparing for interviews

Read the job description first and highlight the phrases that describe you. Then work through the questions with the answers hidden - the Hide all answers control at the top of each question set exists for exactly this. Say your answer out loud before revealing what a strong one covers. Reading an answer and thinking yes, obviously is not the same as producing it under pressure.

If you are running mock interviews

Give the candidate the job description in advance, nothing else. Pick six to eight questions across the categories rather than working top to bottom - real panels mix behavioural and technical. The red flag line under each answer is what an interviewer is actually listening for and is usually the more useful half.

If you are training a hiring panel

Use the question banks as a structured guide so every candidate is scored against the same thing. The example CVs work well as calibration exercises: hand a panel one CV with the annotations removed and ask what they would probe.

If you are writing your own CV

Do not copy these. Copy the structure, the density of numbers, and the honesty of the skills lists. The annotations beside each CV explain the reasoning so you can apply it to your own material.

What an Australian graduate process looks like

Not every employer runs every stage, but they run them in roughly this order. Large graduate programs add an assessment centre; startups often compress the whole thing into two conversations and an exercise.

  1. 1

    Application 1 - 2 hours

    CV plus short written questions. Cover letters are on the way out at graduate level in Australia; three targeted questions are more common now.

  2. 2

    Online assessment 45 - 90 min

    A coding exercise, SQL screen, psychometric test or game-based assessment. Usually automated and usually the biggest cut.

  3. 3

    Recruiter screen 20 - 30 min

    Motivation, logistics, salary expectations, working rights. Short and conversational, but people do fail it by being vague about why they applied.

  4. 4

    Technical interview 45 - 75 min

    The core stage. A walkthrough of your exercise plus fundamentals. Increasingly conversational rather than whiteboard algorithms.

  5. 5

    Values or team interview 30 - 45 min

    Collaboration, handling disagreement, how you behave when you are wrong. This is a real stage, not a formality.

  6. 6

    Assessment centre Half to full day

    Common at large employers and grad programs: group exercise, case presentation, and back-to-back interviews in one day.

  7. 7

    Offer 2 - 10 days

    Verbal first, then written. Reference checks, and sometimes a police check depending on industry.

Answering behavioural questions: STAR

Every behavioural question in this pack can be answered with this structure. The worked example runs through all four parts of a single story.

S
Situation

Two sentences maximum. Where, when, who else. Most candidates spend half their answer here - do not.

In my final year group project, four of us had six weeks to build a booking system.

T
Task

What you specifically were responsible for. Make it clear this is your work, not the team's.

I owned the API and the database schema.

A
Action

The bulk of the answer. What you did, what you decided, why you decided it that way.

Two weeks in, our schema could not represent a booking spanning two days. I mapped the three options, costed each in hours, and proposed the migration because the alternative would have broken our reporting requirement. I wrote the migration and a rollback, and pair-tested it with a teammate.

R
Result

What actually happened, with a number if you have one, and what you learned.

We lost a day rather than a week, the feature shipped, and I now sketch the data model before writing endpoints - it has saved me twice since.

Questions you will get in all four roles

Tell me about yourself.

Ninety seconds, structured as: where you are now, one or two things you have done that are relevant, and why you are sitting here. Not a chronological life history. Practise it out loud until it stops sounding rehearsed.

Why do you want to work here?

Name something specific about the company or product that you could not say about a competitor. If you cannot find anything, spend twenty minutes on their engineering blog, their app, or their annual report before the interview.

What is your greatest weakness?

Pick a real one you are actively working on, and say what you are doing about it. Not a strength in disguise. Interviewers have heard perfectionist several thousand times.

Tell me about a time you disagreed with someone.

The disagreement matters less than how it ended. Show that you argued the point, listened, and either changed your mind or accepted the decision gracefully.

What questions do you have for us?

Always have three, and never ask something answerable from the careers page. Each role in this pack has five worth stealing.

What are your salary expectations?

Give a range based on published graduate benchmarks and say it is negotiable for the right role. It is fine to ask what band the role sits in - most graduate programs have a fixed one anyway.

Graduate salary benchmarks

RoleBase, excl. superNotes
Software Developer / Engineer$70,000 - $85,000Higher at large tech employers and investment banks; lower at agencies and small consultancies.
DevOps / Cloud / Platform$75,000 - $90,000Few true graduate roles exist - many enter via support or a developer program and move across.
AI / Machine Learning$80,000 - $95,000The widest spread of the four. Strongly skewed by whether the employer is doing applied product work or research.
Data Engineer / Analyst$70,000 - $88,000Analyst roles sit lower, engineering roles higher; the gap widens after two years.
Cyber Security$75,000 - $90,000Included for comparison - frequently the highest-paying graduate entry point outside AI.
IT Support / Service Desk$55,000 - $70,000A legitimate entry route into platform and infrastructure work, and often the fastest way in.

Indicative Australian graduate base salaries for 2026, excluding superannuation (currently 12%). Ranges vary considerably by employer size, city and sector - a big-four bank, a mining company and a 20-person startup pay very differently for the same title. Treat these as a sanity check for a mock JD, not as a benchmark to advertise against without your own market data.

Preparation checklist

Two weeks out

  • Rewrite your CV against the specific job description, not generically
  • Build or finish one project you can talk about for ten minutes
  • Write and rehearse your ninety-second introduction
  • Prepare six STAR stories that can be reshaped to fit most behavioural questions

One week out

  • Work through the technical question bank for your role with answers hidden
  • Do one timed practice exercise under real conditions - no pausing, no searching
  • Research the company: product, recent news, engineering blog, who you will meet
  • Write your three questions for them

The day before

  • Reread your own CV and be ready to defend every line on it
  • Reread your submitted code or case exercise
  • Check the logistics - link, address, parking, who to ask for
  • Stop studying by early evening. Cramming a new framework the night before helps nobody

On the day

  • Ask a clarifying question before answering anything open-ended
  • Think out loud - silence is scored worse than a wrong turn you explain
  • If you do not know, say so and then say how you would find out
  • Take notes. It is not rude and it makes your closing questions better

Before you use any of this

All companies, people, contact details and results in this pack are invented for practice purposes. Meridian Freight & Logistics, Kestrel Health Systems, Corella AI, Yarrow Energy Retail and every employer named inside a CV do not exist, and any resemblance to a real organisation is coincidental. The example CVs describe fictional candidates and must not be submitted as anyone's own. Salary ranges are indicative and drawn from public Australian salary guidance in 2026 - verify against current market data before using them in a real job advertisement.

Software Developer · graduate level · Australia

Graduate Software Developer

Ships features end to end on a customer-facing web platform.

Job description · fictional employer

Graduate Software Developer

Meridian Freight & Logistics

Location
Brisbane CBD - hybrid, 3 days in office
Employment type
Full-time, permanent - 12-month structured graduate program
Salary
$78,000 base + 12% superannuation
Reports to
Engineering Team Lead, Customer Platforms
Intake
February 2027 - applications close 30 September 2026

About us

Meridian Freight & Logistics moves about 40,000 pallets a week between depots in every mainland state. For twenty years our software was bought off the shelf and bent into shape. Since 2023 we have been building it ourselves, and the six squads in our Brisbane engineering group now own everything a customer touches.

The team you would join

You would join Customer Platforms: six engineers, a product manager, a designer and a QA analyst. The squad owns the booking portal and the public tracking API used by roughly 12,000 business customers, from one-truck operators to national retailers.

What you will do

  • Ship your first change to production in your first three weeks, paired with a senior engineer
  • Build and maintain features across a React front end and a C# / .NET REST API
  • Write unit and integration tests as part of every change, not as a follow-up ticket
  • Take part in code review - both receiving it and giving it
  • Help triage and fix production defects on a rostered support roster (business hours only in your first year)
  • Keep runbooks and API documentation current as you change the things they describe
  • Contribute to sprint planning, refinement and retrospectives as a full member of the squad
  • Spend one six-week rotation with the Platform or Data squad in the second half of the program

What we are looking for

  • A completed or in-progress bachelor degree in software engineering, computer science, IT or a related discipline, graduating between November 2025 and December 2026
  • Working knowledge of at least one statically typed or object-oriented language - C#, Java, TypeScript or Go
  • Enough SQL to write a join and explain what it returns
  • Familiarity with Git and branch-based workflows
  • Something we can read - a university project, hackathon entry, open-source contribution or personal project, with the code available to look at
  • Clear written and verbal communication. You will be asked to explain a technical decision to someone who is not an engineer
  • Full Australian working rights for the duration of the program

Nice to have

  • Exposure to React, Angular or Vue
  • Any cloud exposure - Azure preferred, AWS or GCP equally welcome
  • Experience with a CI pipeline, even a personal one
  • A part-time job, internship or vacation program in any industry
  • Involvement in a club, tutoring, volunteering or a team sport - we care that you can work alongside people

Our stack

C# / .NET 8ASP.NET CoreReact + TypeScriptPostgreSQLAzure App ServiceAzure Service BusGitHub ActionsTerraformDatadogxUnit / Playwright

What the program gives you

  • A named buddy for your first month and a mentor for the full twelve months
  • $2,000 annual learning budget and one Friday a fortnight for self-directed learning
  • Paid Azure certification with study leave
  • Promotion to Software Developer (Level 2) after twelve months, subject to review
  • Flexible start and finish times, and a genuine 38-hour week

How the process runs

  1. 1

    Application

    CV plus three short written questions. No cover letter.

  2. 2

    Coding exercise

    Take-home, 60 minutes, language of your choice. We tell you what we are assessing before you start.

  3. 3

    Talent screen

    30-minute video call - motivation, logistics, working rights.

  4. 4

    Technical interview

    60 minutes - walkthrough of your exercise plus fundamentals. No whiteboard algorithms.

  5. 5

    Team interview

    45 minutes with two squad members - collaboration, code review, how you handle being wrong.

  6. 6

    Offer

    Verbal within 48 hours of the final interview.

We hire graduates who are curious and honest about what they do not know yet. If you meet most of the essential criteria and none of the desirable ones, apply anyway. Reasonable adjustments are available at any stage of the process - tell your talent partner what you need.

Interview questions · 21 questions with model answers

Graduate Software Developer

Answers are hidden by default so you can attempt each one first.

Motivation and behavioural

Asked in the talent screen and the team interview. Listen for specifics, not enthusiasm.

  1. Walk me through a project you built where you had to make a technical decision you were not sure about.

    Show what a strong answer coversHide answer

    A strong answer

    • Names the actual decision, not just the project - which database, which pattern, whether to build or borrow
    • Lists the alternatives that were genuinely considered
    • Identifies the constraint that settled it: time, team skill, marks, hosting cost
    • Says what they would do differently now, without being asked

    Red flagDescribes the project for four minutes and never gets to a decision.

  2. Tell me about a time your code broke something. What happened and what did you do?

    Show what a strong answer coversHide answer

    A strong answer

    • Owns it plainly, with no hedging about who else was involved
    • Describes how they diagnosed it - logs, a bisect, a reproduction, asking someone
    • Separates the fix from the prevention: a test, a validation, a check in the pipeline
    • Treats it as ordinary rather than shameful

    Red flagClaims it has never happened, or blames a teammate, the tutor or the tooling.

  3. Describe a group assignment where someone was not pulling their weight. What did you do?

    Show what a strong answer coversHide answer

    A strong answer

    • Went to the person directly before escalating
    • Framed it around the work and the deadline rather than the person's character
    • Escalated to a tutor or lecturer only when the direct approach had actually failed
    • The team still delivered, and they can say what they gave up to make that happen

    Red flagSilently did all the work and is still angry about it - that becomes a code review problem later.

  4. What is something technical you taught yourself in the last six months, and how did you go about it?

    Show what a strong answer coversHide answer

    A strong answer

    • Names a specific thing, not a category
    • Can point at something they built or broke while learning it
    • Describes a misconception they had and how they corrected it
    • Chose it for a reason they can articulate

    Red flagLists a course they enrolled in with nothing to show for it.

  5. Why this role, in freight, rather than a graduate program at a large consultancy?

    Show what a strong answer coversHide answer

    A strong answer

    • Has actually looked at what the company does and can reference the product or the domain
    • Has a view on how they want to learn - depth in one product versus breadth across clients
    • Is honest that they have applied elsewhere too

    Red flagAny answer that would be equally true of every employer in Australia.

Core fundamentals

Calibration questions. A graduate is not expected to nail every one - watch how they reason when they do not know.

  1. What is the difference between an array or list and a dictionary or hash map, and when would you reach for each?

    Show what a strong answer coversHide answer

    A strong answer

    • Lookup by index or position versus lookup by key
    • Roughly O(1) average key lookup for a hash map versus O(n) scanning a list
    • Gives a concrete case: counting occurrences, caching results, joining two datasets in memory
    • Bonus: mentions that hash map ordering is not guaranteed in every language

    Red flagRecites Big-O notation but cannot give an example of when they used either.

  2. You type a URL into a browser and press enter. What happens?

    Show what a strong answer coversHide answer

    A strong answer

    • DNS resolution, TCP connection, TLS handshake, HTTP request, server response, browser render
    • Knows where their own code sits in that chain
    • Mentions at least one of: caching, load balancers, CDNs, cookies
    • Adjusts the depth as you probe rather than reciting a memorised list

    Red flagCannot get past 'it loads the website' even with prompting.

  3. What is the difference between an INNER JOIN and a LEFT JOIN? Give me a case where the choice changes the answer.

    Show what a strong answer coversHide answer

    A strong answer

    • Inner keeps only matching rows; left keeps every row from the left table with nulls where there is no match
    • Gives a real example - customers with no bookings disappear from an inner join, so a count comes out low
    • Knows that filtering the right-hand table in the WHERE clause quietly turns a left join back into an inner one

    Red flagGuesses, and cannot be led to the answer with a worked example.

  4. What makes code testable? How would you make a function that calls a payment API testable?

    Show what a strong answer coversHide answer

    A strong answer

    • Separates the decision logic from the input and output
    • Injects the dependency rather than constructing it inside the function
    • Names a stub, fake or mock and knows the difference between at least two of them
    • Mentions that you still want one real integration test somewhere

    Red flagAnswers 'you write tests for it' and stops.

  5. What is the difference between authentication and authorisation, and where does each happen in a web app?

    Show what a strong answer coversHide answer

    A strong answer

    • Authentication is who you are; authorisation is what you are allowed to do
    • Knows authorisation must be enforced server-side, not by hiding a button
    • Can describe a token or session travelling with the request
    • Bonus: mentions that a user editing another user's ID in the URL is the classic failure

    Red flagUses the words interchangeably.

  6. You have accidentally committed to main and pushed. What do you do?

    Show what a strong answer coversHide answer

    A strong answer

    • Stops and checks whether anyone else has pulled it
    • Knows revert is safe on a shared branch and reset with a force push is not
    • Tells someone rather than quietly fixing it
    • Bonus: suggests branch protection so it cannot happen next time

    Red flagReaches for a force push on main without a second thought.

Role-specific depth

Asked in the 60-minute technical interview, after the code walkthrough.

  1. In a REST API, when do you return 400 versus 404 versus 409 versus 500?

    Show what a strong answer coversHide answer

    A strong answer

    • 400 for a malformed or invalid request, 404 for a resource that is not there, 409 for a conflict with current state, 500 for our own failure
    • Understands that a 500 is a bug report about us, not about the caller
    • Mentions that the response body should say what to do about it
    • Bonus: notes that returning 404 instead of 403 can be a deliberate choice to avoid leaking existence

    Red flagReturns 200 with an error message in the body and sees no problem with it.

  2. An endpoint takes four seconds to respond. How do you find out why?

    Show what a strong answer coversHide answer

    A strong answer

    • Measures before guessing - timing, logs, an APM trace
    • Splits the time between database, application and network
    • Checks the query plan or the number of queries before rewriting anything
    • Only then considers caching, indexing or pagination

    Red flagJumps straight to 'add a cache' or 'add an index' with no measurement.

  3. What is an N+1 query problem and how would you spot one?

    Show what a strong answer coversHide answer

    A strong answer

    • One query to fetch a list, then one more per item in that list
    • Spots it in query logs or an APM waterfall rather than by reading code
    • Fixes it with a join, an eager load or a batched fetch
    • Knows it is invisible with ten rows and fatal with ten thousand

    Red flagHas never heard of it and does not ask what it means.

  4. Design the data model for our booking system: customers, bookings, shipments and tracking events. Talk me through the tables.

    Show what a strong answer coversHide answer

    A strong answer

    • Gets the cardinality right - a booking has many shipments, a shipment has many tracking events
    • Chooses sensible keys and asks whether customer references are internal IDs or something the customer supplies
    • Recognises tracking events as append-only and high volume
    • Asks a clarifying question before drawing anything

    Red flagDraws a single wide table and does not revisit it when you describe a second shipment.

  5. What does idempotent mean, and why does it matter for an endpoint that creates a booking?

    Show what a strong answer coversHide answer

    A strong answer

    • The same request applied twice has the same effect as applying it once
    • Connects it to retries, flaky mobile networks and double-clicked buttons
    • Suggests a client-supplied idempotency key or a natural unique constraint
    • Knows GET, PUT and DELETE are expected to be idempotent and POST is not

    Red flagConfuses it with immutability.

  6. You are reviewing a pull request and you disagree with the approach. How do you handle it?

    Show what a strong answer coversHide answer

    A strong answer

    • Distinguishes a preference from a defect and says which one they are raising
    • Asks a question before issuing a verdict
    • Knows when to take it off the pull request and into a conversation
    • Is willing to approve something they would have written differently

    Red flagWould say nothing to avoid friction, or treats every comment as a blocker.

Scenario and problem solving

Open-ended. There is no correct answer - you are watching the approach.

  1. Talk me through the code exercise you submitted. Why did you structure it that way, and what would you change with another two hours?

    Show what a strong answer coversHide answer

    A strong answer

    • Can navigate their own code without hesitating
    • Names a deliberate trade-off they made for time
    • Has a specific improvement in mind, not a vague 'more tests'
    • Admits any part they are unsure about

    Red flagCannot explain a section of their own submission.

  2. A customer reports that tracking numbers occasionally show the wrong shipment. You can reproduce it about one time in fifty. How do you approach it?

    Show what a strong answer coversHide answer

    A strong answer

    • Treats intermittent as a clue: concurrency, caching, a shared variable, an off-by-one on a paged query
    • Narrows the reproduction before touching code - which customers, which endpoint, what time of day
    • Adds logging or a correlation ID to catch the next occurrence
    • Considers whether to mitigate for customers while investigating

    Red flagStarts rewriting the endpoint immediately.

  3. We want customers to be able to export their booking history. Take me from ticket to production.

    Show what a strong answer coversHide answer

    A strong answer

    • Asks what the customer actually wants before choosing CSV, PDF or an API
    • Thinks about volume - a synchronous request will not survive ten years of bookings
    • Mentions authorisation: exporting only your own bookings
    • Covers tests, review, a staged rollout and how they would know it works

    Red flagGoes straight to implementation detail without a single question.

  4. How long would it take you to add a cancel booking button? Talk me through the estimate.

    Show what a strong answer coversHide answer

    A strong answer

    • Asks what cancel means in this business - refunds, notifying the depot, a time cutoff
    • Separates what is known from what is not and estimates the unknowns as unknowns
    • Gives a range with the assumptions attached
    • Is comfortable saying 'I would need half a day in the code to give you a real number'

    Red flagSays 'about two days' with no questions asked.

Questions to ask them

Bring three. Interviewers remember the candidate who asked something they had to think about.

  • How is work assigned to graduates in the first three months - the same backlog as everyone else, or a separate one?
  • What does code review culture look like here? How long does a pull request usually sit?
  • What was the last production incident this squad had, and what changed afterwards?
  • How much of the codebase is legacy versus greenfield, and which will I mostly be in?
  • What does a strong graduate look like at the six-month review, in your words?

Example CV · fictional candidate

Priya Raghavan

Written to the job description on the previous tab. Notes on the right explain each choice.

Priya Raghavan

Graduate Software Developer

Brisbane QLD · 0400 000 000 · [email protected] · github.com/priya-raghavan · linkedin.com/in/priya-raghavan

Professional summary

Software engineering graduate with two summers of commercial development across a .NET and React logistics platform and a university research tool. Comfortable taking a feature from ticket to production, writing tests as I go, and asking questions early rather than guessing. Looking for a graduate role on a team that reviews code properly and lets people ship.

Technical skills
Languages
C#, TypeScript, JavaScript, Python, SQL
Frameworks
.NET 8, ASP.NET Core, React, Node.js, Entity Framework Core
Data
PostgreSQL, SQL Server, Redis (basic)
Tooling and cloud
Git, GitHub Actions, Docker, Azure App Service and Blob Storage, Postman
Testing
xUnit, Jest, Playwright (basic)
Ways of working
Code review, Agile and Scrum, REST API design, test-first development (learning)
Education
Bachelor of Engineering (Honours), Software Engineering
Feb 2023 - Nov 2026

Queensland University of Technology

  • GPA 6.2 / 7. Dean's List 2024 and 2025
  • Relevant units: Data Structures and Algorithms (7), Database Systems (7), Software Architecture (6), Distributed Computing (6), Machine Learning (6)
  • Honours project: real-time group messaging for student teams. See Projects below
Experience
Software Engineering Intern
Nov 2025 - Feb 2026 (12-week vacation program)

Ardent Software, Brisbane

  • Built and shipped a customer self-service address book in ASP.NET Core and React, used by around 800 customers in its first month
  • Cut a nightly reconciliation job from 42 minutes to 9 by replacing a per-row query loop with a single set-based query and one index
  • Added 60+ unit and integration tests to a legacy billing module that had none, which caught two defects before release
  • Presented the squad's fortnightly demo three times to product and operations stakeholders
Student Software Developer (casual, 8 hrs/week)
Mar 2025 - present

QUT Faculty of Science research group

  • Maintain a Python and Flask data collection tool used by 14 researchers across three studies
  • Migrated the application from SQLite to PostgreSQL with no data loss and 20 minutes of planned downtime
  • Wrote the deployment runbook the group now uses to release without me
Retail Team Member
Jun 2022 - Feb 2025

Northside Grocers, Brisbane

  • Worked 20 hours a week alongside full-time study, including opening shifts before 8am lectures
  • Trained six new starters on register and stock procedures
Projects
Trackpoint - parcel booking and tracking API
C#, .NET 8, React, PostgreSQL, Azure, GitHub Actions
  • REST API with idempotent booking creation, webhook delivery with exponential backoff, and 78% line coverage
  • Deployed to Azure through a GitHub Actions pipeline that runs tests, builds a container and promotes on green
  • github.com/priya-raghavan/trackpoint
UniMess - real-time messaging for student groups (honours project)
ASP.NET Core SignalR, React, PostgreSQL
  • Load tested to 500 concurrent connections; documented the connection-pool exhaustion found at 650 and the two options for fixing it
  • Graded 88. Marker feedback singled out the failure analysis
Open source
C#
  • Two merged pull requests to an open-source .NET CSV parsing library - a quoting bug fix and a documentation correction
Leadership and activities
  • Vice-President, QUT Computer Science Club, 2025 - 2026. Grew weekly workshop attendance from 12 to 45 by switching to hands-on sessions
  • Volunteer mentor, primary school coding club, Brisbane, 2024 - present
  • GovHack 2025 - team placed second in the Queensland open data category
Certifications
  • Microsoft Certified: Azure Fundamentals (AZ-900), March 2026
Referees

Available on request.

DevOps / Platform Engineer · graduate level · Australia

Graduate DevOps Engineer (Platform)

Builds and runs the infrastructure other engineers deploy onto.

Job description · fictional employer

Graduate DevOps Engineer (Platform)

Kestrel Health Systems

Location
Melbourne - hybrid, 2 days in office
Employment type
Full-time, permanent - 18-month graduate pathway
Salary
$82,000 base + 12% superannuation + on-call allowance from month 12
Reports to
Platform Engineering Manager
Intake
Rolling - two graduates per intake, February and July

About us

Kestrel Health Systems builds clinical software used in 180 general practices and four private hospital groups. When our platform is down, clinicians cannot see patient records. That single fact shapes everything about how our platform team works: change is frequent but never casual, everything is auditable, and we would rather be boring than clever.

The team you would join

Platform Engineering is eight people supporting around 45 engineers across six product teams. We do not deploy other people's code for them. We build the paved road - pipelines, environments, observability, secrets, infrastructure modules - so product teams can deploy themselves safely, twenty or thirty times a week.

What you will do

  • Write and review Terraform for real AWS infrastructure, starting with low-risk modules and working up
  • Maintain and extend CI/CD pipelines in GitHub Actions and Argo CD
  • Build small internal tools in Python or Go that remove manual steps from other engineers' days
  • Investigate alerts alongside an experienced engineer, and write the incident notes afterwards
  • Improve dashboards, logging and alert quality - including deleting alerts nobody acts on
  • Take part in change advisory for production releases, which in our regulatory context is a real process, not a rubber stamp
  • Join the secondary on-call roster from month 12, always paired, always with a senior primary
  • Document everything you learn the hard way, because the next graduate will hit the same wall

What we are looking for

  • A completed or in-progress bachelor degree in computer science, IT, engineering or a related discipline
  • Comfort on a Linux command line - navigating, permissions, processes, logs, and reading a man page without panic
  • Scripting ability in Python, Bash or Go
  • Understanding of networking basics: DNS, HTTP, TCP, ports, what a firewall does
  • Familiarity with Git, and an understanding of why a pipeline exists
  • Evidence of having built and run something yourself - a home lab, a hosted side project, a Raspberry Pi doing something useful, a Discord bot that stays up
  • The temperament to stay methodical when something is broken and people are waiting
  • Full Australian working rights, and willingness to complete a National Police Check (health data environment)

Nice to have

  • Any exposure to Docker or Kubernetes, however small
  • Any cloud account you have paid your own money for
  • Infrastructure as code - Terraform, Pulumi, CloudFormation, Bicep
  • AWS Cloud Practitioner or similar certification
  • Experience in a role where you were responsible for something staying available - even IT help desk or event AV

Our stack

AWS (EKS, RDS, Lambda, S3, IAM)TerraformKubernetesDockerGitHub ActionsArgo CDDatadogPagerDutyPythonGoPostgreSQLVault

What the program gives you

  • A twelve-month curriculum with named milestones rather than 'learn on the job'
  • Paid AWS Solutions Architect Associate attempt in year one, Certified Kubernetes Administrator in year two
  • No primary on-call in your first year. Ever. Secondary only from month 12, always paired
  • Blameless incident reviews you are expected to attend and eventually write
  • $2,500 learning budget and a conference of your choice each year

How the process runs

  1. 1

    Application

    CV plus a short written answer: describe something you built and run yourself.

  2. 2

    Technical screen

    45 minutes - Linux, networking and scripting, conversational rather than quizzed.

  3. 3

    Practical exercise

    Two hours, scheduled at your convenience. Given a broken container build and a failing pipeline, get it green and explain what was wrong.

  4. 4

    Systems interview

    60 minutes - infrastructure reasoning, troubleshooting under uncertainty, an incident scenario.

  5. 5

    Values interview

    45 minutes - communication under pressure, judgement, how you behave when you do not know.

  6. 6

    Offer

    Subject to reference checks and a National Police Check.

We do not expect a graduate to arrive knowing Kubernetes. We expect curiosity about how things actually work, the discipline to write down what you did, and the honesty to say 'I broke it' quickly. Reasonable adjustments are available at any stage.

Interview questions · 21 questions with model answers

Graduate DevOps Engineer (Platform)

Answers are hidden by default so you can attempt each one first.

Motivation and behavioural

Platform work is judgement under pressure. These questions are about temperament as much as history.

  1. What have you built and run yourself, and what broke?

    Show what a strong answer coversHide answer

    A strong answer

    • Names something concrete they operated, not just wrote - a home server, a hosted bot, a lab
    • Has a failure story with a real diagnosis: disk filled, certificate expired, memory leak, DNS
    • Describes what they changed so it would not happen again
    • Shows they cared whether it stayed up, not just whether it started

    Red flagOnly has coursework where the marker never saw it run for more than an hour.

  2. Something is broken in production, three people are messaging you, and you do not know the cause yet. What do you do in the first ten minutes?

    Show what a strong answer coversHide answer

    A strong answer

    • Communicates first - acknowledges, sets an expectation for the next update
    • Establishes scope and blast radius before diagnosing
    • Asks what changed recently - a deploy, a config change, a certificate, a scheduled job
    • Considers mitigating (roll back, fail over) separately from fixing

    Red flagDives straight into logs in silence and forgets anyone is waiting.

  3. Tell me about a time you followed a process you thought was pointless.

    Show what a strong answer coversHide answer

    A strong answer

    • Can name the process and why they thought it was unnecessary
    • Followed it while raising the concern through the right channel
    • Either understood the reason afterwards, or successfully changed it
    • Shows awareness that in a health context some processes exist because of harm

    Red flagProudly describes routing around a control.

  4. Our platform serves clinical software. How does that change how you would work?

    Show what a strong answer coversHide answer

    A strong answer

    • Recognises availability affects patient care, not just revenue
    • Talks about change control, auditability and reversibility
    • Understands that access to production data is restricted for a reason
    • Does not treat safety as opposed to speed - small reversible changes are both

    Red flagSees regulation purely as bureaucracy to work around.

  5. How do you learn something when the documentation is wrong?

    Show what a strong answer coversHide answer

    A strong answer

    • Goes to the source: source code, provider docs, actual error output, a reproducible test
    • Builds a small isolated case rather than guessing in the real system
    • Writes down the corrected version for the next person
    • Knows when to stop and ask someone

    Red flagKeeps trying variations of the same command hoping one works.

Linux, networking and fundamentals

Asked conversationally in the 45-minute screen. Follow-ups matter more than first answers.

  1. A server is running out of disk. How do you find what is using it?

    Show what a strong answer coversHide answer

    A strong answer

    • Reaches for df to see which filesystem, then du to walk down into it
    • Knows logs and container images and old build artefacts are the usual culprits
    • Mentions that a deleted file held open by a process still consumes space
    • Thinks about a permanent fix - rotation, retention, an alert threshold - not just deleting things

    Red flagSuggests only 'make the disk bigger'.

  2. Walk me through what happens when a request from a browser reaches an application running in Kubernetes.

    Show what a strong answer coversHide answer

    A strong answer

    • DNS, load balancer or ingress, service, pod, container, process
    • Knows a service is a stable address in front of changing pods
    • Can say where TLS is terminated in their picture
    • Comfortably says which layers they are less sure about

    Red flagUses the words without being able to place them in order.

  3. What is the difference between a container and a virtual machine?

    Show what a strong answer coversHide answer

    A strong answer

    • Containers share the host kernel; VMs run their own
    • Consequences: startup time, image size, isolation strength
    • Knows a container image is layers plus a manifest, not a running thing
    • Bonus: knows why you cannot run a Windows container on a Linux kernel

    Red flagDescribes a container as 'a lightweight VM' and cannot go further.

  4. How does DNS resolution actually work, and what does TTL do?

    Show what a strong answer coversHide answer

    A strong answer

    • Resolver, root, TLD, authoritative - or a coherent approximation
    • TTL controls how long an answer is cached, and where
    • Connects it to practice: lowering TTL before a cutover, and why changes seem not to take effect
    • Knows to check with a direct query rather than trusting the browser

    Red flagThinks DNS changes are instant.

  5. What are environment variables, and why is putting a database password in one still not enough?

    Show what a strong answer coversHide answer

    A strong answer

    • Configuration passed into a process at start
    • Knows they leak - process listings, crash dumps, logs, child processes, CI output
    • Names a secret manager and the idea of short-lived credentials
    • Mentions that rotation matters more than storage location

    Red flagHas committed credentials to a repository and does not see the issue.

  6. Explain what a CI pipeline should do before code reaches production.

    Show what a strong answer coversHide answer

    A strong answer

    • Build, test, scan, package, deploy to a lower environment, verify, promote
    • Knows the pipeline should fail loudly and block, not warn
    • Mentions artefact immutability - build once, promote the same artefact
    • Bonus: talks about how you would roll back

    Red flagDescribes a pipeline that deploys straight to production on every push and sees no risk.

Platform and cloud depth

The 60-minute systems interview. Expect follow-ups that go one step past what they know.

  1. What problem does infrastructure as code solve that a well-written wiki page does not?

    Show what a strong answer coversHide answer

    A strong answer

    • Reviewable, versioned, repeatable, and the same in every environment
    • Knows drift is the enemy and that a plan or diff is the point
    • Mentions review and audit trail - who changed what, when, approved by whom
    • Honest that IaC introduces its own problems: state files, blast radius, slow feedback

    Red flagSays 'automation is good' with no mechanism behind it.

  2. In Terraform, what is state and why does it cause so much trouble?

    Show what a strong answer coversHide answer

    A strong answer

    • A record mapping configuration to real resources
    • Knows it must be shared and locked when a team uses it
    • Understands it can contain secrets and must be protected
    • Bonus: knows what happens when something is changed by hand in the console

    Red flagHas used Terraform but never thought about where state lives.

  3. What is the difference between a liveness probe and a readiness probe, and what goes wrong if you confuse them?

    Show what a strong answer coversHide answer

    A strong answer

    • Liveness restarts an unhealthy container; readiness removes it from traffic
    • A liveness probe that checks a database will restart healthy pods during a database blip
    • A missing readiness probe sends traffic to a pod that is still starting
    • Reasons about it even if the exact terms are shaky

    Red flagRecites definitions but cannot say what breaks.

  4. How would you give an application access to an S3 bucket without putting credentials anywhere?

    Show what a strong answer coversHide answer

    A strong answer

    • Role-based access - an instance profile, or a workload identity mapped to a service account
    • Least privilege: this bucket, these actions, not a wildcard
    • Knows credentials are then short-lived and rotated automatically
    • Bonus: mentions checking with a policy simulator or by testing the denial

    Red flagSuggests a long-lived access key in an environment variable and stops there.

  5. An alert has fired 200 times this month and nobody has ever acted on it. What do you do?

    Show what a strong answer coversHide answer

    A strong answer

    • Treats alert fatigue as a real risk to reliability
    • Investigates whether the condition matters at all before changing the threshold
    • Either makes it actionable with a runbook, or deletes it
    • Wants alerts tied to user-visible symptoms rather than internal metrics

    Red flagWould leave it because 'it might catch something one day'.

  6. What is the difference between logs, metrics and traces, and when does each one save you?

    Show what a strong answer coversHide answer

    A strong answer

    • Logs are events with detail; metrics are aggregated numbers over time; traces follow one request across services
    • Metrics tell you something is wrong, traces tell you where, logs tell you why
    • Knows high-cardinality data is expensive in a metrics system
    • Has actually used at least one of the three in anger

    Red flagOnly knows print statements and does not ask what the others are.

Incident scenario

Read the scenario aloud and let them drive. Give information only when they ask for it.

  1. It is 2pm. Clinicians are reporting the patient record screen is slow. Your dashboard shows API latency at the 95th percentile has gone from 200ms to 6 seconds over 20 minutes. Nothing was deployed today. What do you do?

    Show what a strong answer coversHide answer

    A strong answer

    • Confirms scope: all practices or some, all endpoints or one
    • Asks what else changed - a scheduled job, a data migration, traffic, an upstream dependency, a certificate
    • Looks at the database before the application: connections, slow queries, locks
    • Separates mitigation from diagnosis and says which one they are doing
    • Communicates to stakeholders on a stated interval

    Red flagRestarts everything as a first move and hopes it resolves.

  2. The fix requires a change to production infrastructure. Our process needs a change record and a second approver, and it is 5:45pm. What now?

    Show what a strong answer coversHide answer

    A strong answer

    • Follows the process, and knows whether an emergency change path exists
    • Gets the second approver rather than skipping the control
    • Documents what was done and why while it is still fresh
    • Does not treat urgency as permission

    Red flagApplies it directly and plans to write the record tomorrow.

  3. It turns out a graduate on another team merged a change that removed an index. How do you handle the review the next day?

    Show what a strong answer coversHide answer

    A strong answer

    • Blameless - the question is how the change got through, not who wrote it
    • Asks what would have caught it: review, a migration check, a staging load test, an alert
    • Focuses the actions on the system, not on retraining one person
    • Would want the graduate in the room, not shielded from it

    Red flagWants the person spoken to, and stops there.

  4. You have three days to make one improvement that reduces the chance of this happening again. What do you pick and why?

    Show what a strong answer coversHide answer

    A strong answer

    • Chooses one thing and can defend it against the alternatives
    • Prefers detection or reversibility over prevention if prevention is expensive
    • Considers what other teams would have to change to adopt it
    • Says how they would know it worked

    Red flagLists eight improvements and cannot prioritise.

Questions to ask them

Bring three. Interviewers remember the candidate who asked something they had to think about.

  • What does the on-call roster actually look like - how often does it fire, and out of hours how often?
  • How much of the team's week goes to planned work versus interrupts? Do you track it?
  • Who is allowed to deploy to production, and what has to be true before they can?
  • When did you last do an incident review, and what came out of it?
  • What is the oldest piece of infrastructure nobody wants to touch, and is that something a graduate would go near?

Example CV · fictional candidate

Daniel Okonkwo

Written to the job description on the previous tab. Notes on the right explain each choice.

Daniel Okonkwo

Graduate DevOps / Platform Engineer

Melbourne VIC · 0400 000 000 · [email protected] · github.com/dokonkwo · linkedin.com/in/daniel-okonkwo

Professional summary

IT graduate specialising in cloud infrastructure, with 18 months running a self-funded AWS environment and a year on a university help desk where uptime was my responsibility. AWS Solutions Architect Associate certified. I like the part of the job where something is broken and nobody knows why yet.

Technical skills
Cloud
AWS (EC2, S3, IAM, RDS, Lambda, VPC, CloudWatch), Cloudflare
Infrastructure as code
Terraform, Ansible (basic)
Containers
Docker, Docker Compose, Kubernetes (k3s home cluster)
CI/CD
GitHub Actions, GitLab CI
Operating systems
Linux (Debian, Alpine), systemd, bash, nginx
Languages
Python, Bash, Go (learning), SQL
Observability
Prometheus, Grafana, Loki
Education
Bachelor of Information Technology, majoring in Computer Networks and Security
Feb 2024 - Nov 2026

Monash University

  • WAM 74. Distinction average in networking and systems units
  • Relevant units: Computer Networks (HD), Operating Systems (HD), Cloud Computing (D), Cyber Security Principles (D), Databases (D)
  • Capstone: migrated a monolithic student club application to containers with a reproducible Terraform environment. See Projects
Experience
IT Support Officer (part-time, 15 hrs/week)
Jul 2024 - present

Monash University eSolutions Service Desk

  • First-line support for around 2,000 staff and student tickets a semester, with a 4-hour response target I met in 96% of cases
  • Wrote 11 knowledge base articles that cut repeat tickets on wireless authentication by roughly a third
  • Automated a manual account provisioning checklist into a 90-line Python script, saving the team about 5 hours a week
  • Escalated and helped diagnose a printing outage affecting three buildings, tracing it to an expired certificate on the print server
Cloud Engineering Intern
Dec 2025 - Feb 2026 (10 weeks)

Halberd Digital, Melbourne

  • Wrote Terraform modules for VPC and security group provisioning, adopted as the default for three client projects
  • Reduced a client's CI pipeline from 14 minutes to 5 by caching dependencies and splitting a serial test stage into four parallel jobs
  • Built a Grafana dashboard and three alerts for a client API, replacing a manual morning check someone had been doing daily
  • Shadowed two production incidents and wrote the timeline for one of them
Projects
Home lab - self-hosted services on a three-node k3s cluster
Kubernetes (k3s), Terraform, Cloudflare Tunnel, Prometheus, Grafana
  • Runs six services for family and friends with 99.5% uptime measured over 14 months by an external monitor
  • Fully rebuildable from Git - I have destroyed and restored the cluster from scratch three times, most recently in 40 minutes
  • Documented postmortems for four outages, including a certificate renewal failure and a full disk from unrotated logs
  • github.com/dokonkwo/homelab
Container migration capstone
Docker, Terraform, AWS ECS, GitHub Actions
  • Containerised a PHP application, provisioned the environment in Terraform, and automated deployment on merge
  • Cut environment setup for a new developer from a two-page manual to a single command
Leadership and activities
  • Volunteer network and AV crew, Melbourne community radio station, 2023 - present. Responsible for the studio streaming setup staying up during live broadcast
  • Monash Cloud Computing Club - ran two hands-on Terraform workshops for 30+ students
Certifications
  • AWS Certified Solutions Architect - Associate, January 2026
  • AWS Certified Cloud Practitioner, June 2025
Referees

Available on request.

AI / ML Engineer · graduate level · Australia

Graduate AI Engineer

Builds language-model features that have to work on real, messy inputs.

Job description · fictional employer

Graduate AI Engineer

Corella AI

Location
Sydney - hybrid, 3 days in office
Employment type
Full-time, permanent - 12-month graduate program
Salary
$88,000 base + 12% superannuation + equity participation
Reports to
Head of Applied AI
Intake
January 2027 - applications close 31 August 2026

About us

Corella AI builds document intelligence for insurance and legal firms. Our customers send us claim files, policy schedules and discovery bundles - scanned, rotated, handwritten in the margins, forty years old - and expect structured answers with a citation for every one. We are 34 people, eleven of them engineers.

The team you would join

Applied AI is five engineers who sit between research and product. We do not train foundation models. We build the systems around them: retrieval, prompting, tool use, evaluation, guardrails and the unglamorous data plumbing that decides whether any of it works.

What you will do

  • Build and improve retrieval-augmented generation pipelines - chunking, embedding, retrieval, reranking, prompt assembly
  • Write evaluations before you write features. Every change ships with a measurement
  • Build labelled datasets from real customer documents, including doing some of the labelling yourself
  • Run structured error analysis: read failures one at a time and categorise them, do not skim aggregate scores
  • Serve models and pipelines behind FastAPI services, with sensible timeouts, retries and cost controls
  • Work directly with two named customers on accuracy problems, including reading their documents
  • Contribute to prompt and model version control - we treat prompts as code, reviewed and tested
  • Investigate a new technique each quarter and present whether it is worth adopting, with evidence

What we are looking for

  • A completed or in-progress bachelor or masters degree in computer science, data science, mathematics, statistics, engineering or a related quantitative discipline
  • Strong Python - you can write a class, handle exceptions properly, and use a virtual environment without help
  • Working understanding of core machine learning: train and test splits, overfitting, evaluation metrics, why accuracy is a poor metric on imbalanced data
  • Hands-on experience building something with a large language model API - a project, a hackathon, a thesis chapter
  • The instinct to measure rather than eyeball. If you cannot tell us how you would know your change helped, this role will be hard
  • Ability to read a paper or a model card and extract what is actually claimed
  • Full Australian working rights

Nice to have

  • PyTorch or JAX beyond a tutorial
  • Any experience with vector search, embeddings or reranking models
  • Exposure to evaluation frameworks, or to writing your own
  • Data engineering fundamentals - SQL, pandas, working with awkward file formats
  • Any experience with document processing, OCR or information extraction
  • A public writeup of something you tried that did not work

Our stack

Python 3.12PyTorchHugging Face TransformersFastAPIPostgreSQL + pgvectorAnthropic and OpenAI APIsAWS BedrockMLflowDockerPrefectWeights and Biases

What the program gives you

  • A first project with a real customer and a real accuracy target in week three
  • One day a fortnight for research reading, with a paper discussion the team actually attends
  • Compute budget for experiments, and no requirement to justify a failed one
  • Mentoring from an engineer who has shipped model-backed features to production
  • Conference or workshop attendance annually, and support to publish or present internal work

How the process runs

  1. 1

    Application

    CV plus a link to something you built with a model, and two paragraphs on what did not work about it.

  2. 2

    Take-home

    Four hours, paid. A small extraction task on messy documents, with a held-out test set you do not see.

  3. 3

    Technical interview

    75 minutes - walkthrough of the take-home, ML fundamentals, and how you would improve your own result.

  4. 4

    Applied AI interview

    60 minutes - retrieval, evaluation design, failure analysis, cost and latency trade-offs.

  5. 5

    Team and values interview

    45 minutes - communication, intellectual honesty, working with non-technical customers.

  6. 6

    Offer

    Within a week of the final stage.

We are more interested in how you think about being wrong than in how many models you can name. Candidates who bring a project where they measured something, found it disappointing, and worked out why do consistently well here. Reasonable adjustments are available at any stage.

Interview questions · 21 questions with model answers

Graduate AI Engineer

Answers are hidden by default so you can attempt each one first.

Motivation and behavioural

Intellectual honesty is the trait being tested. AI work punishes people who cannot say 'that did not work'.

  1. Tell me about something you built with a model that did not work as well as you hoped. What did you learn?

    Show what a strong answer coversHide answer

    A strong answer

    • Has a concrete failure and can describe it precisely
    • Diagnosed it rather than abandoning it - data quality, leakage, a bad metric, an unrepresentative test set
    • Distinguishes 'the model was wrong' from 'I measured the wrong thing'
    • Is comfortable being unimpressive about their own work

    Red flagEvery project in their history worked on the first attempt.

  2. How do you keep up with the field without drowning in it?

    Show what a strong answer coversHide answer

    A strong answer

    • Has a filter - a few sources, a rule for what to read deeply
    • Distinguishes benchmark news from things that change practice
    • Can name a technique they decided not to adopt and say why
    • Has actually run something rather than only read about it

    Red flagLists newsletters and cannot say what they changed as a result.

  3. A customer insists the output is wrong. You look and think the output is right. How do you handle it?

    Show what a strong answer coversHide answer

    A strong answer

    • Assumes the disagreement is real information, not a customer error
    • Gets the specific example rather than arguing about the general case
    • Recognises the definition of correct may differ from theirs
    • Turns the disagreement into a test case either way

    Red flagWants to explain to the customer why they are mistaken.

  4. How would you explain to a claims manager why the system sometimes gets things wrong?

    Show what a strong answer coversHide answer

    A strong answer

    • Plain language, no jargon and no hand-waving about neural networks
    • Honest about probabilistic behaviour without being fatalistic
    • Explains what the guardrails and citations are for
    • Gives them something actionable - what to check, how to report it

    Red flagEither promises it will be fixed, or hides behind complexity.

  5. What worries you about the work this team does?

    Show what a strong answer coversHide answer

    A strong answer

    • Has actually thought about failure modes on legal and insurance documents
    • Mentions hallucinated citations, silent errors, over-trust, privacy of customer documents
    • Is thoughtful rather than performatively worried
    • Connects it to something they would do about it

    Red flagHas no concerns at all, or only rehearsed talking points.

Machine learning fundamentals

Do not skip these because the role is LLM-focused. Grads who cannot reason about evaluation build things that look right and are not.

  1. You have a classifier that is 97% accurate. Why might I not be happy about that?

    Show what a strong answer coversHide answer

    A strong answer

    • Immediately asks about class balance
    • Knows that a 97%-negative dataset makes 'always no' a 97% model
    • Reaches for precision, recall, F1, or a confusion matrix
    • Asks which error is more expensive in this business context

    Red flagTakes 97% as good news.

  2. Explain precision and recall to me, and tell me which one matters more for flagging fraudulent insurance claims.

    Show what a strong answer coversHide answer

    A strong answer

    • Correct definitions, ideally with the confusion matrix in mind
    • Recognises the trade-off is a business decision, not a technical one
    • Reasons about the cost of a missed fraud versus the cost of accusing a legitimate customer
    • Mentions that a flag feeding a human reviewer changes the answer

    Red flagMixes them up and cannot recover when you give a worked example.

  3. What is overfitting, and how would you detect it in a model someone else trained?

    Show what a strong answer coversHide answer

    A strong answer

    • Learning the training set rather than the pattern
    • Compares training and held-out performance
    • Checks how the split was made - random splits leak when documents or customers repeat
    • Mentions regularisation, more data, simpler models or early stopping as responses

    Red flagDefines it correctly but has never checked for it.

  4. What is data leakage, and can you give me an example that would be easy to miss?

    Show what a strong answer coversHide answer

    A strong answer

    • Information in training that would not be available at prediction time
    • Good examples: a field populated after the outcome, duplicate documents split across train and test, normalising before splitting
    • Knows leakage shows up as suspiciously good results
    • Would check by looking at what the model relies on

    Red flagHas not encountered the concept and does not ask.

  5. What is an embedding, and why does cosine similarity between two embeddings mean anything?

    Show what a strong answer coversHide answer

    A strong answer

    • A dense vector where geometric closeness approximates semantic closeness
    • Knows similarity is defined by what the encoder was trained on, not by universal truth
    • Mentions that domain mismatch degrades it - legal documents against a general-purpose encoder
    • Bonus: knows similarity is not the same as relevance to a question

    Red flagTreats embeddings as magic that always works.

  6. Why is a random train-test split sometimes the wrong thing to do?

    Show what a strong answer coversHide answer

    A strong answer

    • Time series - training on the future to predict the past
    • Grouped data - the same customer, document or patient in both sets
    • Suggests time-based or group-based splitting
    • Connects it to the model looking better offline than in production

    Red flagBelieves random is always correct.

Applied LLM engineering

This is the day job. Depth here separates candidates who have shipped from those who have prompted.

  1. Walk me through a RAG pipeline. Where does it usually break?

    Show what a strong answer coversHide answer

    A strong answer

    • Ingest, chunk, embed, index, retrieve, rerank, assemble prompt, generate, cite
    • Says retrieval is usually the problem, not generation
    • Names real failure points: bad chunking splitting a table, the answer spanning two chunks, a query that does not lexically match the source
    • Mentions hybrid search or reranking as responses

    Red flagDescribes it as 'you give the model your documents'.

  2. How would you evaluate a system that answers questions about insurance policies, when there is no single right answer?

    Show what a strong answer coversHide answer

    A strong answer

    • Builds a labelled set from real questions, even a small one
    • Separates retrieval evaluation from answer evaluation
    • Uses graded criteria - is it supported by the cited text, is it complete, does it hedge appropriately
    • Knows model-as-judge needs its own validation against human labels
    • Insists on holding some examples out

    Red flagWould 'just try it and see if the answers look good'.

  3. What is hallucination, and what actually reduces it in a production system?

    Show what a strong answer coversHide answer

    A strong answer

    • Fluent output unsupported by any source
    • Grounding in retrieved text with enforced citations
    • Allowing and rewarding 'I do not know' as an output
    • Verification passes, constrained output formats, checking cited spans actually exist in the source
    • Knows prompting alone is a weak control

    Red flagSays 'better prompts' and stops.

  4. Your accuracy is acceptable but each request costs $0.40 and takes 11 seconds. What do you do?

    Show what a strong answer coversHide answer

    A strong answer

    • Measures where the time and money go before optimising
    • Considers a smaller model for easy cases and routing hard ones up
    • Caching, shorter context, fewer retrieved chunks, parallel calls, streaming for perceived latency
    • Asks what the user actually needs - 11 seconds may be fine for a batch job and fatal in a chat

    Red flagImmediately suggests fine-tuning as the first move.

  5. When would you fine-tune rather than improve prompting and retrieval?

    Show what a strong answer coversHide answer

    A strong answer

    • When the failure is format, style or a consistent domain behaviour rather than missing knowledge
    • Knows fine-tuning does not reliably add facts
    • Weighs the cost: labelled data, retraining on model upgrades, evaluation burden
    • Would exhaust retrieval and prompting first

    Red flagTreats fine-tuning as the default answer to any quality problem.

  6. How would you stop a document-processing agent from doing something it should not?

    Show what a strong answer coversHide answer

    A strong answer

    • Constrain the tools available rather than asking nicely in the prompt
    • Validate outputs against a schema and reject rather than repair silently
    • Human approval on irreversible actions
    • Limits on iterations, spend and time; logging every tool call
    • Knows prompt injection from document content is a real threat when documents are untrusted

    Red flagRelies entirely on instructions in the system prompt.

Practical and take-home walkthrough

Anchored on the paid take-home. Let them lead, then push one level past their comfort.

  1. Talk me through your take-home. What did you measure, and what was your baseline?

    Show what a strong answer coversHide answer

    A strong answer

    • Established a baseline before optimising - even a trivial one
    • Can state their metric and defend the choice
    • Knows which of their changes helped and which did not
    • Says what they ran out of time to do

    Red flagReports one final number with no baseline and no error analysis.

  2. Your extraction is 82% accurate. I need 95%. Where do you start?

    Show what a strong answer coversHide answer

    A strong answer

    • Looks at the 18% first and categorises the failures
    • Distinguishes systematic errors from long-tail ones
    • Checks whether some labels are simply wrong
    • Asks whether 95% overall is the real requirement, or 95% on the fields that matter
    • Willing to say the target may not be reachable with the current approach

    Red flagStarts trying different models or prompts at random.

  3. The customer sends 300-page scanned PDFs, some rotated, some handwritten. How do you get from that to something a model can use?

    Show what a strong answer coversHide answer

    A strong answer

    • Thinks about the pipeline before the model - OCR quality, orientation detection, layout parsing, tables
    • Knows garbage extraction caps everything downstream
    • Would sample and measure OCR quality rather than assume it
    • Considers handling handwriting separately, or routing it to a human

    Red flagAssumes the text extraction step is solved.

  4. How would you know, three months after launch, that quality had quietly degraded?

    Show what a strong answer coversHide answer

    A strong answer

    • Monitoring in production, not just an offline test set
    • Tracks proxy signals: user corrections, escalations, retrieval scores, refusal rates, input distribution shift
    • Wants a periodically re-labelled sample of live traffic
    • Mentions that a model version change upstream can move behaviour overnight

    Red flagAssumes offline evaluation before launch is sufficient.

Questions to ask them

Bring three. Interviewers remember the candidate who asked something they had to think about.

  • What does your evaluation set look like, and who built it?
  • When a customer reports a bad output, what path does that take to becoming a test case?
  • How do you decide between improving retrieval and improving the prompt? Is that instinct or measurement here?
  • How much of my time would be model work versus data plumbing? I would rather know honestly.
  • What has the team tried in the last six months that you decided not to keep?

Example CV · fictional candidate

Wei Zhang

Written to the job description on the previous tab. Notes on the right explain each choice.

Wei Zhang

Graduate AI / Machine Learning Engineer

Sydney NSW · 0400 000 000 · [email protected] · github.com/weizhang-ml · weizhang.example.com (writeups)

Professional summary

Advanced computing honours graduate focused on applied language-model systems. Honours thesis on retrieval quality in domain-specific question answering, plus a summer building an evaluation harness that a commercial team still uses. I measure before and after every change, and I write up the things that did not work.

Technical skills
Languages
Python (primary), SQL, C++ (coursework), JavaScript (basic)
ML and DL
PyTorch, scikit-learn, Hugging Face Transformers, sentence-transformers
LLM systems
RAG pipelines, pgvector, FAISS, reranking, structured output, evaluation harnesses, prompt versioning
Data
pandas, NumPy, PostgreSQL, Polars (basic), PDF and OCR tooling
MLOps
MLflow, Weights and Biases, Docker, FastAPI, GitHub Actions
Maths
Linear algebra, probability and statistics, optimisation (university level)
Education
Bachelor of Advanced Computing (Honours Class I), majoring in Machine Learning and Data Science
Feb 2023 - Dec 2026

University of Sydney

  • WAM 82. Honours thesis mark 89
  • Thesis: retrieval quality as the limiting factor in domain-specific question answering. Built a 480-question labelled evaluation set over Australian tenancy legislation and showed reranking recovered 21 points of answer accuracy where prompt changes recovered 4
  • Relevant units: Statistical Machine Learning (HD), Deep Learning (HD), Natural Language Processing (HD), Optimisation (D), Database Systems (D)
Experience
Machine Learning Intern
Nov 2025 - Feb 2026 (14 weeks)

Wrenfield Analytics, Sydney

  • Built the team's first automated evaluation harness for an internal document classifier: 340 labelled examples, per-class metrics, regression checks in CI. Still in use
  • Ran error analysis on 200 misclassifications and found 38 were mislabelled in the ground truth, which changed the reported baseline by 4 points
  • Reduced average inference cost per document by 46% by routing short documents to a smaller model and only escalating on low confidence
  • Wrote the internal note explaining why a proposed fine-tune was not worth doing, which the team accepted
Undergraduate Research Assistant (casual, 10 hrs/week)
Mar 2025 - Nov 2025

USyd School of Computer Science

  • Prepared and cleaned a 1.2 million document corpus for a supervisor's NLP project, including deduplication that removed 14% of near-duplicates
  • Reproduced results from two published papers and documented where the reported numbers could not be reproduced
Mathematics Tutor (casual)
Feb 2023 - Dec 2025

Private and school-based tutoring

  • Taught HSC Extension 1 and 2 mathematics to 12 students across three years
  • Direct practice at explaining technical ideas to people who do not yet have the vocabulary
Projects
Tenancy QA - grounded question answering over legislation
Python, pgvector, sentence-transformers, cross-encoder reranking, FastAPI
  • Hybrid retrieval with reranking over 2,400 sections of state tenancy legislation, every answer citing a section number
  • Published the 480-question evaluation set and a writeup of three approaches that made results worse
  • github.com/weizhang-ml/tenancy-qa
Receipt extraction from photographs
PyTorch, OCR, layout-aware extraction
  • End-to-end extraction of merchant, date, total and line items from phone photos, tested on 600 self-collected receipts
  • Documented that accuracy fell from 91% to 63% on receipts printed on thermal paper more than a year old, and why
Writeups
Technical writing
  • Nine posts on evaluation design and retrieval failures, including 'Three RAG improvements that made my system worse'
Leadership and activities
  • Co-organiser, USyd Machine Learning Society reading group, 2025 - 2026. Ran fortnightly paper discussions with 20 to 30 attendees
  • Kaggle - top 8% in a document classification competition, 2025. Writeup published
Certifications
  • DeepLearning.AI Natural Language Processing Specialisation, 2024
Referees

Available on request.

Data Engineer / Analyst · graduate level · Australia

Graduate Data Engineer / Analyst

Turns raw operational data into numbers the business will actually act on.

Job description · fictional employer

Graduate Data Engineer / Analyst

Yarrow Energy Retail

Location
Brisbane - hybrid, 2 days in office
Employment type
Full-time, permanent - 12-month graduate program
Salary
$76,000 base + 12% superannuation
Reports to
Data Platform Lead
Intake
February 2027 - applications close 10 October 2026

About us

Yarrow Energy Retail sells electricity and gas to about 210,000 households and small businesses across Queensland and New South Wales. Every one of them generates meter reads, billing events, payments and service calls. Our data team turns that into pricing decisions, hardship identification, regulatory reporting and the forecasts the trading desk relies on.

The team you would join

The data group is twelve people: five data engineers, four analysts, two analytics engineers and a lead. You would split the first year across engineering and analytics rather than choosing on day one, because the best people in this field can do both and most graduates do not yet know which they prefer.

What you will do

  • Build and maintain data pipelines in Python and SQL, orchestrated in Airflow
  • Write dbt models with tests and documentation - an untested model does not get merged
  • Investigate data quality issues end to end, from a stakeholder saying the number looks wrong to a fix in the source
  • Build and maintain Power BI reports that people actually open, and retire the ones they do not
  • Work directly with billing, hardship and trading teams to understand what a number is for before you produce it
  • Support regulatory reporting cycles, where accuracy and traceability are non-negotiable
  • Contribute to the data dictionary and lineage documentation
  • Present findings to non-technical stakeholders, including saying when the data cannot answer the question

What we are looking for

  • A completed or in-progress bachelor degree in data science, computer science, IT, mathematics, statistics, engineering, economics or a related discipline
  • SQL you can defend in an interview - joins, group by, having, window functions or a demonstrated willingness to learn them fast
  • Python for data work: pandas or equivalent, reading awkward files, basic scripting
  • The habit of questioning a result that looks too good
  • Clear communication in writing. Half of analytics is explaining a number to someone who did not ask for the caveats
  • Attention to detail - in energy retail, a wrong number becomes a wrong bill
  • Full Australian working rights

Nice to have

  • Exposure to a cloud data warehouse - Snowflake, BigQuery, Redshift or Databricks
  • dbt, Airflow or any orchestration tool
  • Power BI, Tableau or Looker
  • Statistics beyond an introductory unit - regression, hypothesis testing, time series
  • Any exposure to the energy sector, or to a regulated industry
  • Version control for analysis work, not just for software

Our stack

SnowflakedbtApache AirflowPython (pandas, Polars)SQLPower BIAWS S3FivetranGreat ExpectationsGit

What the program gives you

  • Rotation across data engineering and analytics in the first year, then you choose
  • A named business stakeholder from month two, so you learn the domain and not just the tables
  • dbt and Snowflake certification paid for, with study time
  • $2,000 learning budget
  • A team that writes tests for data and treats analysis code like code

How the process runs

  1. 1

    Application

    CV plus a link to any analysis you have done, in any format.

  2. 2

    SQL screen

    45 minutes, live but collaborative. Realistic messy tables, and we help if you get stuck.

  3. 3

    Case exercise

    Take-home, around three hours. A dataset with deliberate problems in it, and a business question.

  4. 4

    Case discussion

    60 minutes - present your findings to two people, one of whom is not technical.

  5. 5

    Team interview

    45 minutes - stakeholder management, judgement, how you handle being asked for a number you do not trust.

  6. 6

    Offer

    Within a week of the final stage.

The best graduate analysts we have hired were not the ones with the most tooling on their CV. They were the ones who asked why a number was being requested before producing it. Reasonable adjustments are available at any stage.

Interview questions · 21 questions with model answers

Graduate Data Engineer / Analyst

Answers are hidden by default so you can attempt each one first.

Motivation and behavioural

Analytics fails on communication far more often than on technique.

  1. Tell me about a time your analysis produced a result you did not expect. What did you do?

    Show what a strong answer coversHide answer

    A strong answer

    • Checked the work before announcing the finding
    • Names what they verified - the join, the filter, the date range, the denominator, duplicates
    • Distinguishes a genuine insight from a data artefact
    • Escalated or shared it appropriately once confident

    Red flagReported the surprising number straight away because it made a good story.

  2. A stakeholder asks you for a number. How do you respond?

    Show what a strong answer coversHide answer

    A strong answer

    • Asks what decision the number will inform before running anything
    • Clarifies definitions - which customers, which period, active means what exactly
    • Confirms understanding back to them in writing
    • Knows the requested number is often not the useful one

    Red flagGoes straight to the query.

  3. Describe explaining something technical to someone non-technical. How did it go?

    Show what a strong answer coversHide answer

    A strong answer

    • Chose a concrete example over an abstract explanation
    • Checked understanding rather than assuming
    • Adjusted when the first attempt did not land
    • Can admit an attempt that failed

    Red flagDescribes the audience as the problem.

  4. You are asked to produce a number you do not think is meaningful. What do you do?

    Show what a strong answer coversHide answer

    A strong answer

    • Produces it if required, with the caveat attached and visible
    • Offers the better alternative alongside rather than instead
    • Escalates only if the number will cause real harm
    • Understands they are an adviser, not a gatekeeper

    Red flagEither refuses outright, or hands it over silently knowing it is misleading.

  5. Why energy retail rather than a bank or a consultancy?

    Show what a strong answer coversHide answer

    A strong answer

    • Has some grasp of the domain - meter data, tariffs, hardship, regulation
    • Interested in a domain deep enough to learn over years
    • Honest about wanting breadth early in a career
    • Has read something about the industry

    Red flagInterested in data generically, with no view on where.

SQL and data fundamentals

Run these live against messy sample tables. Helping them is fine - you are watching how they reason.

  1. What is the difference between WHERE and HAVING?

    Show what a strong answer coversHide answer

    A strong answer

    • WHERE filters rows before grouping, HAVING filters groups after aggregation
    • Gives an example: filtering by a customer state versus filtering to customers with more than five invoices
    • Knows an aggregate cannot be used in WHERE

    Red flagUses them interchangeably and cannot be led to the difference.

  2. Your join returned more rows than the left table had. Why?

    Show what a strong answer coversHide answer

    A strong answer

    • Duplicates on the join key in the right-hand table
    • Knows to check the grain of both tables before joining
    • Would run a count of distinct keys to confirm
    • Recognises this is the single most common cause of wrong numbers in reporting

    Red flagAdds DISTINCT to make the row count look right without diagnosing it.

  3. Write me a query that returns each customer's most recent invoice.

    Show what a strong answer coversHide answer

    A strong answer

    • Reaches for a window function - ROW_NUMBER partitioned by customer, ordered by date
    • Or a correlated subquery or a max-date join, and knows the tie-breaking problem
    • Asks what to do when two invoices share a timestamp
    • Thinks about customers with no invoices at all

    Red flagUses GROUP BY with a max date and then selects other columns without understanding why it is wrong.

  4. What is a window function and when have you needed one?

    Show what a strong answer coversHide answer

    A strong answer

    • Calculates across a set of rows while keeping each row
    • Names real uses: running totals, rank within group, month-on-month change, deduplication
    • Understands PARTITION BY versus GROUP BY
    • Has actually used one

    Red flagHas heard the term but has never written one and does not ask.

  5. Rows are missing from a report after a change. How do you find out why?

    Show what a strong answer coversHide answer

    A strong answer

    • Counts at each stage of the pipeline to find where the drop happens
    • Suspects an inner join, a date filter, a timezone boundary, or a null in the join key
    • Compares against the source rather than another derived table
    • Knows nulls do not behave as expected in comparisons

    Red flagRebuilds the query from scratch hoping it comes out right.

  6. What does it mean for a table to be at daily grain, and why does grain matter?

    Show what a strong answer coversHide answer

    A strong answer

    • Grain is what one row represents - one customer per day, one meter read, one invoice line
    • Knows mixing grains is how double counting happens
    • Would state the grain explicitly when designing a model
    • Connects it to sums that are inexplicably too large

    Red flagHas never thought about it and shows no curiosity when it is explained.

Pipelines, modelling and quality

Engineering-leaning questions. A graduate should reason sensibly even without tool experience.

  1. What would you test on a data pipeline, and when would you run those tests?

    Show what a strong answer coversHide answer

    A strong answer

    • Row counts and freshness, uniqueness of keys, nulls where they should not be, accepted values, referential integrity
    • Runs them after load and fails or quarantines rather than publishing silently
    • Distinguishes a hard failure from a warning
    • Knows someone has to be told, and who

    Red flagAssumes the pipeline running successfully means the data is correct.

  2. A nightly job failed at 2am. What has to happen before people open dashboards at 8am?

    Show what a strong answer coversHide answer

    A strong answer

    • Someone is alerted, with enough context to act
    • Decides between rerunning, backfilling and publishing stale data with a notice
    • Considers whether partial data is worse than no data
    • Communicates to consumers rather than hoping nobody notices

    Red flagWould rerun the job and say nothing.

  3. What is the difference between a full refresh and an incremental load, and when does incremental bite you?

    Show what a strong answer coversHide answer

    A strong answer

    • Full rebuilds everything; incremental adds or updates only what changed
    • Knows incremental is faster and cheaper but can silently miss late-arriving or back-dated records
    • Mentions needing a reliable change indicator, and periodic full reconciliation
    • Deleted source rows are the classic trap

    Red flagOnly knows one and does not ask about the other.

  4. How would you model customers, meters, meter reads and invoices for reporting?

    Show what a strong answer coversHide answer

    A strong answer

    • Separates dimensions from facts, or reasons to that structure without the vocabulary
    • Handles a customer moving house - a meter can have several customers over time
    • Recognises meter reads as high volume and invoices as low volume with corrections
    • Asks about restatements and history: do we need to know what we believed last month

    Red flagProduces one flat table and does not revise it when you introduce a moving customer.

  5. Finance says revenue is $2.1m, your dashboard says $2.3m. How do you resolve it?

    Show what a strong answer coversHide answer

    A strong answer

    • Assumes a definition difference before assuming an error
    • Checks period boundaries, GST, credits and adjustments, cancelled invoices, accrual versus cash
    • Reconciles at a smaller grain to isolate where the gap appears
    • Writes the agreed definition down so it does not recur

    Red flagAssumes finance is wrong.

  6. How do you decide whether logic belongs in the pipeline, the model or the dashboard?

    Show what a strong answer coversHide answer

    A strong answer

    • Shared business logic belongs upstream so every consumer agrees
    • Presentation-only logic can stay in the dashboard
    • Knows logic buried in a report is invisible and unversioned
    • Weighs reusability against speed of delivery honestly

    Red flagPuts everything in the dashboard because it is quicker.

Case exercise and communication

Anchored on the take-home. The second interviewer is deliberately non-technical.

  1. Present your case findings in five minutes, to me as the head of customer operations.

    Show what a strong answer coversHide answer

    A strong answer

    • Leads with the answer, not the method
    • States the recommendation and what would change if acted on
    • Caveats are present but proportionate and near the end
    • No jargon, and no apologising for the data

    Red flagWalks through their process chronologically and never reaches a conclusion.

  2. What was wrong with the dataset we gave you?

    Show what a strong answer coversHide answer

    A strong answer

    • Found at least two of the planted problems - duplicates, impossible dates, a units change partway through, missing months
    • Says what they did about each: excluded, corrected, flagged
    • Quantifies the impact on the answer
    • Notes anything they suspected but could not confirm

    Red flagReports no problems at all.

  3. If I gave you two more weeks on this, what would you do?

    Show what a strong answer coversHide answer

    A strong answer

    • Names the biggest source of uncertainty in their own answer
    • Wants additional data they can specify
    • Would validate a finding against a second source or with a stakeholder
    • Prioritises rather than listing

    Red flagWould make the charts nicer.

  4. Your analysis suggests we should change a pricing rule. How confident are you, and what would you want before we acted?

    Show what a strong answer coversHide answer

    A strong answer

    • Distinguishes correlation from a causal claim
    • Knows the sample, the period and what else changed during it
    • Suggests a limited trial or a holdout before a full rollout
    • Is comfortable saying the data supports investigating, not deciding

    Red flagPresents a correlation as a reason to change pricing for 210,000 customers.

Questions to ask them

Bring three. Interviewers remember the candidate who asked something they had to think about.

  • Who owns the definition of a metric here - the data team or the business?
  • How much of the team's time goes to fixing broken pipelines versus new work?
  • How many of your dashboards were opened last month? I am curious how you decide what to retire.
  • What is the hardest data quality problem you have that you have not solved?
  • In the rotation, how does the decision get made about where I end up after twelve months?

Example CV · fictional candidate

Ella Marchetti

Written to the job description on the previous tab. Notes on the right explain each choice.

Ella Marchetti

Graduate Data Engineer / Analyst

Brisbane QLD · 0400 000 000 · [email protected] · github.com/ellamarchetti · linkedin.com/in/ella-marchetti

Professional summary

Information technology and business graduate with a data specialisation, six months of commercial analytics experience, and a habit of checking the denominator before sharing the number. Strong SQL, working dbt and Airflow exposure, and enough business background to ask what a metric is going to be used for.

Technical skills
SQL
Advanced - window functions, CTEs, query tuning, Snowflake and PostgreSQL
Python
pandas, NumPy, matplotlib, requests, openpyxl
Data engineering
dbt (models, tests, docs), Apache Airflow (basic), Fivetran, Git
Warehousing
Snowflake, PostgreSQL, dimensional modelling (Kimball basics)
Visualisation
Power BI (DAX basics), Tableau, Excel to an advanced level
Statistics
Regression, hypothesis testing, time series decomposition (university level)
Education
Bachelor of Information Technology / Bachelor of Business Management (dual degree), Data Analytics major
Feb 2023 - Nov 2026

The University of Queensland

  • GPA 6.0 / 7
  • Relevant courses: Database Systems (7), Data Analytics (7), Statistical Modelling (6), Information Systems (6), Managerial Accounting (6)
  • Capstone: demand forecasting for a not-for-profit food relief service. Model reduced weekly over-ordering by an estimated 12% in a four-week trial
Experience
Data Analytics Intern
Nov 2025 - Feb 2026 (12 weeks)

Fernhill Insurance Group, Brisbane

  • Rebuilt the weekly claims report in Power BI, cutting preparation from 6 hours of manual Excel work to a 10-minute refresh
  • Wrote 22 dbt models with tests for a claims mart, including the first uniqueness and freshness tests the team had
  • Traced a persistent discrepancy between two claims reports to a duplicated broker record, which had been overstating one region's claim count by 8% for around a year
  • Presented findings twice to a non-technical operations forum of 15 people
Business Analytics Assistant (casual, 12 hrs/week)
Mar 2025 - present

UQ Student Services

  • Automated a monthly participation report from a manual spreadsheet process into a scheduled Python job with a documented data dictionary
  • Built the SQL views three staff members now use directly instead of requesting extracts
Assistant Manager (casual, then part-time)
Feb 2022 - Jan 2025

Riverbend Cafe, Brisbane

  • Managed rosters and stock ordering for a team of nine while studying full-time
  • Introduced a simple sales-by-hour tracking sheet that cut weekly food waste by around 15%
Projects
Queensland electricity demand explorer
Python, dbt, DuckDB, Streamlit, public AEMO data
  • Ingested five years of public half-hourly demand and price data, modelled it in dbt with tests, and published an interactive explorer
  • Documented three data quality issues in the raw feed, including a daylight-saving duplication that silently added 48 rows twice a year
  • github.com/ellamarchetti/qld-demand
Food relief demand forecasting (capstone)
Python, scikit-learn, statsmodels
  • Compared a seasonal naive baseline against regression and gradient boosting; the simplest model that beat baseline was chosen deliberately over the most accurate one
  • Delivered a one-page instruction sheet so volunteers could run it without me
Leadership and activities
  • Treasurer, UQ Data Science Society, 2025 - 2026. Managed a $9,000 annual budget and reported to a committee of eight
  • Volunteer data support, Brisbane community food relief service, 2024 - present
Certifications
  • dbt Fundamentals, 2025
  • Microsoft Power BI Data Analyst Associate (PL-300), April 2026
Referees

Available on request.