Public Results Page Open โ no login
The results page is public and doesn't require a PIN. Anyone can view weekly results, current handicaps, season standings, and monthly prize winners.
๐ Weekly Results
Placings, points, and finish times for each week. Grouped by distance, gender, and age group.
๐ Season Standings
Accumulated points per runner across all weeks. Updates immediately after each week is processed.
๐ Current Handicaps
Each runner's current handicap for each distance. Updated after every race.
๐ Monthly Prizes
Prize winners per month (blocks of 4 weeks). Each runner can only win once per season.
Volunteer Portal Open โ no login
Members use this page to sign up as a volunteer for a race week, or to remove their signup if plans change. No PIN required โ it's designed to be shared directly with club members.
Signing up
- Choose the week Select the Sunday race week you want to help with. Past weeks are greyed out and can't be selected.
- Choose a task Pick the volunteer role from the Task dropdown โ Finish, Marshal, Numbers / Tokens, or General.
- Enter your name Type your full name as it appears in the club register.
- Save Tap Save Volunteer. Your signup is saved directly to the club's volunteer roster.
Cancelling a signup
If you can no longer volunteer, use the "Can't make it anymore?" section at the bottom of the page. Select the week and enter the name you signed up with, then tap Remove my signup.
Checking the roster
The current week's volunteer assignments are shown at the bottom of the page. The next three upcoming weeks are also shown so you can see where help is still needed.
Volunteer roles
| Role | What you do |
|---|---|
| Finish | Record finish order and confirm runners through the line. |
| Marshal | Guide runners safely around the course and key turn points. |
| Numbers / Tokens | Hand out tokens or record bib numbers at the finish. |
| General | Flexible help โ setup, pack-up, or wherever needed on the day. |
Race-Day Stopwatch Open โ no login
A phone-friendly stopwatch for the finish line volunteer. Records a lap time for each finisher โ no bib entry needed here, that's the scribe's job on the paper sheet. Works offline.
Using it on race day
- Open the page on a phone The stopwatch auto-detects the current week number from the season start date. No setup needed.
- Start the timer Tap Start when the first runner sets off (or at the gun). The clock runs from zero.
- Tap LAP for each finisher Each tap records the clock time at that moment. One tap per finisher, in order. No bibs โ just times.
- Sync Once the race is done, tap Sync. The lap times push directly to the app for the coordinator to review.
Main App PIN required
The coordinator's hub for entering and processing weekly results. Requires the shared app PIN. Contains multiple tabs covering the full race-day workflow.
Sections inside the main app
Typical post-race workflow
- Enter results on the Timesheet Type bibs + clock times, import the stopwatch CSV, or โ if using the scan station โ review the scan data that was submitted directly after the race. Mark any Wrong Hcp or Time Trial entries.
- Click Review Results The app runs sanity checks โ duplicates, missing entries, suspicious times, age group issues. Fix anything flagged before proceeding.
- Click Confirm & Save Writes the week's results, updates each runner's handicap, and recalculates the standings. Creates a per-week backup tab automatically.
Data import options
| Method | When to use |
|---|---|
| Manual entry | Small fields or corrections โ type bib and time directly. |
| Single-file CSV | One file with bib, distance, finish time columns. Most common import method. |
| Two-file CSV | Separate bibs file and times file โ useful when the scribe and timer work independently. |
| OCR Scanner | Photo of the handwritten race sheet โ the app reads it automatically. See OCR section below. |
| Scan station | After a scan station session โ tap Submit on the scan screen to push data directly to the app, or import the exported JSON file manually via the Timesheet import button. |
OCR Scanner PIN required
Upload a photo of the handwritten race sheet and the app will read it automatically using AI. Extracts bib numbers, distances, start times, finish times, and the handicap flag (normal, wrong hcp, or time trial).
- Take a clear photo of the sheet Good lighting, flat on a table, no shadows across the columns. The clearer the photo, the better the read.
- Upload on the OCR page Select the image file. The scanner sends it to the AI and returns a parsed table of results.
- Review the output Check the extracted values against the original sheet โ especially any ambiguous handwriting. Correct anything that looks wrong before importing.
- Import to the Timesheet Once reviewed, the OCR output feeds directly into the main app's Timesheet for processing.
Admin Panel Admin password
The admin panel uses a separate password from the main app PIN. It's for coordinator-level corrections and maintenance โ not needed for normal weekly processing.
โ๏ธ Correct results
Fix an individual result after a week has been saved โ change a time, swap a bib, or adjust a flag.
๐ Recalculate standings
Rebuild the full season standings from scratch after making corrections. Use this after any result change.
๐ Register a runner
Manually add a walk-up entrant who didn't fill in the Google Form before race day.
๐ท๏ธ Assign bibs
Assign bib numbers to PENDING runners who registered but didn't get an auto-assigned bib.
๐งน Clean blank rows
Remove empty rows from the Google Sheet that can sometimes appear after bulk operations.
๐ Monthly prizes
Compute and publish the monthly prize winners for a given block of weeks.
Scoring & Handicap Rules
How points, placings, and handicap adjustments work each week.
Points per position
| Position | Points |
|---|---|
| 1st place | 20 |
| 2nd place | 15 |
| 3rd place | 10 |
| 4th place | 8 |
| 5th and beyond | 5 |
| Volunteer (didn't run) | 8 (assigned to preferred distance) |
Placing groups
Each runner competes within their distance ร gender ร age group. Age is calculated as the age you turn in the current calendar year โ not your age on race day.
Handicap adjustments
After each race, your handicap is updated based on how your run time compared to the target finish time for your distance (1K = 26:00, 3K = 38:00, 6K = 44:00).
| How you ran vs target | Handicap change |
|---|---|
| Finished early (faster than target) | Increased by seconds early, rounded up to nearest 10s |
| 0โ60 seconds late | No change |
| 61โ120 seconds late | โ10 seconds |
| More than 120 seconds late | โ20 seconds |
Special entry types
| Type | Eligible for placing? | Points | Handicap adjusted? |
|---|---|---|---|
| Normal runner | Yes | Per position | Yes |
| Wrong hcp โ started late | Yes | Per position | Yes (adjusted formula) |
| Wrong hcp โ started early | No | 5 | Yes (adjusted formula) |
| Time Trial | No | 5 | Yes |
| Early runner | Yes | Per position | Yes |
| Early runner + volunteer | Yes | Higher of position points or 8 | Yes |
| DNF | No | 8 (if also volunteering) | No |
Monthly prizes
The season is divided into 6 monthly blocks of 4 weeks each. A prize winner is determined per age group ร gender ร distance for each block. Once a runner wins a monthly prize, they are excluded from winning again in future months that season.