RaceCommittee.app · Documentation

Docs

Everything you need to know to set up and run a regatta on RaceCommittee.app. Skim the table of contents, jump to what you need, or read top-to-bottom for the full picture.

Contents

Getting started

RaceCommittee.app is a web app. There’s nothing to install — open it in any modern browser on a phone, tablet, or laptop. Recording from the committee boat works best on a phone because that’s where the camera lives.

1. Sign in

Tap Sign in in the top nav, enter your email, and click the magic-link button. You’ll get an email titled “Your Race Committee App Sign-in Link” — tap the link, and you’re in. No password to remember. The link expires after about an hour; if it does, just request a new one.

2. Create your first regatta

From the top nav, tap the red Create new regatta button. You’ll walk through a short wizard that asks for the essentials — scoring style, classes, dates, recording method. The whole thing takes 2–3 minutes. Each regatta gets its own short URL (/e/<code>) that you can share with sailors, scorers, and shore.

3. Share the URL

From the event page, tap the Share icon (top right) to copy a link. Anyone with the link can view live standings; only the owner and invited scorers can edit. See Permissions.

Setting up a regatta

The /new wizard captures every setting up front so the on-water flow has nothing to ask about later. Each card is one question. You can change everything later from Settings (the gear icon on the event page).

Scoring approach

Classes

Pick from the preset library (popular one-design classes + PHRF / ORC / IRC fleets) or define a custom class. You can run multiple classes in one regatta — each scores independently. Classes lock after the first race is recorded, because changing them mid-regatta would corrupt scoring.

Event horizon

Throwouts

Drops kick in once a minimum number of races has been sailed. Two editable tiers, e.g.: drop 1 race if 5+ raced, drop 2 if 10+. Leave both blank for no drops. The engine picks the highest tier whose threshold is met.

Recording method

Pick what the RC will actually use on the boat:

You’re not locked in — any of the methods work at any time; this just sets which one is the “primary” button in the UI.

Special rules

The wizard’s special-rules card is opt-in. Defaults are sensible. Override when needed:

Recording methods in detail

Live photo (finish cards)

The fastest path. After each race, photograph the paper finish card. The app uses two parallel AI passes to read sail numbers and positions; agreement is high-confidence, disagreement gets flagged amber for you to confirm. Photos run through Anthropic’s Claude vision API and need an internet connection. About 80–90% accuracy on clean handwritten sails; flagged rows tell you which to double-check.

Live typed

Open On Water, see your roster as tappable chips, tap each boat in finish order. Works offline (drafts live on the device and sync when canonical results are ready). Best when conditions on the boat make photographing impractical.

Batch photo (scratch sheet)

Use a paper scratch sheet for the whole day. At the end, photograph the sheet. The scratch-sheet OCR endpoint reads check-in + every race’s finishers in one pass. Available for one-design fleets only — for PHRF events with multiple races, photograph one finish card per race instead (corrected-time math across a grid is too lossy to recover from).

Batch Excel

Download an Excel template from Templates, fill it in on a laptop after racing, upload from the Roster tab’s Upload filled-in file button. The hidden schema cell tells the importer which template type it is (registration, check-in, finish card, scratch sheet) and where the rows should land. Deterministic — no AI involved.

Roster & check-in

The roster identifies the boats / skippers eligible to be matched against finish-card data. The model differs between sail mode (one-off regattas) and series mode (weekly racing).

Sail mode (one-off regattas)

The roster is keyed by sail number. Each entry has a sail #, fleet, and (for handicap classes) a PHRF rating. Add boats manually on the Roster tab or upload a filled-in check-in sheet (PDF, photo, or Excel template). The roster is global across the whole regatta — you build it once at the start.

Series mode (weekly racing)

The roster is keyed by skipper name (a person, not a boat) because the same sailor might race a different boat each week. Each race night has its own per-night check-in: { skipper, fleet, boatNum, rating? }. Sail-number-to-skipper resolution happens at review time and scopes to the active race night’s lineup.

Scratching a boat

Tap the Scratch button on a skipper row to mark them as withdrawn for the day. Scratched boats are excluded from scoring + the tap-to-finish list and don’t take a DNF for races they didn’t sail. Tap Restore to bring them back. Different from Remove (the X icon), which deletes the entry from this day’s check-in entirely.

Merge skippers (series mode)

In Settings → Merge skippers, pick two names and re-key all check-ins + race finishers under one. Recovers from typos like C.Cubba / C.Cuba that the app didn’t auto-collapse.

On Water · capture & review

Selecting fleets

On the On Water tab, tap fleet chips at the top to select which classes this finish card covers. Most events are one class per card, but the app supports multi-class cards too.

Capturing finish data

Either:

Reviewing before transmit

The review screen shows each row with the read sail + matched roster boat (or unknown if no match). You can edit any field. Add DNF / DNS / OCS / DSQ rows for non-finishers. Set course distance (PHRF Time-on-Distance only). Once everything resolves, hit Submit race results.

Multi-recorder reconciliation

Turn on Multi-recorder mode in Settings when you want two or three independent recorders capturing the same race for accuracy. Each recorder takes their own card photo (or types their own entries). The app diffs the submissions row-by-row:

Only canonical (agreed-on or resolved) results sync to shore. The full audit trail of every recorder’s reading stays attached to the race row, so disputes after the fact can be reviewed.

Defer for video — if you can’t resolve a disagreement on the boat (close finish, want to check video), tap the defer button to transmit the agreed-on positions and leave the unresolved ones as pending-review for shore to handle later.

Scoring features

Low-point scoring

1st = 1 point, 2nd = 2, etc. Standard Appendix A. Lower total wins.

PHRF corrected time

Two formulas, picked per class:

Pursuit starts

Boats start at staggered times based on their rating; finish order = final order. No corrected-time math, but boats still need ratings (to compute their start time).

Throwouts

Configured as tiers in Settings. The engine looks at the total race count and applies the highest tier whose threshold is met. Sub-series can have their own drop config; season-overall has another.

DNF / TLE formulas

Default: DNF = entries + 1, TLE = finishers + 2. Override in Settings if your sailing instructions specify different.

Series qualification %

Series mode. Set a threshold (e.g. 50%); skippers with fewer races than that fraction of the season’s total appear in a separate Provisional table rather than the main standings.

Absent-night policy (series)

Series & sub-series

Series mode is for long-running weekly racing (Wednesday-night summer series, frostbite, etc.). It changes:

Sub-series

A series can be split into stages: Spring, Summer, Fall. Each sub-series has start/end dates and its own drop config. Races auto-assign to a sub-series based on race date, but the Scoring tab’s per-race override lets you reassign (or mark a race as standalone, excluded from both sub-series and season totals — useful for makeup or non-points races).

Scope selector

With sub-series defined, the Scoring tab gets a scope picker: Season (all races, season-overall standings) or each individual sub-series. The drops config applies separately to each scope.

Sharing & permissions

Permissions are per-user, per-regatta. Three roles:

RoleHow they get accessWhat they can do
OwnerCreated the regatta. Listed in events.created_by.Full read/write/delete. Includes Settings + scorer invites.
ScorerInvited by the owner via Settings → Scorers. Recipient claims at /scorer-invite/<token>.Can record races, manage roster + check-ins. Cannot touch event settings or delete.
ViewerAnyone with the URL when visibility is public or unlisted.Read-only. Sees Scoring tab; editing tabs are hidden.

Visibility

Printable templates

Four templates cover every job. Each is available as a printable HTML page and as a downloadable .xlsx file. See Templates library.

Multi-race PHRF scratch sheets aren’t supported — recording corrected times across a grid of races is too error-prone. PHRF series should upload one finish card per race instead.

Import & export

Importing data

Exporting data

Pricing & limits

TierRegatta limitFeaturesPrice
Free2 regattas per calendar yearEverything — AI OCR, series, multi-recorder, custom PHRF$0
ProUnlimitedSame as Free$9.99 / month
Beta: billing isn’t turned on yet — every account currently gets unlimited regattas. You’ll get plenty of notice before that changes. See /pricing for the full breakdown.

The free-tier cap is keyed on the regatta’s race date (not creation date), so a 2027 series created in December 2026 counts toward 2027. Invited scorers are always free for the invitee — only the owner pays.

Troubleshooting

The magic-link email didn’t arrive

Photo OCR misread a sail number

“Free tier is limited to 2 regattas per calendar year”

You’ve hit the cap. Either pick a date in a different calendar year (the year is taken from the regatta’s race date, not creation date), upgrade to Pro, or wait. During beta, contact us if you hit this unexpectedly — the cap shouldn’t be enforced yet.

I can’t see the Roster or On Water tabs

You’re viewing as a non-owner / non-scorer. Editing tabs are hidden in view-only mode. Ask the regatta owner to invite you as a scorer (Settings → Scorers → invite by email).

Sails resolve to “unknown” in review

The sail number isn’t on the active roster for this fleet. In sail mode, add it on the Roster tab. In series mode, the boat # might be assigned to a different skipper tonight than the one rolled forward from a previous night — check the current night’s check-in lineup.

Glossary

TermMeaning
PHRFPerformance Handicap Racing Fleet — the most common North American handicap rating system. Each boat gets a numeric rating; corrected times use it.
ToTTime-on-Time. Corrected time = elapsed × coefficient. Doesn’t need a course distance.
ToDTime-on-Distance. Corrected time = elapsed − rating × distance. Needs a course distance per race.
DNFDid Not Finish. Standard scoring: position = entries + 1.
DNSDid Not Start. Same scoring as DNF in most SIs.
DNCDid Not Come to the starting area. Series-mode concept.
OCSOn Course Side — recalled at the start.
DSQDisqualified.
TLETime Limit Expired — boats that didn’t finish within the time limit.
Sub-seriesA stage within a series — Spring / Summer / Fall splits, each with its own drop config and standings.
Throwout (drop)Worst race(s) excluded from a skipper’s total. Tier-based: e.g. drop 1 if 5+ races sailed, drop 2 if 10+.
ScratchMark a boat as withdrawn for the day — excluded from scoring + the tap-to-finish grid, no DNF for unsailed races.
Series modeApp mode for weekly racing. Skipper-name-keyed identity, per-night check-ins, retroactive entry by race date.
Multi-recorderTwo or three independent recorders capturing the same race. App diffs their cards and reconciles disagreements.
A8 / Appendix AThe Racing Rules of Sailing appendix that defines low-point scoring + tie-breakers.
Need more? How it works walks the first-time user through the workflow. FAQs covers the questions we get most often. Compare stacks RaceCommittee.app against Yacht Scoring, Clubspot, SailWave, and Regatta Network. Or email hello@racecommittee.app — we read every message.