Surf schools running 4 lessons/day across 3 instructors + 80 boards pay FareHarbor 6% commission ($18k+/year) or Acuity $20–50/month ($240–600/year) but neither understands conditions-aware booking (swell height, wind, tide, lesson level match), crew dispatch by instructor skill (intermediate or advanced break?), gear sizing by student weight/experience, e-sign waivers, group photo upsells, or weather refund automation. That's $30k+/year in manual work + lost revenue.
FareHarbor takes 6% commission ($15k–20k/year for a 4-lesson-day school). Acuity runs $20–50/month ($240–600/year). Neither platform understands the fundamentals of a surf school: you don't just "book a lesson" — you book a lesson at a specific break (Surfers Paradise, Burleigh, Tallebudgera, Coolangatta on the Gold Coast), at a specific time window (dawn patrol, mid-morning, afternoon), on a specific swell/wind condition (offshore 2ft clean vs onshore chopped 4ft closeout), with an instructor matched to that condition and your student's level (beginner needs 2ft+ and a patient coach; intermediate handles 3–4ft; advanced wants the gnarliest swell of the week), on boards sized for your weight and experience (9ft foam for a 90kg beginner vs 5'10" thruster for a wiry 65kg intermediate), signed into a liability waiver (e-signature before lesson), photographed as a group (SMS upsell: $15 per shot, digital delivery, 60% attachment), and refunded automatically if the BOM predicts unsurvable conditions or the swell drops below minimum. FareHarbor handles: "book a time slot, charge card, send confirmation." It doesn't ask "what's the swell forecast, what's the wind direction, does this instructor specialize in this break, is that student beginner or advanced, what boards do I deploy, did the waiver get signed, did the family buy photos, did the weather change?" Velocity X custom owns all ten.
Six Features Custom Surf School Platform Delivers
1. Conditions-Aware Booking — Swell Height, Wind Direction, Tide, Break Maturity
Customer opens booking site (Monday 6am). System fetches live swell forecast (Magic Seaweed API or Surfline): [Tuesday 8am: Surfers Paradise = 2ft clean, light offshore, mid-tide, beginner-friendly], [Wednesday 10am: Tallebudgera = 3–4ft, NE swell, light onshore, intermediate], [Thursday 6am: Coolangatta = 4–5ft, strong offshore, low tide, advanced only]. System shows: [Tuesday 8am, Surfers Paradise, beginner lesson, $75 (2 spots left), instructor: Sarah (beginner specialist)], [Wednesday 10am, Tallebudgera, intermediate lesson, $85 (1 spot), instructor: Josh (intermediate focus)], [Thursday 6am, Coolangatta, advanced lesson, $95 (2 spots, SMALL GROUP)]. Customer selects: [Wednesday 10am, intermediate, self + friend, $85 each]. System checks: [2 riders, Tallebudgera Wed 10am intermediate = 2 spots reserved]. System displays: [lesson details: 3–4ft swell, NE direction (light offshore early, onshore by noon), mid-tide (better in morning), Josh leading, 5 students max (cozy crew), meeting 9:45am at car park, bring rash guard (sunny), 50min water time]. Customer books: [email confirmation + SMS reminder (Tue 6pm: "Heads up! Lesson tomorrow 10am Tallebudgera. Swell is 3–4ft clean. Wear rash guard. Arrive 9:45am.")]. Wind forecast changes (Wed 8am): onshore kicks in harder than expected, system auto-notifies instructors: [Tallebudgera deteriorating, consider moving lesson to The Pass (4km south, protected from NE wind). Josh confirms move.] System notifies students (Wed 8am): [Lesson moving to The Pass instead of Tallebudgera due to wind. Same time 10am, same instructor Josh, better conditions. Confirm or refund?] Students confirm. Lesson runs (Wed 10am, The Pass, clean 3ft). No missed bookings due to bad conditions, no instructor guessing "is this break good today?", no students showing up to mush.
2. Crew Dispatch by Instructor Skill + Lesson Level + Student Count
Three instructors: Sarah (beginner specialist, patient, safety-focused, 500+ lessons taught), Josh (intermediate to advanced, technical coaching, wave selection), Morgan (all-rounder, good with nervous kids, 3 years exp). Booking window: 8 lessons across 3 breaks (Surfers Paradise, Tallebudgera, The Pass) over a week. System tracks: [Sarah: max 4 students/lesson (ratio: 1:4 beginner-safe), prefers daylight (safety), available Tue–Fri 8am–12pm], [Josh: max 5 students/lesson, intermediate+ only, available Mon–Fri 6am onwards], [Morgan: max 4 students/lesson, beginner to intermediate, available Tue–Sat]. System auto-assigns: [Mon 6am Coolangatta 4ft (advanced, 3 students) = Josh], [Tue 8am Surfers Paradise 2ft (beginner, 4 students) = Sarah], [Wed 10am Tallebudgera 3–4ft (intermediate, 4 students) = Josh], [Thu 2pm The Pass 1.5ft (absolute beginner kid group, 3 kids) = Morgan]. System checks capacity: [Josh gets max 5 + 4 = 9 students Wed (acceptable), Sarah gets 4 (max reached)]. Dispatch complete, no instructor double-booked, lesson levels matched to skill, student-instructor ratios safe. If a cancellation happens (Josh unavailable Tue 6pm due to injury), system flags: [Tue 6pm lesson instructor-short, recommend cancel or defer to Wed/Thu]. Manager cancels, system auto-notifies customers: [lesson cancelled due to instructor unavailability, full refund issued, alternative Wed 10am offered]. Crew optimization: right instructor at right skill level, safety maintained, capacity respected.
3. Gear Sizing by Student Weight + Experience + Break Conditions
Booking complete: [Wed 10am Tallebudgera, Josh, 2 students]. System asks students (online intake form): [Student A: name Sarah, age 28, weight 65kg, experience beginner], [Student B: name Tom, age 35, weight 85kg, experience beginner]. System auto-recommends boards: [Sarah: 7'0" soft-top, 44L, beginner-friendly float, easy paddle], [Tom: 8'0" soft-top, 56L, higher float for larger frame, beginner-friendly]. Josh confirms (Wed 8am): [yes, use those sizes, I'll run both]. Lesson day (Wed 10am): Sarah and Tom arrive, boards pre-staged (7'0" and 8'0" soft-tops, leashes on, wax applied). Josh: [Sarah, this board is sized for you — easy to paddle, floats you nicely, won't tire you fast]. [Tom, bigger frame, bigger board, same float ratio, you'll be good.] Lesson runs smooth: correct board fit = faster learning curve, less frustration, safer (learner not fighting an undersized board). Advanced student books (different lesson): [Mike, 72kg, intermediate, 3–4ft swell]. System recommends: [5'10" thruster, 28L, performance board, intermediate speed]. Mike: [yep, that's my go-to board]. Lesson proceeds, Mike gets the snappy board suited to his level. Gear optimization: every student on the right board before entering the water.
4. E-Sign Waivers + Liability Capture + Parent Consent (Minors)
Student books lesson (Mon 6pm). System sends SMS: [booking confirmed, one thing: complete waiver before lesson. Link: bit.ly/waiver-12345]. Student clicks, opens DocuSign-integrated waiver: [I understand surfing risks including drowning, riptide, collision with board/rocks, sunburn, cold water. I release Velocity9 Surf from liability. I'm over 18 (or parent is signatory if minor).] Student signs electronically (full name, date), system captures digital signature + timestamp. Minor booking? System emails parent: [your child booked a lesson, complete consent form here: link]. Parent signs, system stores: [parent consent on file, student name, age, emergency contact, medical conditions (asthma?, allergies?)]. Lesson day: instructor checks system: [Mike — waiver signed Monday 6:15pm, no medical flags]. Lesson proceeds, liability locked-in digitally. Post-incident (hypothetical): student claims they didn't understand risks. System shows: [waiver signed electronically Mon 6:15pm, student IP address, timestamp, acknowledged 5 risk statements, signature confirmed]. Legal protection airtight. No paper forms, no "did we get the waiver or not?" fumbling.
5. Group Photo Capture + SMS Upsell + Digital Delivery + Revenue Growth
Lesson at Tallebudgera (Wed 10am): Josh, Sarah, Tom, 2 other intermediate students (5 total). Morgan (not teaching, but available for shoots) stationed at beach with iPhone. During lesson (10:15am): [waves peak, students paddle out, Morgan captures 12 photos of group paddling, paddling into waves, riding, duck-diving, wipeouts (fun moments)]. Morgan reviews (10:30am), selects 8 best shots, uploads to system. System auto-sends SMS to all 5 students (10:35am): [Great lesson! Group photos ready. $15 per shot, instant download, email delivery. Buy 3 save $3 (buy 3 = $42 instead of $45). Reply Y to order. Images expire Sunday.] Sarah replies: [Y buy 3]. Tom replies: [Y buy all 8 = $120]. Others: [Y buy 4]. System logs: [Sarah: 3 photos, $42], [Tom: 8 photos, $120], [others: 4 + 2 + 1 = 7 photos combined, $52]. Revenue captured: $214 from photo upsell (5-lesson day = 4 bookings minimum, 3–4 photo sales per lesson average = $50–70/lesson × 4 lessons/day = $200–280/day = $50k+/year incremental). Customers get memories, instructors get studio time cut (post-lesson, 20min), system processes payments automatically (Stripe integration), photos delivered via Dropbox link (SMS). Attachment rate: 60–70% of students buy. Photo revenue: passive, high-margin, captures 10–15% of annual lesson revenue.
6. Weather Refund Automation + Unsurvable Conditions + Forecast Monitoring
Booking Fri 10am (Wed night booking window). Forecast (Thu 6pm): [Fri swell = 0.5ft glassy, barely moveable, lesson is undeliverable for intermediate students]. System auto-flags: [Fri 10am lesson at risk, forecast unsurvable (0.5ft < 2ft minimum for intermediate)]. Manager opens system: [refund automatically? or offer rescheduling?]. Manager selects: [offer reschedule first, auto-refund if no reschedule accepted by Fri 6am]. System sends (Thu 8pm): [Fri forecast turned flat (0.5ft), lesson conditions inadequate. Reschedule to Sat 9am (forecast 3ft clean) or Sun 1pm (2.5ft)? Reply with preference or we'll refund Friday by 8am.] 3 out of 4 students reschedule to Sat. 1 student declines. System (Fri 7am): [Fri lesson, 3/4 students rescheduled to Sat, 1 customer does not reschedule]. Manager decision: [refund that one customer, remove from Fri]. Refund issued (Fri 8am): [unsurvable conditions, $80 refunded]. Fri lesson cancelled (0 students). Sat new cohort (3 rescheduled + 2 new bookings = 5 students, Sat 9am, 3ft clean). System logged: [Fri lesson cancelled due to weather, refund issued (1 of 4), Sat lesson growth (5 students)]. Refund automation prevents: angry customers showing up to mush, instructor wasted time, revenue lost completely. Rescheduling + refund flexibility = customer satisfaction, opportunity to grow lesson to larger cohort.
Australian Context — Surf Life Saving Accreditation, Pool Lifeguard, Water Safety Standards
Surf schools in Australia operate under state-based water safety regulations. NSW: Surf Life Saving NSW accreditation required for instructors, pool lifeguard qualification preferred, instructors must hold current First Aid + CPR. QLD: similar (Lifesaving Queensland), instructors hold Bronze Medallion + First Aid. WA/VIC: equivalent state bodies. System tracks: [each instructor, certifications, expiry dates (annual CPR, 3-year Bronze, etc.)]. Dashboard flags: [Sarah CPR expires June 2026, renew by May 31]. Manager sees alert (May 1): [Sarah's CPR expiring in 1 month, book renewal course]. Sarah completes course (May 20), uploads cert. System updates: [Sarah CPR valid June 2026–June 2027]. If Sarah's CPR lapses (missed deadline), system auto-disables her from dispatch: [Sarah CPR expired, no lessons assigned until cert resubmitted]. Regulatory compliance: zero manual tracking, auto-disabled when out-of-compliance. Insurance audits: [inspector asks "show me all instructors with current certs", system generates report (1 click): "All 3 instructors compliant as of today"].Accreditation proof airtight.
Six FAQs
What if a student is allergic to something or has asthma — how do you track that?
Waiver form includes: [medical conditions — asthma, epilepsy, heart condition, allergies, medications on board?]. Parent fills out (for minors). System stores: [Mike: asthma, uses inhaler pre-exercise]. Instructor opens system before lesson: [Mike, asthma flag — confirm he brought inhaler]. Mike confirms. Instructor carries spare inhaler (required standard). Lesson proceeds safely. Post-lesson: [Mike asthma check — lesson ok, no symptoms]. System logs. Next lesson (1 week later): [Mike asthma reminder — did you bring inhaler?]. Medical flags never missed, instructor forewarned, liability if incident occurs is mitigated (system shows medical flag was tracked).
Can I see revenue by instructor or by break?
Yes. Dashboard: [revenue by instructor (Sarah: $4.2k/month, Josh: $5.1k/month, Morgan: $3.8k/month)], [revenue by break (Surfers Paradise: $2.1k/month, Tallebudgera: $3.2k/month, The Pass: $1.8k/month)], [photo upsell revenue: $1.2k/month], [average lesson price by level (beginner: $75, intermediate: $85, advanced: $95)], [refund rate: 8% (mostly weather, 1–2 no-shows)]. Filter: [by date range, by instructor, by break, by lesson level]. Custom reports: [revenue per lesson-hour (Josh: $35/hour lesson time), instructor utilization (Sarah booked 18 hrs/week, capacity 20 hrs/week = 90%)], [seasonal trends (summer Nov–Jan higher volume, winter Jul–Aug lower)]. Data-driven decisions: if Surfers Paradise generating 35% of revenue, hire second instructor there, add morning slot. If photo upsells at 60% conversion, invest in better photographer (Morgan upgrade?), increase $15 price to $20 (test elasticity).
What if an instructor calls in sick — how do you reschedule fast?
Josh (10am Tallebudgera, 4 intermediate students) calls (9:30am): sick, can't teach today. Manager opens system: [Tallebudgera 10am, Josh = sick]. System checks: [Sarah available? — no, teaching 8am Surfers Paradise.] [Morgan available? — yes, available from 9am]. Manager assigns: [Morgan takes 10am Tallebudgera (all-rounder, can handle intermediate, 4-student ratio safe)]. Manager sends SMS to students (9:32am): [Josh sick, Morgan stepping in. Same lesson, 10am, same spot. Confirm or refund?] 3 confirm, 1 refund. System processes: [1 refund ($85), lesson proceeds with Morgan + 3 students]. Morgan prepped (9:40am, 20min before): [lesson brief, Tallebudgera conditions 3–4ft, student names + experience levels, no medical flags]. Lesson runs (10am). Rescheduling: instant, transparent, customers informed, revenue salvaged (75% of lesson still proceeds).
How do you handle repeat students — do they get a loyalty rate?
System tracks lessons per student (cumulative). Dashboard sees: [Tom booked 8 lessons this month]. Manager creates: [loyalty: after 5 lessons, 10% discount applies automatically]. System applies discount (Tom's 6th lesson): [normal $85, loyalty -$8.50 = $76.50]. Tom sees discount at checkout, feels valued. System flags: [after 10 lessons, offer "progression coaching" ($120/session, 1-on-1 with Josh, video analysis of technique)]. Tom upsell: enrolls in 4 sessions ($480). System also runs: [referral bonus: if Tom refers 3 friends who book, give Tom free lesson + $30 credit]. Tom tells friends, system tracks: [Tom referred Sarah, Mike, and Alex], [3 referrals completed], [Tom reward: free lesson + $30 credit (emailed)] Tom books free lesson. Loyalty + referral: retention improves, word-of-mouth grows, repeat revenue increases 15–20%.
Can instructors see their lesson schedule on their phone?
Yes. Instructor app (iOS/Android): [shows weekly schedule (calendar view), each lesson: time, break, student names + levels, conditions forecast, board sizes to prep, medical flags]. Sarah opens app (Mon 6am): [Tue 8am Surfers Paradise (beginner, 3 students: Alex 75kg, Bailey 60kg, Casey 70kg), forecast 2ft clean offshore, deploy 7'0" 8'0" 7'6"], [Wed 10am Tallebudgera (intermediate, 4 students), 3–4ft, deploy 5'10" 5'8" etc]. Sarah preps boards (Mon evening): [7'0", 8'0", 7'6" ready for Tue, wax applied]. Lesson proceeds (Tue 8am): students arrive, boards pre-ready, lesson efficient. Notifications: [the night before, 2 hours before, and 30min before each lesson]. Emergency: [if a lesson cancels or reschedules, Sarah gets SMS immediately]. Instructor engagement: scheduling friction removed, prep time reduced, lesson quality up.
What's the cost difference between FareHarbor vs custom platform?
FareHarbor: 6% commission on $400k/year revenue (4 lessons/day × $80 average × 250 operating days) = $24k/year. Acuity: $50/month × 12 = $600/year (cheaper but feature-poor, no swell integration, no crew dispatch, no photo upsell, manual waiver management). Custom Velocity X platform: build $140–180k once (conditions API integration, crew dispatch, gear sizing, waiver e-sign, photo upsell Stripe, weather refund automation, instructor mobile app, dashboard, customer portal, admin tools). Host + domain: $3k/year. Year-1 cost: $160k build + $3k host = $163k. Payoff: eliminate FareHarbor 6% ($24k saved), eliminate manual admin (2 hrs/week rescheduling, equipment tracking, waiver filing = 104 hrs/year × $30/hr = $3.1k saved), grow photo revenue (60% attach rate, $50–70/lesson × 4 lessons/day × 250 days = $50–70k new revenue, conservative 50% of potential = $25k incremental profit), grow ancillary (merchandise, video reviews, "progression packages" = $10k new revenue), reduce refunds (better conditions matching = 8% refund rate down to 4% = $8k saved on cancellations). Year-1 value: $24k + $3.1k + $25k + $10k + $8k = $70.1k. Year 1 net: $70.1k value – $163k cost = -$92.9k (paid back month 28 of Year 2). Year 2+: $70k/year value, platform cost $3k = 23x ROI. Running a surf school across 3 breaks with 80 boards and 4 lessons/day, tired of FareHarbor taking 6% and Acuity missing swell forecasts, crew dispatch, and photo revenue? Check Velocity X's custom surf school platform, or book a call to discuss your operation (how many lessons/day?, instructor count + certifications?, boards in inventory?, biggest pain point this week?).