The Problem
Referee development in community rugby has traditionally meant a notepad, a stopwatch and a good memory. The feedback a young referee gets after a match depends on what their coach managed to scribble down while also watching the game, and comparing one referee with another across a season is close to impossible. Team coaches have the same problem from the other side of the touchline.
Rugby Ref Coach makes capture fast enough to do live, works with no mobile signal at the ground, and does the analysis afterwards. The screenshots below use the app's demonstration data.
Live Capture
Match setup takes the teams, the referee (picked from the association's roster), the grade, 15s or 7s, and the half length, which varies by grade and matters for every timing statistic.
During the match, events are logged against the World Rugby Laws: penalties, free kicks, advantage, scrums, lineouts, infringements and coaching moments, each with the team, the law, the outcome, any card, notes and a tap on a field grid for location.

- Quick Entry trims capture down to the steps a coach actually wants live, and is configurable.
- Speak Event lets a coach say what happened and have it parsed into team, law and outcome. Anything it cannot parse is kept as a note rather than thrown away.
- An advantage clock times how long advantage is played and whether it was played on or called back.
- Linked events keep the scoreboard and sanctions consistent, and everything can be edited after the match on any device.

Team Coach Mode
Team coaches log their own side by jersey number: tap a number, then an action. Replacements and positional switches are tracked through the match so the app always knows who was playing where, which is what makes per-player and per-position stats trustworthy. The output is a team stats view, a per-player run sheet, a heatmap and its own PDF.


Stats, Done Honestly
Each referee gets a personal stats view covering event mix, penalty timing, outcomes, set-piece success, advantage management, cards and a heatmap. Two pieces of the analysis are worth calling out because they are where it is easy to mislead.

Ball in play is an estimate, and says so
The app records discrete events rather than continuous live and dead time, so ball-in-play is modelled from typical stoppage durations. It is presented as an estimate, not a measurement, and the model is tunable as better data comes in.
Referee comparison is deliberately not a ranking
Associations can compare a referee with their peers, and this is where it would be easy to do harm. Figures are normalised so different match lengths compare fairly, the comparison is against a stable peer baseline at the same grade, spread is shown rather than hidden, small samples are flagged or withheld, and the screen says in plain words that it is not a ranking, because the person logging generates the data.

Coaching Review
After a match, a coach can generate a structured coaching review using an LLM. The app builds a factual brief from the logged events and the model finds the patterns, organised around the coaching framework used in Australian referee development, with positives, work-ons and a summary.
The guardrails matter more than the model. The review never second-guesses whether a decision was right (it points to the video instead), never invents events, says plainly when the data is thin, and is fully editable by the coach before anything is shared.

Architecture
- Front end: React, installed as a progressive web app with the whole app cached on the device, served from S3 through CloudFront.
- API: a REST API with a Cognito authoriser, plus a small number of public endpoints for shared-match links and email unsubscribes.
- Compute: Python Lambdas grouped by matches, associations, administration and email. New users land in a read-only demonstration association so the stats screens have data from day one.
- Data: DynamoDB, designed so that the common operations are cheap and sync stays simple.
- Environments: production, staging and dev come from the same template, with a single deploy script that builds and verifies everything before anything is uploaded.
- Partner integrations are designed and tested, with strict separation between associations' data and pseudonymous references for individuals, ready for when associations want to share data with competition platforms.
Offline-First Sync
Plenty of grounds have no mobile signal, so the app never waits for the network. Every write is saved on the device first and the server catches up later.
"Newest copy wins" is simple and robust, but it has one dangerous failure: an old copy on a second device overwriting a newer one with fewer events. A guard on both the device and the server refuses that kind of update and flags it for an administrator instead.
Lessons Learnt
- Most "bugs" were deploys. A stale cache or a partial upload looks exactly like a code defect. Check what is actually deployed first.
- Test the logic that corrupts data silently. The test suites concentrate on the areas where a regression would not crash but would quietly produce wrong numbers.
- Constrain the LLM to what the data can show. The most valuable instructions are the things it must not do.
- Design for the observer effect. In referee comparison the person logging generates the data, so the UI is built to inform rather than rank.
If you are involved in referee development or coaching and want to try it, have a look at rugbyrefcoach.com or reach out.