Architecture
How It Works
PowDay is an end-to-end ML pipeline that fuses NOAA atmospheric model output with USDA snowpack telemetry to produce probabilistic snow forecasts — running entirely on local consumer hardware.
The Pipeline
Ingest
Fetch 10 years of hourly SNOTEL data (snow depth, SWE, temperature, precipitation) via the USDA AWDB REST API. Pull the corresponding NOAA HRRR archive (2m temperature, 10m wind, surface precipitation rate) using FastHerbie from NOAA's public S3 buckets.
Transform
Derive incremental precipitation from PREC.diff(), compute snow density proxy (WTEQ_delta / SNWD_delta × 100), and align HRRR covariates to SNOTEL station coordinates. The result is a clean, aligned multi-variate time-series dataset spanning 10 years across multiple Sierra Nevada stations.
Fine-tune
Fine-tune Chronos-2 on the prepared Sierra Nevada dataset. This adapts the model's pre-trained priors to the specific snowpack dynamics, storm patterns, and elevation-dependent behavior of the Tahoe Basin — accuracy that zero-shot inference alone cannot achieve.
Infer
Feed current SNOTEL observations and the latest HRRR f01–f48 forecast files into the fine-tuned model. Chronos-2 produces 1,000 Monte Carlo sample paths over a 48-hour horizon per station.
Aggregate
Compute P10, P50 (median), and P90 quantiles from the sample distribution. Derive confidence level from P90–P10 spread (≤8 cm = High, ≤20 cm = Medium, >20 cm = Low).
Publish
Write forecast to data/latest_forecast.json and data/forecast_history.csv. Upload JSON to Vercel Blob with public access. PowDay.AI picks up the new data on the next 30-minute ISR cycle.
Tech Stack
Amazon Chronos-2
Forecasting Engine
A time-series foundation model with native covariate support, fine-tuned on 10 years of Sierra Nevada snowpack and NOAA HRRR meteorological data. Produces P10/P50/P90 quantile predictions with domain-adapted accuracy.
NOAA HRRR
Atmospheric Covariates
High-Resolution Rapid Refresh model output: 2m temperature, 10m wind speed, and surface precipitation rate, fetched via FastHerbie from NOAA's public S3 buckets.
USDA SNOTEL
Ground Truth Snowpack
7 Sierra Nevada telemetry stations providing hourly snow depth (SNWD), snow water equivalent (WTEQ), temperature (TOBS), and accumulated precipitation (PREC).
Docker + NVIDIA CUDA
Containerized Inference
Fully containerized GPU pipeline on consumer hardware (NVIDIA RTX 4070 Ti). Eliminates cloud egress costs while maintaining sub-hour inference latency.
Next.js + Vercel
Frontend & Hosting
Static-first Next.js site with server-side data fetching and 30-minute ISR revalidation. Deployed on Vercel with PowDay.AI domain.
Vercel Blob
Forecast Distribution
After each pipeline run, the forecast JSON is uploaded to Vercel Blob storage, decoupling the publishing pipeline from the inference hardware. The frontend fetches the public blob URL with 30-minute ISR revalidation.
System Architecture

Design Decisions
Why local inference instead of cloud?
Continuous GPU hosting on AWS (e.g., g4dn.xlarge) would cost $400+/month. Running on consumer hardware (i.e. RTX 4070 Ti), local inference is effectively free. The Docker container is architected for future Cloud Run migration when scale demands it.
Why Chronos-2 instead of ARIMA/Prophet?
Two things made Chronos-2 the right choice. First, native covariate support: unlike most time-series foundation models, Chronos-2 can ingest exogenous inputs (NOAA HRRR temperature, wind, and precipitation rate) alongside the target series, letting the model see the storm coming rather than just reacting to historical snowpack. Second, by fine-tuning on 10 years of Sierra Nevada data, it generalizes across resorts without per-station training — something ARIMA and Prophet require by design.
Why SNOTEL + HRRR together?
SNOTEL provides high-fidelity ground truth for snowpack state. HRRR contributes forward-looking atmospheric context (precipitation rate, temperature, wind) that SNOTEL alone cannot provide. Covariate support in Chronos-2 allows the model to integrate both signals.
Why quantile forecasts?
Point forecasts are misleading for alpine snowfall, which has high variance. P10/P50/P90 quantiles communicate the distribution of outcomes honestly — a 'Medium' confidence forecast tells a skier something fundamentally different than a 'High' confidence one.
Roadmap
MVP
- ·SNOTEL + HRRR ingestion
- ·Chronos-2 inference
- ·48h P10/P50/P90 quantiles
- ·Vercel publishing pipeline
- ·PowDay.AI frontend
More Resorts
- ·Additional Tahoe resorts
- ·Cron scheduling
- ·Snow density classification
Extended Horizon
- ·3-day forecast
- ·5-day forecast
- ·Confidence calibration
Stoke Level
- ·LLM qualitative analysis
- ·Home Assistant integration
- ·Multi-model ensembling
Interested in the engineering behind this?
I'm Jon Eby. I built PowDay to answer a question: Can a single engineer with consumer hardware produce probabilistic snow forecasts that beat a naive baseline? The answer is looking like yes. I'm currently open to senior product engineering roles — particularly where AI meets real-world systems.