v0 · public beta

Spatial data from action-cam footage.

Piste extracts GPS telemetry from GoPro and other action-cam files in the browser, reconstructs runs, matches them to resort trails, and aggregates everything into a clean spatial dataset — queryable over REST, GeoJSON, and MCP.

live · last 60s

api.piste.fyi

04:12:09ingest.gpmf.stream200session 7c3a · 1248 fixes · 18 trails matched
04:12:11segment.smooth200savgol w=11 · drift 0.3m
04:12:14match.trail200"Pallavicini" · conf 0.94 · postgis 38ms
04:12:18aggregate.resort200A-Basin · 73 sessions · p95 312ms
04:12:21export.geojson200features=4128 · gz=183kb
04:12:24mcp.resort.trails200claude-opus · 12 tool calls · 488ms

→ 3 resorts indexed · 1,284 trails · 184 lifts · p95 312ms

Four primitives.

/the pipeline

01 · extractmp4box.js · gopro-telemetry · 1Hz JSON

Extract

Browser pulls GPMF telemetry directly from MP4 — GPS, accelerometer, gyro — without uploading the video.

02 · reconstructGo · postgis · savgol

Reconstruct

Server smooths the trace with Savitzky–Golay, segments it into runs / lifts / traverses / idle, and reconstructs vertical, distance, and speed envelopes.

03 · matchpostgis ST_HausdorffDistance

Match

Each run is matched against resort trail and lift geometry from OpenSkiMap with a confidence score, stored as PostGIS line + multipolygon overlap.

04 · aggregateREST · GeoJSON · MCP

Aggregate

Everything rolls up into resort-, trail-, and lift-level analytics — queryable as JSON, GeoJSON, or via the MCP server.

Data surface.

/proof of volume

3

resorts

indexed today

1,284

trails

multi-polygon, OpenSkiMap

184

lifts

line + capacity, Go-side typed

curl example

# Bulk resort directory as GeoJSON
curl https://api.piste.fyi/data/resorts.geojson | jq '.features | length'

# Single resort + trails
curl https://api.piste.fyi/data/resorts/a-basin/trails.geojson \
  | jq '.features[0].properties'

Bulk endpoints are cached at the edge for 24h. Per-trail / per-session reads go through the live REST API. More on the data surface →

MCP · Model Context Protocol

Built into Claude.

Piste ships a hosted MCP server. Drop the URL into Claude or any MCP-compatible client and ask questions in natural language: "show me every recorded run on Pallavicini under 4 minutes."