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

01

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.

02

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.

03

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.

04

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.

05

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).

06

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

ML Inference

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

Data Source

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

Data Source

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

Infrastructure

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

Frontend

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

Infrastructure

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

PowDay Overall Design Doc

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

v0.1

MVP

In Development
  • ·SNOTEL + HRRR ingestion
  • ·Chronos-2 inference
  • ·48h P10/P50/P90 quantiles
  • ·Vercel publishing pipeline
  • ·PowDay.AI frontend
v1.0

More Resorts

Planned
  • ·Additional Tahoe resorts
  • ·Cron scheduling
  • ·Snow density classification
v1.1

Extended Horizon

Planned
  • ·3-day forecast
  • ·5-day forecast
  • ·Confidence calibration
v1.2

Stoke Level

Planned
  • ·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.