Booking hold
Validate booking-flow conditions before the customer pays.
Turn a chosen place and time window into an explainable suitability verdict. Hand the engine an activity, a location and a window, and get back a 0-100 score, a plain verdict, the per-dimension drivers behind it and a confidence block. This is the endpoint that decides whether tomorrow's session opens or closes.
A worked call for a kitesurf weekend at a chosen spot. The engine scores six physics dimensions independently against the kitesurfing profile's scoring curves, then folds them into the 0-100 verdict the booking flow consumes. You read the score, the verdict, the confidence, and the drivers behind them.
POST /v1/score
{
activity: "kitesurfing",
location: { lat: 36.0133, lng: -5.6044 },
window: {
from: "2026-08-28T10:00Z",
to: "2026-08-28T16:00Z"
}
}verdict_buckets, not hard-coded: kitesurfing's "excellent" band is 86 to 100, one point above the fold.A verdict is only useful if it settles a decision. One score endpoint drives three operator workflows: holding or releasing a booking, opening or closing a school for the day, and calling go/no-go on each day of an itinerary.
Validate booking-flow conditions before the customer pays.
The daily open-or-close decision for the school.
Per-day go/no-go on a multi-day itinerary.
The verdict is not one model's opinion. Every coefficient traces to a peer-reviewed formula, forecasts are cross-checked against live observations, and each score ships with the provenance to audit it. Machine learning only tunes provider weights and calibration curves; it never overrides the physics.
25+ peer-reviewed formulas do the work. The verdict you read has a paper trail back to oceanography and atmospheric-science journals.
Provider forecasts are cross-checked against real METAR, buoy, satellite and lightning-strike observations, so the score reflects what is actually happening, not one feed's guess.
Every dimension, gate and confidence factor is returned in the response, so an operator can explain any verdict to a customer.
The pipeline, layer by layer. Physics does the work; ML appears in only two places, provider skill weights and curve calibration, and never replaces it. Full detail lives in the endpoint reference.
Skill-weighted blend of Open-Meteo, Stormglass and a premium partner model (Pro/Scale), cross-checked against real METAR, CMEMS, buoy, river-discharge, satellite-snow and lightning-strike observations. Per-cell weights are recalibrated on a schedule against accrued real-world outcomes, with drift monitoring between refits (see the SPC charter).
25+ peer-reviewed formulas across 20 namespaces (wind, wave, tide, atmosphere, snow, lightning, AQI, and more).
Hierarchical Bayesian shrinkage along the 5-level catalog (base, region, cluster, sub-spot). Curves tighten as cohort outcomes accumulate.
Lightning ≥0.85 or hazardous AQI forces verdict=unsafe regardless of other dimensions. Safety first.
0-100 score, a plain verdict (excellent/favorable/fair/marginal/poor/not_feasible/unsafe) and a confidence block you can gate UX on.
The confidence detail decomposes the scalar confidence into four interpretable factors. Booking flows can gate UX decisions on the sub-factor they care about (for example, warn the user when providerSkill < 0.7 for their region).
{
"session_id": "a7b2...",
"score": 87,
"verdict": "excellent",
"confidence": 0.84,
"confidenceDetail": {
"mode": "forecast",
"providerSkill": 0.91,
"ensembleSpread": 0.78,
"profileMaturity": 0.85,
"hierarchicalCalibration": 0.95
},
"breakdown": [
{ "dim": "wind", "score": 94 },
{ "dim": "wave", "score": 78 },
{ "dim": "lightning","score": 100 }
],
"alerts": [],
"eco": { "wind_beaufort": 4, "energy_class": "moderate" }
}Booking flow reports back: did the session actually happen, was it cancelled, was the customer happy? Each outcome feeds the calibration loop. Weights are recalibrated on a schedule against accrued real-world outcomes, with drift monitoring between refits, so the verdict does not silently change under you.
Forecast-and-outcome pairs are what unlock the next horizons: parametric underwriting needs them, and the open research dataset publishes them with k≥10 anonymisation (CC BY 4.0).
Score calls are metered per-event via Stripe. Free hard-caps at the included quota (no surprise bill). Starter and Pro overflow at the published rate. Scale runs on a contracted ceiling.
| Plan | Included | Overage | Typical buyer |
|---|---|---|---|
| Free | 1,000 calls / month | Hard cap at quota | Prototype, single-spot test |
| Starter | 50,000 calls / month | €1.50 per 1,000 calls over quota | Single operator, weekend traffic |
| Pro | 500,000 calls / month | €0.80 per 1,000 calls over quota | Multi-spot brand, ensemble + AI explain |
| Scale | Unlimited | Contracted ceiling | Underwriting, climate, multi-country |
One engine for two decisions: validate a chosen spot or find the best one. Score a spot you already know. Search a region when the user has not chosen a spot yet. Same scoring curves, same hard gates, same confidence model. Two workflows, one consistent decision model.
activity: "kitesurfing"location: {lat:36.013, lng:-5.604}window: {from:"…", to:"…"}
activity: "kitesurfing"regionCenter: {lat:36.01, lng:-5.6}radiusKm: 50topK: 5