SLSA Carnival Results Ingestion
The Challenge
A surf carnival produces results the way live sport always does: fast, messy, and in the format whichever timing system happened to be on the beach that day.
Getting those results onto a national public website is not a data-transfer problem, it is a reconciliation problem. Event names vary between meets. Athletes appear under nicknames, married names and misspellings. Club names arrive abbreviated. Teams are assembled ad hoc. And the results themselves carry the artefacts of live competition — disqualifications, scratchings, dead heats, corrections issued after the fact.
Publish that raw and the site is wrong in ways that matter to competitors. Reconcile it by hand and you cannot publish same-day, which is the entire point.
The Solution
Between an event-management system's export and a published, correctly-attributed national result sits the ingestion layer we built for SLSA Results.
Integrating the event management system
A dedicated integration talks to the sports event management system that carnivals run on, authenticating and pulling event and result data per carnival. Retrieved data is cached, so a large meet is not re-fetched every time processing is re-run — which it will be, because live results get corrected.
Parsing what actually arrives
The heart of it is a substantial result parser: several hundred lines dedicated to interpreting the real shapes results come in, rather than the shape a specification says they should. Alongside it, a sanitising layer normalises values before they reach the database.
This is deliberately separated from the import. Parsing is where the irregularity lives, so it is where the tests concentrate — and when a new timing system or an unexpected format appears, the change is contained to the parser instead of spreading through the application.
Reconciling against national records
Results are only meaningful if they attach to the right club and the right person. The platform synchronises clubs, organisational entities and members from Surf Life Saving's national systems through our shared API integration layer, incrementally so a sync is a delta rather than a full reload of a very large membership.
Incoming results are matched against those authoritative records, so a result belongs to a real registered athlete at a real club — not to a string that looked similar.
Presenting it
Results are then browsable by carnival, event, club, person and team, with a grid builder assembling the tabular views that competitors and clubs actually want to read.
The Results
- Same-day publication of carnival results without hand reconciliation
- A dedicated, tested parser isolating format irregularity from the rest of the platform
- Results attributed to authoritative club and member records, not to matched strings
- Incremental national sync, so membership data stays current without full reloads
- Re-runnable imports with caching, so corrections are cheap to reprocess
This ran for roughly a decade of carnival seasons. Surf Life Saving decommissioned the public results platform in June 2026, which is what the ingestion fed; the reconciliation problem it solved is the same one every organisation with messy upstream data has, and it did not go away.
Technology
Laravel with a dedicated integration service for the sports event management system (token-authenticated, cached), a standalone result parser and sanitiser, and incremental synchronisation of clubs, entities and members from SLSA's REST API via our private Composer package. Carnival, event, result, person, club and team models with a grid builder for tabular presentation. Webhook handling for externally-triggered updates.
See also: SLSA Results — the public results platform, and SLSA API Integration Layer — the shared client behind the membership sync.
Related Nano Solutions services: Systems Integration · Software Development. WA government agencies can engage us directly through our CUAICTS2021 panel listing.