SmartSurf {{ mobileStatus }} {{ userInitial }}
/{{ spotName }}

{{ spotName }}

{{ spotLocation }}

{{ spotSport }} {{ spotEvidenceLabel }} Learned
{{ spotBannerTitle }}
{{ spotBannerText }}
Senlay live briefingfor {{ spotName }}
Evidence: {{ briefEvidence }}
State: {{ briefState }}
Action: {{ briefAction }}
What is known: {{ briefKnown }}
Why: {{ briefWhy }}
Local spot intelligenceSenlay catalog · static context {{ catalogPriorityLabel }}
{{ catalogLocalKnowledge }}
Launch reference{{ catalogLaunch }}
Operating radius{{ catalogZone }}
Preferred wind{{ catalogPreferredWind }}
Offshore sector{{ catalogOffshoreWind }}
Side-offshore sectors{{ catalogSideOffshoreWind }}
Thermal influence{{ catalogThermal }}
Primary season{{ catalogPrimarySeason }}
Transition months{{ catalogTransitionSeason }}
Seabed context{{ catalogBathymetry }}
Mapped local hazards
{{ h.name }}{{ h.severity }}
{{ h.description }}
Catalog data completeness
{{ m.label }}{{ m.value }}
Planned evidence inputs
{{ catalogSensorPlanText }}
These are the catalog's target inputs for this spot. Only providers listed in “What Senlay measured and compared” answered the current request.

Static spot knowledge is not a live measurement and never overrides current Senlay evidence, official warnings, or a beach check.

What Senlay measured and compared{{ sourceCountLabel }} {{ sourceCoreCountLabel }}
MODEL / PREDICTED
{{ sourceModelName }}
{{ sourceModelValue }}
Dashed blue line in the chart
SENLAY COMPARES
{{ sourceCompareValue }}
{{ sourceCompareTrust }}
HARDWARE / MEASURED
{{ sourceMeasureName }}
{{ sourceMeasureValue }}
{{ currentDistance }} away · {{ currentUpdated }}
{{ sourceSelectionRule }}
{{ p.name }}{{ p.kindLabel }}{{ p.useLabel }}
{{ p.reading }}
{{ p.readingMeta }}
{{ p.detail }}
{{ p.name }}{{ p.useLabel }}
{{ p.role }}
{{ timelineTitle }}
{{ gridLayer }} WIND m/s {{ rangeLabel }} {{ differenceValue }} m/s RIDER FIT 70% BEST FOR YOU 13:30 · 91% TRUST {{ trustLayer }} {{ nowLabel }} ◀ OBSERVED FORECAST ▶ {{ timeLayer }}
POINT {{ chartHoverTime }} Measured {{ chartHoverObserved }} m/s Forecast {{ chartHoverForecast }} m/s Forecast gust {{ chartHoverGust }} m/s Difference {{ chartHoverDifference }} m/s Move across the chart to inspect each hour
Forecast
{{ forecastWind }} m/s
Reality
{{ currentWind }} m/s
Difference
{{ differenceValue }}
Trust
{{ trustLabel }}
Your fit
{{ fitValue }}
Observed Senlay selected forecast {{ rangeLegendLabel }} Hatched = future
Solid white: timestamped physical observation from {{ currentSource }}.
Dashed blue: model value selected by Senlay for the saved coordinate.
Shaded gap: difference where observed and forecast timestamps overlap.
Green band: {{ rangeExplanation }}
Evidence now{{ eventCountLabel }}
{{ s.t }} {{ s.text }}
{{ matchTitle }}
{{ m.k }}
{{ m.v }}
{{ matchSummary }}
Forecast now
{{ forecastWind }}
m/s {{ forecastDirection }} · Senlay selected forecast
Observed now
{{ currentWind }}
m/s {{ currentDirection }} · {{ currentSource }}
Difference
{{ differenceValue }}
m/s at the latest comparison
Status
{{ comparisonStatus }}
{{ comparisonNote }}
Forecast vs observed · last {{ fvrHrs }}
{{ dGridLayer }} WIND m/s Δ {{ dTimeLayer }}
Observed Forecast The gap Δ beyond your {{ dThreshLabel }} threshold
Want to be told when this happens?
Create or edit a Watchdog for {{ spotName }}. It will evaluate this saved coordinate against live Senlay evidence.
{{ modelPanelTitle }}
{{ modelPanelSummary }}
{{ modelPanelState }}
Model comparison · now{{ modelObservedLabel }}
{{ m.name }} {{ m.run }} {{ m.err }} m/s vs reality
{{ m.now }} m/s
{{ m.bias }} Compared with {{ m.hit }}
{{ modelFooter }}
Place pattern is still learning
Senlay is collecting timestamped observations near this coordinate. No correction is applied until enough comparable days exist; the empty state is intentional, not a forecast.
Typical ramp start
{{ patternOnsetState }}
{{ patternOnset }}
Typical daytime peak
Learned
{{ patternPeak }}
History coverage
{{ patternDaysLabel }}
Today peak {{ patternTodayPeak }} · {{ patternGust }}
Recent observations vs learned rhythm{{ patternDaysLabel }}
{{ behGridLayer }} WIND m/s {{ behTimeLayer }}
Normal range for this spot Typical day Today, measured
What is unusual today
{{ patternSummary }}
No Watchdog rules for {{ spotName }} yet
Create a rule to monitor this exact coordinate and notify you when your wind or wave range is supported by current evidence.
{{ w.name }}{{ w.spot }} {{ w.state }}
{{ w.sentence }}
When
{{ w.when }}
Where
{{ w.where }}
Last triggered
{{ w.last }}
Right now{{ currentState }}
{{ currentWind }} m/s
{{ currentDirection }} {{ currentDirectionDeg }}°
Gust{{ currentGust }} m/s
Gust factor{{ currentGustFactor }}
Updated{{ currentUpdated }}
Source{{ currentSource }}
Distance{{ currentDistance }}
{{ trustLabel }} trust {{ spotEvidenceLabel }}
Forecast Trust
{{ trustScore }}
{{ trustLabel }}
{{ trustSummary }}
Speed match{{ speedMatch }}
Direction match{{ directionMatch }}
Place history{{ consistencyLabel }}
Obs freshness{{ freshnessLabel }}
Evidence inputs{{ modelPanelState }}
{{ m.name }} {{ m.v }}
Current difference{{ differenceValue }} m/s
{{ modelFooter }}
Active Watchdogs{{ spotWatchCount }}
{{ w.name }} {{ w.state }}
{{ w.rule }}
Delete "{{ w.name }}"?

Welcome back, {{ userName }}

Your SmartSurf account is connected to live Senlay watersports evidence

Saved spots
{{ overviewSpotCount }}
Exact coordinates in your account
Active Watchdogs
{{ overviewWatchCount }}
Background condition monitors
Inbox updates
{{ overviewEventCount }}
Real Watchdog transitions
Ride sessions
{{ overviewSessionCount }}
Saved in this Rider account
Your watersports spots
Add your first spot

SmartSurf needs an exact latitude and longitude before it can ask Senlay or monitor conditions.

Live actions

Good afternoon, Viktor

SmartSurf checked your 3 spots · 1 window at risk · 1 forecast change

Windows today
1
An Bang · at risk
Needs attention
1
Divergence ongoing 47 min
Spots watched
3
1 verified · 1 learned
Next briefing
06:30
Tomorrow · 3 spots
For you
Quick actions

7-Day Outlook

Best window per day at An Bang — Watchdogs can now alert on any of these, not just today

{{ outlookTrustLbl }}
{{ d.label }} {{ d.horizon }} {{ d.status }}
{{ d.line }}
{{ d.fit }}
{{ d.window }}

Confidence fades with distance: today and tomorrow use live observations to verify the forecast; day 3+ is forecast-only until it enters the 48-hour verification window. Watchdogs with a multi-day look-ahead re-check every day and move up as soon as a day is close enough to confirm.

/Monday 12 May · 06:30
Morning Briefing · 06:30 · 3 spots checked overnight

Good kite potential today.

Best for you
13:2016:00
An Bang · 2h 40m
Rider match
91%
Strong
Forecast trust
High
Matching well
Momentum
Building as expected
Overnight
3
Meaningful changes
For youBased on 11 sessions
Today's 13:20–15:50 window is a strong match for your riding profile. Similar conditions occurred during 3 sessions you rated Good or Excellent. Wind stability is expected to be slightly worse than during those sessions. Your usual 9 m² setup may be relevant if conditions develop as forecast.
Current beach
4.8 m/s NE
Gust6.1 m/s
Updated4 min ago
Forecast vs realityMatching
Forecast now5.3 m/s
Observed4.8 m/s
Difference−0.5 m/s
ModelsGood agreement
ECMWF
8–10 m/s ENE
GFS
7–9 m/s ENE
ICON
9–11 m/s E
Since your last briefing
{{ o.t }} {{ o.text }}
SmartSurf summary
Conditions currently support a good chance of a session this afternoon. Forecast and observations are matching well. No important warning signals detected.
Delivered to Push · Viktor's phone · and Email · viktor@example.com at 06:30

Inbox

Everything SmartSurf noticed, whether or not it interrupted you

/Forecast divergence

Forecast divergence

An Bang · Kitesurf · ongoing for 47 minutes

Ongoing
Forecast
11.8
m/s ENE · ECMWF
Observed
7.1
m/s ENE · station
Max difference
−5.1
m/s at 14:38
Duration
47
minutes and counting
Why SmartSurf told you
You asked to be notified immediately when observed wind differs from forecast by more than 2.5 m/s for at least 30 minutes. That threshold was crossed at 14:25.
Started14:05
Threshold crossed14:25
Your threshold2.5 m/s / 30 min
Station distance0.8 km
Station age2 min
Recent comparisons4 of last 5 off
What it means for you
Wind dropped below your 7 m/s minimum at 14:47. Your afternoon window is no longer developing normally. Rider Fit fell from 91% to 42%.

For you: wait. Current wind remains below the conditions of your successful sessions at this spot.
Delivery
Push · Viktor's phoneDelivered 14:25
Telegram · @viktorDelivered 14:25
{{ fbPrompt }} {{ fbTag }}

My Spots

{{ spotsCountLabel }}

{{ spotDeletedNote }}
{{ s.fit }}
Your fit
{{ s.trust }}
Stop watching "{{ s.name }}"?

Ask SmartSurf

Answers use live Senlay evidence for your exact watersports spot

Live answer{{ askVerdict }}
{{ askAnswer }}

• {{ reason }}

Watchdogs

What SmartSurf is looking for, and where it sends the answer

{{ w.name }}{{ w.spot }} {{ w.state }}
Delete "{{ w.name }}"? SmartSurf stops looking for this. {{ w.delNote }}
{{ w.sentence }}
When
{{ w.when }}
Where
{{ w.where }}
Last triggered
{{ w.last }}
SmartSurf has no Watchdogs running

Every Watchdog you deleted is gone, so nothing will interrupt you. Your spots are still monitored — you just won't be told about them.

{{ deletedNote }}

Rider Profile

{{ profSub }}

Personalization: Learning
What SmartSurf has learned about you{{ learnedNote }}
{{ l.k }}
{{ l.text }}
Corrected by you
Who you are
Level
Weight
{{ pfKg }} kg
Years riding
{{ pfYears }}
Name
{{ pfName }}
Level
{{ pfLevelName }}
Weight
{{ pfKg }} kg
Home spot
{{ pfHome }}
Years riding
{{ pfYears }}
Email
{{ pfEmail }}
Phone
{{ pfPhone }}
Home country
{{ pfCountry }}
Timezone
{{ pfTz }}
Emergency contact

Notified only if a Watchdog escalates — a drift or separation alert your gear can't resolve on its own.

Contact name
{{ emName }}
Relationship
{{ emRelation }}
Phone
{{ emPhone }}
Your conditions
Minimum wind
{{ cMin }} m/s
Maximum wind
{{ cMax }} m/s
Shortest useful window
{{ cDur }} min
Max gustiness
Directions that work
Your kites
Avoid offshore wind
{{ condSentence }}

Changing these re-scores every window and every Watch that uses your conditions — including the ones already running today.

Wind range
{{ cMin }} – {{ cMax }} m/s
Direction
{{ cDirText }}
Min window
{{ cDur }} min
Max gustiness
{{ cGustName }}
Kites
{{ cKiteText }}
Avoid offshore
{{ cOffName }}

My Sessions

11 sessions · 4 spots · 27 hours on the water · 7 rated Good or Excellent

Your sessions in condition space11 sessions
{{ csGrid }} {{ csToday }}
Excellent Good Okay Poor Today, 14:52 Your successful zone
What the shape of this tells you
Your Excellent sessions cluster tightly between 8 and 9.5 m/s with a gust factor under 1.25. Wind alone doesn't predict a good day for you — steadiness does.
Sweet spot wind
8–9.5
m/s
Gust ceiling
1.25
factor
Today sits
Outside
7.1 m/s at 1.32

Today's point falls below your wind range and above your gust ceiling — the two reasons your fit dropped to 42%. This is the evidence behind that number.

May 20254 sessions this month
{{ c.day }} {{ c.label }}

Sessions you logged, coloured by how you rated them. Days SmartSurf flagged a window you didn't ride are outlined.

{{ s.spot }} {{ s.sport }} {{ s.rating }}
{{ s.when }} · {{ s.dur }}
{{ s.cond }} · {{ s.gear }}
{{ s.match }}
Match then

My Tracker

Live GPS is private to your SmartSurf account. Environmental context comes from Senlay at the latest tracker position.

+ Add tracker
Loading your tracker status and the latest position…
{{ trackerError }}
{{ trackerBackendBanner }}
SEPARATION ALARM
{{ trackerPairAlarmText }}
Tracker account
{{ trackerAccountStatus }}
{{ trackerAccountExplanation }}
Devices
{{ trackerDeviceCount }}
{{ trackerDeviceSummary }}
Remote connection
{{ trackerConnection }}
Server-to-server only · never exposed in this browser
No tracker is linked yet

When you activate a SmartSurf Tracker, this page will show its latest GNSS position, route history, and Senlay conditions at that exact coordinate. SmartSurf does not invent a location when no device has reported.

Activate a tracker
All tracker positions{{ trackerFixLabel }}
Online tracker Offline / last-known tracker Requested route history Senlay source location Click a tracker for full telemetry.
{{ trackerNoPositionText }}
Route history
Latest fix
{{ trackerFixTime }}
Speed
{{ trackerSpeed }}
GPS accuracy
{{ trackerAccuracy }}

{{ trackerHistoryExplanation }}

Your devicesChoose one
+ Add another tracker
{{ trackerSelectedName }}{{ trackerSelectedOnlineLabel }}{{ trackerSelectedType }}
Battery{{ trackerBatteryLabel }} {{ trackerChargingIcon }}{{ trackerChargingLabel }}
GSM signal{{ trackerGsmLabel }}raw RSSI
GPS satellites{{ trackerGpsCenter }}{{ trackerGpsLabel }}latest report
Accuracy{{ trackerAccuracy }}reported radius
{{ trackerPositionSource }}
Fix {{ trackerFixTime }}
Device settingsname · role · pair · remove
Device pair
{{ trackerPairHeadline }}
{{ trackerPairStatusText }}
metres apart
minutes
metres apart
minutes

Both trackers need fresh GPS positions. SmartSurf starts the timer only while their measured distance stays above this limit.

Add a second tracker before creating a rider/board pair.

Remove {{ trackerSelectedName }} from this SmartSurf account? This stops account access but does not erase its historical reports.
Senlay at tracker position{{ trackerFusionState }}

{{ trackerFusionExplanation }}

Wind
{{ trackerWind }}
Waves
{{ trackerWaves }}
Evidence timestamp{{ trackerEvidenceTime }}
Active source layers{{ trackerEvidenceCount }}
Forecast trust{{ trackerTrust }}
Show evidence providers
{{ s.name }}{{ s.label }}

Where should SmartSurf reach you?

Channels are transports. Destinations are specific endpoints. Any event can route to several.

{{ c.name }}{{ c.plan }}{{ c.state }}
{{ d.label }} {{ d.uses }} {{ d.state }}
Quiet hours
From
22:00
Until
06:00
Immediate alerts respect quiet hours. Briefings you explicitly scheduled inside this range still arrive.

Observation Sources

Real measurements are what let SmartSurf verify a forecast

An Bang School StationHealthy
Type
Weather station
Distance
0.8 km
Updated
2 min ago
Used by
An Bang Watchdog
An Bang Beach CameraHealthy
Whitecaps few Wave 0.4 m
Fixed installation · south end of the bay · new frame every 60 s
TypeCamera · station class
Visual wind estimate6–8 m/s
Sensor says7.1 m/s
AgreementConfirms
AddsWave · chop · crowd
Cannot seeGustiness
The camera confirms what a wind sensor physically can't. When the two disagree, SmartSurf lowers confidence rather than picking a favourite.
Cua Dai Community SensorStale
Last observation 47 minutes ago. SmartSurf is not currently using this source for verification.
My KheNo source
SmartSurf can watch forecasts here, but cannot currently verify them against conditions at the spot. Nearest usable observation is 31 km away and 52 minutes old.
/Connect a source

Make My Khe verifiable

A forecast becomes checkable the moment there's a real measurement near the spot

Right now SmartSurf can watch forecasts at My Khe but can't prove them. The nearest usable observation is 31 km away and 52 minutes old — too far and too stale to verify what's happening at the beach.
Where will the measurement come from?
{{ connTitle }}{{ connState }}
{{ s.n }} {{ s.t }} {{ s.d }}
What this unlocks at My Khe
Forecast vs RealityUnlocks
Forecast Trust scoringUnlocks
Divergence alertsUnlocks
Spot behaviour learningAfter ~30 days of history
Spot levelForecast → Verified

Sources you contribute stay yours. If you share a station with the community, SmartSurf shows the spot's conditions to others — never your sessions, gear or personal windows.

Sport Profiles

One rider, several sports. Each carries its own conditions, gear and windows.

{{ p.name }} {{ p.state }} {{ p.learn }}
{{ r.k }}
{{ r.v }}

{{ p.note }}

Watches, briefings and windows are always scoped to one sport. A day that's useless for kite can be excellent for surf at the same spot — SmartSurf never averages them into one score.

/Forecast Sources

Forecast Sources

Which models drive your forecast here — and what still gets checked against reality

Windy and Windguru don't have their own weather data — they display the same underlying models listed below. Picking a model here changes what your forecast, alerts and briefings are built from, whichever app you're used to checking.
SmartSurf suggests {{ fsRecommendName }} as your primary model
Closest to observed reality in {{ fsRecommendStat }} at An Bang.
{{ m.name }} {{ m.primaryPillLbl }}
Also shown by {{ m.apps }}
{{ m.hint }}
{{ m.accuracy }}% historical accuracy
Forecast Trust always compares your primary model against real observations — station, camera, or whatever sources this spot has. Choosing a model changes the forecast you're shown; it never changes what SmartSurf verifies it against.
This is what you configured
{{ fsSentence }}

Units

Everything in SmartSurf follows these — including alerts, briefings and shared pages

Live preview · An Bang right nowUpdates as you choose
Wind
{{ uWind }}
Gust
{{ uGust }}
Wave
{{ uWave }}
Water
{{ uTemp }}
Best window
{{ uTime }}
{{ g.label }} {{ g.hint }}
/New briefing

Briefing Builder

A briefing is a standing appointment: these spots, at this time, in this much detail

Which spots?

No spots yet — add one below.

{{ s.name }} {{ s.level }} {{ s.hint }}
Times
{{ t.val }}
Days
What should it contain?

{{ bbSportNote }}

Deliver to
This is what you'll get{{ bbReady }}
{{ bbSentence }}
Preview · {{ bbFirstTime }}
{{ bbHeadline }}
{{ p.k }}{{ p.v }}

System States

What SmartSurf shows when it is working, waiting, broken, or genuinely doesn't know

LoadingTransient

Skeletons keep the layout still. SmartSurf never shows a spinner where a number will appear — the shape of the answer arrives before the answer.

Insufficient evidenceHonest
SmartSurf can't verify this yet

Nearest usable observation is 31 km away and 52 minutes old. The forecast is shown, but not confirmed.

EmptyFirst run
No spots watched yet

SmartSurf has nothing to watch. Add the spot you check most often and it starts monitoring immediately.

ErrorRecoverable
Couldn't reach the forecast provider

Showing the last successful run from 06:00, 8 hours old. Your Watches are still running against observations.

The rule behind all four
SmartSurf never fills a gap with a confident-looking number. A missing measurement is shown as missing, a stale one is shown with its age, and a broken source says what it broke and what still works without it.
{{ toastMsg }}