What happened
In June 2025, Commonwealth Bank of Australia deployed an AI voice bot to handle inbound calls into its Customer Service Direct team. The following month, the bank announced that 45 staff in that team would be made redundant, with another 45 Customer Messaging Specialist roles slated to follow. The bank publicly stated that the bot had reduced call volumes by approximately 2,000 calls per week and that the staffing reductions reflected the new capacity.
The Finance Sector Union's account contradicted that claim. Members reported that call volumes were rising. The bank was offering overtime to remaining staff. Team leaders, who do not normally take customer calls, were being directed to answer phones to keep up. The union escalated the dispute to the Fair Work Commission, arguing that the redundancies were not justified because the underlying claim about call volumes was not true.
On 21 August 2025, Commonwealth Bank reversed the decision. A bank spokesperson said: "CBA's initial assessment that the 45 roles in our Customer Service Direct business were not required did not adequately consider all relevant business considerations and this error meant the roles were not redundant." The 45 affected staff were offered the chance to keep their roles, be redeployed, or take voluntary exit packages. The bank apologised to the workers concerned and said it would review its internal processes. The future of the second planned wave of 45 Customer Messaging redundancies was left unresolved at the time of the reversal.
The story moved beyond CBA. It became the most-cited example, in Australian workforce-policy discussions through late 2025, of what happens when AI performance claims are used to justify staffing decisions without verifiable data underneath them.
What an auditable version would have shown
The dispute between CBA and the FSU should not have required a tribunal to resolve. Both sides were making claims about the same underlying data: call volumes, bot performance, customer wait times. Neither could prove its version, because the data lived in a CBA-managed system with no third-party verification.
A signed record on every call would have settled it. Each inbound call to Customer Service Direct generates a record at the moment it happens: timestamp, intent classification, whether the bot handled it or escalated to a human, the wait time the customer experienced, and the resolution outcome. The records are hash-chained and signed with a key CBA controls but whose signatures anyone with the public key can verify.
At the end of each week, an aggregate metric is produced over the underlying signed records: total calls, bot-resolved, human-escalated, average wait time, peak queue depth. The aggregate is itself signed, and its signature includes a hash root of the underlying call records, so changing any single call record breaks both the aggregate and the chain.
With that record in place, the dispute resolves itself before reaching the Commission. CBA's claim of a 2,000-call reduction can be verified by the union against the same chain CBA used. The union's claim of rising volumes can be checked against the same chain. The Fair Work Commission does not need a witness. It can verify the signatures itself.
Where the gap was
The bot itself was not the failure point. It was probably handling some calls competently. The failure was a workforce decision made on the basis of internal performance claims that nobody outside the bank's executive layer could independently check.
This is a different shape of AI failure from a chatbot that hallucinates or an agent that drops a database. Nothing about the bot's outputs was inaccurate. The accuracy problem was upstream, in how the bot's performance was being measured and reported to the people making decisions about jobs. The 45 staff being made redundant and the union representing them had no access to the numbers, so the dispute went to a Commission hearing that should not have been needed.
The same audit-trail infrastructure that protects customers in the Air Canada case protects workers in the CBA case. The audience and the consequence change, but the underlying primitive is the same: signed records at the moment of action, verifiable by anyone holding the public key. Workforce decisions in the AI era will depend on this infrastructure existing, because the alternative is a Commission hearing every time a redundancy is announced.
What governance should have looked like
Every inbound call generates a signed record at the moment it happens. Periodic aggregate metrics are produced over those records and signed in turn. Workforce decisions citing AI performance can be checked against the signed chain by anyone who holds the public key, including the union and the regulator.
from headlights import ConductRecord, MetricRecord, sign, chain
# Every inbound call to Direct Banking creates a signed record
record = ConductRecord(
agent_id="cba-direct-banking-voice",
call_id=call.id,
timestamp=datetime.now(timezone.utc),
intent_classification=bot.classify(call),
bot_resolved=outcome.resolved_by_bot,
human_escalated=outcome.escalated_to_human,
wait_time_seconds=call.wait_time,
queue_depth_at_arrival=queue.depth_now(),
resolution_outcome=outcome.summary,
previous_record_hash=last_record.hash(),
)
signed = sign(record, key=cba_private_key)
chain.append(signed)
# At the end of each reporting period, signed aggregate metrics
weekly = MetricRecord(
period_start=datetime(2025, 7, 14, tzinfo=timezone.utc),
period_end=datetime(2025, 7, 20, tzinfo=timezone.utc),
total_calls=aggregate.count(),
bot_resolved=aggregate.count(bot_resolved=True),
human_escalated=aggregate.count(human_escalated=True),
avg_wait_seconds=aggregate.avg("wait_time_seconds"),
peak_queue_depth=aggregate.max("queue_depth_at_arrival"),
chain_root_hash=chain.root_hash(), # binds the metric to the underlying calls
)
signed_weekly = sign(weekly, key=cba_private_key)
metrics_log.append(signed_weekly)
When the union asks "show us the call data," the bank exports the relevant slice of the chain and the union verifies it locally. The Fair Work Commission can do the same with the same export. The bank's own board can do the same. There is one set of numbers, mathematically tied to the underlying call records, and nobody has to take anybody's word for the volume.
The signed metric chain is one layer. CBA had several others available. A sustained-capacity requirement before any workforce decision: the bot must demonstrate the claimed performance over a full quarter of signed metrics, not a single week, before redundancies can be announced. Independent audit access for the union or an external reviewer: the public key is shared, the signed records are verifiable, the data is not behind a paywall to anyone in the workforce. Customer outcome metrics, not just call counts: bot-resolved is not the same as customer-helped, and the audit log should capture resolution quality, not just pickup rates. Public reporting cadence: signed performance metrics shared with the workforce and the union on a regular schedule, not on dispute. None of these are exotic. They are documented practice in any mature AI deployment that affects jobs. The cumulative cost is far less than one Fair Work Commission proceeding plus the reversal cost of 45 redundancies plus the reputational damage of admitting the original assessment was wrong.
The reference implementation of these patterns is open source. It will live at github.com/saffronandindia/headlights-oss, Apache 2.0 licensed, 226 tests passing, free for any bank, union, or workforce regulator to install and verify. The repository goes public alongside the launch of this Incident Library.
This entry is an educational analysis based on the publicly reported sources listed below. It does not constitute legal advice. Facts are stated to the best of our knowledge as of the date of publication; corrections will be issued promptly on request. Contact: ellie@useheadlights.com.
Sources
- Commonwealth Bank Reverses Job Cuts Decision Over AI Chatbots (Bloomberg)News
- CBA reverses AI-driven job cuts, admits error (ACS Information Age)News
- CBA to keep roles it had reviewed after installing AI bot (iTnews)News
- Commonwealth Bank backflips on controversial axing of dozens of jobs for AI chatbot (Yahoo Finance AU)News