Is this spot good?
activity: "kitesurfing"location: {lat: 36.013, lng: -5.604}
The user already chose Tarifa Balneario. The engine answers yes/no with a 0-100 verdict — booking-flow validation, rental-operator opening/closing decisions.
Decision-ready weather for outdoor bookings and operations.
One REST call returns a single 0–100 suitability score — with verdict, confidence, and full provenance — for any activity, at any place, at any time. Physics-first, deterministic, audit-logged. Built on 25+ peer-reviewed formulas across 20 physics namespaces.
Every business that operates outdoors lives or dies by the sky. The market answered with two extremes — neither of which is embeddable in a booking flow.
No forecast to read, no thresholds to remember. Send an activity, a coordinate and a time; get back a score, a verdict, a confidence band, the drivers behind it, and the provenance of every number that fed it.
The response is not a data dump. It is a decision: the score and verdict answer the question; the drivers say why; the source_type on each reading says how much to trust it. A wind value from a forecast model reads differently than a wave height from a buoy standing in the water. How every number is labelled.
Before you look for your sport, find your question. Every outdoor business asks one of these — and each maps to a shape the engine already returns.
Score + verdict + confidence per slot, so the flow can auto-hold, refund, or nudge to a better window.
Top-K ranked sub-spots for a region + activity — the unsafe ones dropped before ranking.
A hard safety gate with named reason codes — lightning, gale, hazardous AQI — that no other dimension can override.
The favourable window across a multi-day horizon, with a plain-language briefing of what makes it good.
Score any coordinate worldwide; discover ranked spots only where catalog coverage exists. Each marker below is a live score for the selected activity at that spot, refreshed from the engine on every render. Tarifa, Maui, Pollença, Cortina, Annecy — the same call, the same verdict, anywhere.
One engine, two question shapes. /v1/score validates a spot you already chose — any coordinate worldwide. /v1/recommend-spot is the inverse — hand the engine a region + an activity, get back the top-K ranked sub-spots, only where catalog coverage exists. The endpoint behind 'best kitesurf near me this weekend' inside consumer apps and booking platforms.
activity: "kitesurfing"location: {lat: 36.013, lng: -5.604}
The user already chose Tarifa Balneario. The engine answers yes/no with a 0-100 verdict — booking-flow validation, rental-operator opening/closing decisions.
activity: "kitesurfing"regionCenter: {lat: 36.01, lng: -5.6}radiusKm: 50topK: 5
The user is asking where. The engine enumerates every catalog sub-spot in radius, scores each, drops the unsafe ones, ranks the survivors — discovery apps, travel-platform itineraries, tour-operator planning.
The engine synthesises peer-reviewed physics across marine, atmospheric, cryospheric, alpine and hazard domains — grouped here by the science it draws on, not by our internal build order.
The engine is not a black box. Every coefficient resolves to a peer-reviewed paper, every paper to a measurable physical quantity. Below: six formulas that show up in nearly every score.
Phases 1–4 ship the real-time scoring API. Beyond real-time scoring, the same decision infrastructure carries future capabilities — same physics, different buyers, no rebuild.
The 28 base profiles — what counts as good wind for a kitesurf school in Tarifa vs. a windsurfer in Maui vs. a freerider above Cortina — are open data under CC BY 4.0. Anyone can audit the curve scoring their slot. Anyone can submit a regional variant via PR.
The license boundary is intentional. Engine is proprietary; activity definitions, citations, and review status for every parameter live in a public repo and ship as an npm package. The Zod schema is byte-identical across both repos — CI fails if they drift.
28 base profiles resolve through a five-level spatial hierarchy (base → region → cluster → sub-spot → micro) with hierarchical Bayesian calibration.
Goable pairs multi-domain NWP forecasts with operator-reported outcomes at sport-specific resolution — the human-decision validation layer existing observation networks lack. Anonymised (k≥10, 1 km², 90-day lag), CC BY 4.0, mapped to CSRD, GRI and GSTC.
Read the researchA transparent, operational index of declared signals: non-combustion session share, electric-equipment share, seasonal concentration, protected-area proximity, with data coverage tracked separately. Not a certification. Public methodology, CC BY 4.0 releases; tenant-level exports for operators.
About the indexWhere the engine starts measuring what physics doesn't capture. Continuous-item IRT adapted to weather: we separate intrinsic condition difficulty from rider skill, both identified from behavioural outcomes. A measurable latent construct nobody has measured — publishable methodology today.
Read the methodologySealect — our planned first tenant — will be a Pro tenant, with the cost folded into a standard Pro subscription. The pricing reflects booking-SaaS economics, not Fortune 500 ACVs.
Coverage note · Spot Discovery depends on sub-spot coverage in the open catalogue and is in active expansion. The /v1/score endpoint and every analytical surface (briefing, historical, projection, decision) work on any coordinate worldwide regardless. Verify coverage in your region on the Free plan before upgrading.
Drag the sliders. We use the same estimateMonthlyBill function the billing engine uses — no marketing fudge.
Sign up, mint a key, and hit /v1/score or /v1/recommend-spot in under a minute — 1,000 free calls/month, no credit card. Use them to verify coverage in your region before upgrading to Starter (€49/mo): /score works on any coordinate, while /recommend-spot depends on the open catalogue — see what we cover today.$ npm i @goable-io/sdk