Salt Spring Island Sailing Club
Volunteerism, the way the club has always done it.
One of the oldest traditions at SISC is that everyone commits. Members keep the docks running, the boats ready, the regattas on schedule, and the next generation on the water. This tool exists to honour that tradition — not replace it, not police it. Just to make it easier to see, fairer to share, and lighter for the volunteers running the show.
What this is — and what it isn’t
What it is
- A way to see who’s pitching in, so we can thank the right people.
- A way to share the load fairly so it doesn’t always fall on the same five people.
- A way to lower the barrier for anyone who wants to help but didn’t know where to start.
- A way to give coordinators a clear picture without making them chase paperwork.
What it isn’t
- Not surveillance. Not Big Brother.
- Not another app, not another login, not another tab to remember.
- Not a database of personal data — we collect the minimum and reveal even less.
For the volunteer: meet members where they already are
The hardest part of any tracking system is the friction between doing the work and recording the work. So we removed almost all of it. There’s no app to install, no account to make, no portal to learn. Members log time the same way they already talk to each other — a quick text or a casual email, in their own words.
An actual message that works
“Did 5 hours rigging Saturday and another couple hours on the dock Sunday morning.”
That becomes two separate entries on the right person’s record, dated correctly, tagged rigging and dock, with a friendly confirmation reply explaining what was logged. Nobody had to fill out a form.
Text or email
Whichever channel is already on their phone. No new accounts.
Plain English
No date pickers, no dropdowns. Multi-session messages get split into the right number of entries automatically.
STATUS, UNDO, LIST
Three keywords cover progress, mistakes, and recent history. That's the entire interface.
Friendly receipts
Every entry gets a confirmation reply with running totals so members feel seen.
For the coordinator: less typing, less chasing, more thanking
Volunteer coordinators are themselves volunteers. The system quietly handles the boring parts so they can spend their time on the parts that matter — recognizing contribution and inviting the next round of help.
Auto-matching
When a known member texts or emails, hours are credited automatically. No manual entry.
Auto-linking
When a new sender's name matches the roster, we link them on the spot. The coordinator just confirms.
A single review queue
Anything we couldn't handle automatically lands in one place with a reason: 'couldn't match sender,' 'has unverified entries,' 'auto-matched — confirm.'
Reply in the app
Coordinators can reply to a member's email or text right from the message view, with proper threading on the member's side.
Clean reports
Year-by-year totals, hours by tag, by member, by moorage status. CSV export for board reports.
Reminders that aren't nagging
Periodic, friendly nudges go out to members below their goal — once, not weekly.
Security, privacy, and the principle of least drama
Member contact information is sensitive even within a close-knit club. We treat it that way at every layer.
No personal data in replies, ever
The bot never echoes a member's full name, email, or phone number back to them. If the language model tries, a regex scrubber strips it before sending. Replies refer to 'you' and 'this email address,' not by name.
Coordinator info stays with coordinators
When an unmatched sender writes in, we tell them we 'think we know which member to attach it to' — but we never name the candidate. The match is reviewed inside the admin portal, not over email.
Hours stay 'unverified' until confirmed
Anything auto-linked by the bot is held as unverified, attached to the member's record but flagged for a coordinator's eyes. A wrong guess can never silently appear in someone else's totals.
Rate-limited and de-duplicated
Burst senders get a single, polite slowdown reply rather than a wall of acknowledgments. Webhook retries are de-duplicated so a slow network doesn't double-count anyone's hours.
Authenticated access for coordinators
The admin portal is gated by Clerk single sign-on. Permissions are managed in-app, not in environment variables — no shared 'admin password' floating around.
Built on a hardened, audited stack
Vercel for hosting, Neon Postgres for storage, Resend for email, Twilio for SMS, OpenAI via the Vercel AI Gateway for parsing. Every dependency is a managed service with its own security and uptime story.
Open and inspectable
The code that runs the bot — including every reply it sends and every rule it follows — is in the club's repository. Nothing is hidden behind a vendor's black box.
The accountability piece, said plainly
Accountability isn’t about catching anyone out. It’s about making sure the people who consistently show up don’t feel taken for granted, and giving the rest of us a clearer picture of what we’re actually being asked to chip in. When the work is visible — and visibly fair — more people join in.
That’s the whole pitch. A system that adds visibility without adding workload, that reminds us we’re a club built on showing up, and that gets out of the way the rest of the time.