The engineering is sound. The record needs proofreading.
A product whose promise is verified records cannot afford visible data errors. The accessibility base is strong — most of what fails is a short list of fixes in shared components. The work that matters most is in what the screens say: labels, statuses, empty columns, and how much a phone user scrolls before reaching any of it.
An athletic director evaluating TrueRecord will open the leaderboard and a meet result. Today the leaderboard lists the school as "Girls Cross Country" under a heading that says lower scores are better next to a celebrated 485 points, and the meet result opens with HS_BOYS · place 2 · 75. Each is a small fix; together they are the first impression of a product sold on accuracy.
Every finding carries a confidence label.
Each finding shows what the app actually displayed or exposed to assistive technology. Athlete names and the account email were replaced before any screenshot was taken; most athletes in the app are minors.
Three things a buyer notices in the first five minutes.
Data on screen contradicts itself
Team standings name a team, not a school. The SCHOOL column of the leaderboard's team standings reads "Girls Cross Country", while the card above it says "Celina average finish".
The scoring rule fights the badge. The same card says "Five-scorer team scores. Lower scores are better." and shows 485 points in a green ribbon with a gold 1. A reader cannot tell whether 485 is good.
A past meet is still "Upcoming". On 2026-11-08 the events list shows the OHSAA Cross Country State Championships of Nov 7 as Upcoming.
Start time before the first race, or after it. The WBL Championships detail gives Start time 10:00 AM, and its race schedule starts at 9:00 AM.
"Parking: Price not provided" sits above a real parking instruction, which reads as missing data rather than free parking.
leaderboard / team standings Celina average finish 2.1 Five-scorer team scores. Lower scores are better. 485 points VERIFIED RESULTS SCHOOL POINTS 1 Girls Cross Country 485 events / list (Nov 8) Nov 7, 2026 OHSAA Cross Country State Championships Upcoming meet detail / WBL Championships START TIME 10:00 AM race schedule: High School Girls 9:00 AM PARKING Price not provided
Results show internal codes and an empty column
A meet result opens with HS_BOYS · place 2 · 75, MS_BOYS, HS_GIRLS, MS_GIRLS: database codes, not words.
Every results table has a sortable Points column, and all 47 rows of this meet show "-" in it. Each table heading repeats its own label: "Girls High School · Girls' High School 5,000 Meters".
The page subtitle says "Personal history stays on My Record"; there is no screen called My Record in the Fan navigation (the closest is Hall of Fame, at /parent/true-record).
Team scores HS_BOYS · place 2 · 75 MS_BOYS · place 3 · 88 HS_GIRLS · place 1 · 48 MS_GIRLS · place 1 · 26 tables 4 · rows 47 · Points cells with "-" 47 / 47 heading Girls High School · Girls' High School 5,000 Meters
Sign-up: no terms, no privacy, no age check, and a public roster search
None of the three sign-up screens (student, fan, coach) links to terms of use or a privacy policy, and none asks for an age confirmation, although the FAQ says account holders must be 13 or older.
The student sign-up (/join/celina-high-school) asks the student to "find your name on the school cross country roster" by typing into a name search, before any account exists. The heading does not name the school; only the address does.
Hypothesis, not tested: if that search returns names to anyone who opens the page, the roster of current-season athletes is readable without an account. We did not type into it. The product team should confirm what it returns and to whom.
A strong base. Five gaps, all in shared components.
Public school districts must meet WCAG 2.1 AA for their web content under the Department of Justice's 2024 ADA Title II rule (April 2026 for large districts, April 2027 for smaller ones), and they ask the same of what they put in front of families. Measured with axe-core (WCAG 2.0/2.1/2.2 A and AA rules) on every screen, a keyboard-only walk of 203 stops, reflow at 320 px, 200% text size, and Lighthouse on the sign-in page. Context, not a legal assessment.
Level toggles do not say which one is selected
The High School / Middle School switches on Home and Leaderboard are plain buttons with no aria-pressed or selected state. A screen-reader user hears two buttons and cannot tell which level the numbers belong to.
The Team / League switch next to them does it right (aria-pressed="true"), so the pattern already exists in the code.
High School aria-pressed: none role: none Middle School aria-pressed: none TEAM aria-pressed: true LEAGUE aria-pressed: false WBL Champions ▸ aria-expanded: false → true (expanders are correct)
No way to skip eight navigation links, on every screen
Every signed-in screen starts the keyboard order with the BETA logo link, the six navigation items and the account email — eight stops before the first piece of content. There is no skip link.
On Events, the month grid adds one stop per day: 51 stops to cross the page.
stop 1-8 BETA · Home · Events · Hall of Fame · Leaderboard · Share · Profile · account email
stops per screen Home 28 · Events 51 · Hall of Fame 19 · Leaderboard 28
Share 16 · Profile 26 · Results 35
visible focus 203 of 203
| Barrier | Where | WCAG | Severity |
|---|---|---|---|
| White text on the green "points" ribbon below 4.5:1 | Home 4 · Leaderboard 3 | 1.4.3 | Serious |
| Logo link's accessible name ("TrueRecord home") does not contain its visible text ("BETA") | every signed-in screen | 2.5.3 | Serious |
| Twelve buttons all named "Details" in the events list, with no event name | Events, list view | 2.4.6 · 2.4.4 | Moderate |
| Sign-in and sign-up screens have no <main> landmark | 5 signed-out screens | 1.3.1 | Moderate |
| Duplicate landmark names inside the Home cards | Home 3 · Results 1 | best practice | Minor |
| Coach sign-up fields have no autocomplete (email, new-password) | /signup/coach | 1.3.5 | Moderate |
| Inline text links under 24 px tall ("Open events", "Open Leaderboards", athlete names in lists) | Home 5 · Leaderboard 5 · Results 17 | 2.5.8 (2.2) | Minor |
| "Sign in" link inside text on Fan sign-up told apart by color only | /signup/fan | 1.4.1 | Moderate |
Focus is visible on all 203 keyboard stops. Every form field has a visible, associated label. The phone menu and the meet-detail sheet are proper dialogs: they move focus in and close on Escape, and the meet sheet returns focus to the button that opened it. Expanders announce their state. Results tables use real sort buttons with aria-sort. Every screen reflows at 320 px with no sideways scrolling, and text at 200% did not break the Profile layout. Lighthouse scores the sign-in page 100 for accessibility.
Limits. No screen-reader session was run; no form was submitted, so server error messages were not seen; the coach, athletic-director and athlete workspaces were not opened (Blocked: Fan account only).
Families use it in the stands. The phone layout makes them scroll for it.
The header takes a third to a half of the phone screen
On a 390 × 844 phone, every screen stacks the wordmark, BETA, FAN, Menu, the mascot, the page title, a subtitle, settings and share buttons, and then the filters — all inside the dark header. On Leaderboards the first result appears at about 440 px, more than half the screen; on Events the calendar starts at about 380 px.
Several subtitles are instructions rather than information ("Switch between List, Month, and All events views."), and the settings and share buttons repeat on every screen.
The events list is a desktop table on a phone
The list view keeps its five-column table at 390 px. Dates wrap onto three lines inside a circle, the Location column is cut off at the edge, and the only hint is "Scroll sideways for more columns →" at the very bottom of the list.
In month view, a day with an event shows only a small dot; the event name appears below the calendar after tapping the day. That works, but the dot is the only cue.
Small things that make it feel unfinished.
| Finding | Detail | Confidence |
|---|---|---|
| Share sends people to sign-in | The Share screen says "They can create a Fan account using this link", but the link and QR code open /login, not the Fan sign-up | Confirmed |
| Two controls for the same choice | Sport is a pill button on Events and Leaderboards but a dropdown on Hall of Fame | Confirmed |
| Two actions, no explanation | Meet detail shows a "Final results" link and, under it, a "View Details" button, with nothing saying how they differ | Confirmed |
| Truncated labels on phones | "Girls High" in the team dropdown; "WBL Champio…" in Season top marks | Confirmed |
| Password strength says "Weak" before typing | Profile shows "Strength: Weak" under an empty new-password field | Confirmed |
| Calendar highlight spills over | On Home (desktop) the highlighted "today" tile overlaps the next day's column | Confirmed |
| Same athlete, same mark, twice | With one result in the season, Home shows the identical line under Season top marks and Personal records | Confirmed |
| Different password rules per sign-up | Student and Fan say "min 8 characters"; Coach says nothing; Profile requires upper, lower, number and symbol | Confirmed |
| No way back to the main site or help | Sign-in has no link to truerecordsports.com, the FAQ or support | Confirmed |
| Fan sees full results | This beta Fan account sees every result with names; the FAQ says free accounts see the top 3. To confirm whether that is the beta subscription | Hypothesis |
Fast once loaded; the first visit is slow on a phone.
| Measure | Reading | Instrument |
|---|---|---|
| Sign-in page, mobile (lab) | Performance 78 · LCP 4.6 s · FCP 2.9 s · 633 KiB | Lighthouse 12.8.2 |
| Signed-in screens, desktop | 0.8–1.5 s to network idle | browser timing |
| Errors in the browser console | 0 on the 7 signed-in screens | browser |
| Third parties | Cloudflare Web Analytics only | network log |
The app makes few requests and no console errors, which is better than most. The first load on a phone downloads the whole application before showing the sign-in form; splitting the sign-in screen from the rest of the bundle would bring it under the 2.5 s target. Not measured: field data from real phones.
Accuracy first, then the phone, then the long tail.
Fix what the screens say
- School name in team standings; one clear scoring sentence
- Meet status from date and results
- Words instead of HS_BOYS codes; hide empty Points
- Start time vs race schedule; hide empty parking price
- Terms and privacy links on sign-up; 13+ confirmation
Accessibility fixes in shared components
- Skip link to main content on every screen
- aria-pressed on the level switch
- Points ribbon contrast; logo link name
- Event names in the Details buttons
- <main> on sign-in and sign-up; coach autocomplete
Phone layout
- One-line header; filters behind one button
- Events list as cards under 600 px
- Event counts on calendar days
- Share link to Fan sign-up
- One sport control everywhere
Prove it
- Screen-reader pass (VoiceOver iOS, NVDA)
- Audit of the coach and athletic-director workspaces
- Roster search reviewed for what it returns, and to whom
- Accessibility statement with the standard and a contact
- Re-run this audit; numbers here are the baseline
What this document does not know.
- One role. A Fan account, signed in by CleverWave's own team in a separate browser. Coach, athletic-director and athlete screens were not seen.
- Read-only. We navigated, changed filters, opened expanders and dialogs, and pressed Tab and Escape. Nothing was submitted, uploaded, shared, edited or paid for. The roster name search was not used.
- Automated plus keyboard. axe-core and Lighthouse cover part of WCAG. No screen reader, voice control or switch device was used.
- One school, one sport. The data seen is Celina cross country, 2026. Other sports and seasons may behave differently.
- Privacy. Athlete names and the account email were replaced in every screenshot before capture. No athlete data is reproduced in this report.
- No legal assessment of ADA, FERPA or COPPA compliance.
Provenance. Measured 2026-11-08, desktop 1280 × 860 and phone 390 × 844.
Make the record,
match the promise.
CleverWave audits products against what they actually show and expose, prioritizes by what a buyer will notice, and delivers a plan calibrated to your team. Phase 00 is a week of fixes that change the first impression.
Book the conversation