CLEVERWAVE
●APP CHART · UX & ACCESSIBILITY AUDIT
2026·11·08 · CLEVERWAVE LABS · STATUS: DELIVERED
INDEX·006· AUTUMN '26·FIELD STUDY · PLATE VI

Built with care.
Let down by the details it shows.

The TrueRecord app is a mobile-first web app for schools, coaches, athletes and families: events, results, leaderboards and a hall of fame, all school-verified. Its foundations are unusually good for a beta — every field labelled, focus always visible, dialogs that behave. What lets it down is what it says on screen: a school column that shows a team name, raw codes in the results, a past meet still marked upcoming, an empty column on every results table. Twelve findings across eight signed-in screens and five signed-out ones, on desktop and on a 390-px phone.

TrueRecord Sports
truerecordsports.app
Fan account · desktop 1280 px · phone 390 px
2026-11-08
SECTION 01·THE BOTTOM LINE

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.

13screens
AUDITED: 8 SIGNED IN, 5 SIGNED OUT
0of 203
KEYBOARD STOPS WITHOUT VISIBLE FOCUS
100/ 100
LIGHTHOUSE ACCESSIBILITY, SIGN-IN PAGE
5errors
IN DATA SHOWN ON SCREEN
47of 47
RESULT ROWS WITH AN EMPTY POINTS CELL
8stops
BEFORE THE CONTENT, ON EVERY PAGE (NO SKIP LINK)
~440px
OF HEADER BEFORE THE FIRST RESULT ON A PHONE
0links
TO TERMS OR PRIVACY ON THE SIGN-UP SCREENS
FIELD NOTE · WHAT A DISTRICT WILL SEE FIRST

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.

SECTION 02·HOW TO READ THIS

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.

ConfirmedSeen or measured directly in the app.
LikelyStrong evidence, one instrument only.
HypothesisReasoned, not tested. A question for the product team.
BlockedNeeds a role we did not have (coach, athletic director, athlete).
Not measuredNobody has measured it. Not the same as "fine".
SECTION 03·FIX FIRST · ACCURACY AND TRUST

Three things a buyer notices in the first five minutes.

CRITICAL APP 01 Confirmed

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.

INSTRUMENT READING · TEXT AS RENDERED, 2026-11-08
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
→ FIX
Show the school name in the standings and the team as a label; explain the scoring once (place points, lower wins) and show the badge as a rank, not a celebration of a high number. Derive meet status from the date and results (a meet with a date in the past and no results is "Results pending"). Make "Start time" the first race or label it "Check-in"; hide empty fields such as parking price instead of saying "not provided".
CRITICAL APP 02 Confirmed

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).

INSTRUMENT READING · /parent/results (WBL Championships)
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
Meet results, desktop. Raw team codes, and a Points column with no values. Athlete names replaced.
Meet results, desktop. Raw team codes, and a Points column with no values. Athlete names replaced.
→ FIX
Map the codes to words ("High school boys · 2nd · 75 pts"). Hide the Points column when a meet has no individual points, or fill it. Use one heading per table ("Girls · High School · 5,000 m"). Name screens the same everywhere.
HIGH APP 03 Confirmed · search Hypothesis

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.

Student sign-up, phone. Roster name search before an account exists; no terms or privacy link.
Student sign-up, phone. Roster name search before an account exists; no terms or privacy link.
Sign-in, phone. Three account types, no help or link back to the main site.
Sign-in, phone. Three account types, no help or link back to the main site.
→ FIX
Add "I agree to the Terms and Privacy Policy" with links on every sign-up, and a 13+ confirmation on student sign-up. Require a school join code (or the QR the school hands out) before the roster search returns anything, and return only an exact match. Name the school in the heading.
SECTION 04·ACCESSIBILITY · ADA / WCAG 2.1 AA

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.

HIGH ADA 01 Confirmed

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.

INSTRUMENT READING · BUTTON STATE
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)
→ FIX
Reuse the Team/League component, or add aria-pressed to the level switch (WCAG 4.1.2).
HIGH ADA 02 Confirmed

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.

INSTRUMENT READING · KEYBOARD WALK, SIGNED IN (DESKTOP)
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
→ FIX
Add a "Skip to content" link as the first stop, targeting <main> (WCAG 2.4.1). Make the month grid one tab stop with arrow-key navigation between days.
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
WHAT PASSES · AND IT IS A LOT

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).

SECTION 05·MOBILE · 390 PX

Families use it in the stands. The phone layout makes them scroll for it.

HIGH APP 04 Confirmed

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.

Leaderboards, phone, full page. Four filters in the header before the first mark. Athlete names replaced.
Leaderboards, phone, full page. Four filters in the header before the first mark. Athlete names replaced.
Events list, phone. The table needs sideways scrolling; location is cut off.
Events list, phone. The table needs sideways scrolling; location is cut off.
→ FIX
Collapse the header to one line on phones (wordmark, title, menu); move settings and share into the menu; put filters behind one "Filter" button that shows the active choices as chips. Drop instructional subtitles.
MEDIUM APP 05 Confirmed

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.

Meet detail, phone. A clean full-screen sheet.
Meet detail, phone. A clean full-screen sheet. "Final results" and "View Details" sit together with no explanation of the difference.
→ FIX
Below about 600 px, show each event as a card: date, name, status and venue stacked, with the whole card tappable. In month view, mark days with the event count, not only a dot.
SECTION 06·POLISH · CONSISTENCY

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
SECTION 07·SPEED

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.

SECTION 08·EXECUTION

Accuracy first, then the phone, then the long tail.

PHASE 00
THIS WEEK

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
PHASE 01
WEEKS 1-2

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
PHASE 02
WEEKS 2-4

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
PHASE 03
BEFORE SALES

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
SECTION 09·LIMITS OF THIS AUDIT

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.

SECTION 10 · BEGIN

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