Independent · 2024

From idea to working software for a live wind forecast tool.

A rapid solo project where building was the fastest way to reduce uncertainty about the product.

Open prototype

Role

Designer & Builder

Organization

Gusty (Independent)

Timeline

2026

Team

Solo

Platform

Web

Capabilities

Product design, prototyping, implementation

Gusty is a concept-to-production tool for reading live wind conditions, designed and built solo.

Mandate

Design and ship a working tool quickly enough to test the core idea.

Core constraint

Time — a solo build had to reach a real verdict before momentum ran out.

Chapter One: The Question

“Is it safe to enter the backcountry today?”

Every trip begins the same way. Coffee before dawn. Gear laid out on the floor. The quiet ritual of packing, checking, and re-checking before the light comes up.

Then comes the reading. Avalanche bulletins. Regional forecasts. Wind models. A dozen tabs, each telling a slightly different story about the same mountain.

A forecast for Whistler Village tells you almost nothing about wind conditions on a ridge a thousand metres higher. That difference can completely change a day’s objective, or whether you go at all.

Musical Bumps, Whistler, British Columbia, where a thousand vertical metres separates the forecast from reality. Photo by the author, January, 2026.

Chapter Two: The Problem

Weather forecasts aren’t designed for mountain decisions.

Most forecasting tools are built around cities: broad regions, populated valleys, the places where the majority of people happen to be.

Backcountry users make decisions at specific coordinates, elevations, and terrain features. The gap isn’t information. The gap is precision.

Gusty was never meant to replace the bulletin. It’s a companion, closing the distance between a regional forecast and the exact place you intend to stand.

Wind affects snow differently at every elevation and aspect. That's why a sea-level forecast tells a backcountry user almost nothing about snow stability in the mountains.

Chapter Three: Product Insight

The goal wasn’t better forecasts. It was better decisions.

Everything in Gusty was designed around reducing cognitive effort during planning. The user isn’t browsing. They’re deciding. This single insight shaped every screen, interaction, and piece of information in the product.

Chapter Four: Designing the System First

The system came before the screens.

Before a single screen was built, Gusty had a language: a type scale, a colour system, spacing, components, and tokens defined up front.

That decision paid off later. A well-defined system gave AI-assisted development a precise vocabulary to build against, which dramatically improved consistency across the product.

01: Typography

Aa

Inter for UI · DM Mono for data · Barlow Italic wordmark

02: Colour System

Background

Surface

Accent

Muted

03: Wind Colour Ramp

Calm

Light

Moderate

Strong

Severe

Extreme

04: Components & Tokens

Primary

Secondary

Favorable

Appendix: The complete system

The language behind the interface.

What follows is the working reference the whole product is built from: the same colour ramps in light and dark, accessibility proofs against WCAG 2.1, the icon library, and the button matrix in every state.

Colour · Light & Dark

Six semantic tokens carry the entire interface. Each renders as a matched pair: left column is the light-theme value, right column its dark-theme counterpart.

Gusty / Paper

Base background

L rgb(250, 249, 246) D rgb(14, 14, 13)

Gusty / Ink

Primary text

L rgb(22, 21, 15) D rgb(244, 241, 235)

Gusty / Ink Soft

Secondary text

L rgb(107, 104, 98) D rgb(166, 162, 154)

Gusty / Accent

Links, focus & data

L rgb(58, 90, 107) D rgb(137, 176, 196)

Gusty / Surface

Cards & panels

L rgb(255, 255, 255) D rgb(26, 25, 23)

Gusty / Hairline

Dividers & borders

L rgba(22,21,15,.14) D rgba(244,241,235,.16)

Accessibility · WCAG 2.1 Contrast

Every text-on-surface pairing is measured against the WCAG 2.1 contrast formula. All ten core pairs clear AA (4.5:1); most also clear the stricter AAA threshold (7:1).

Sample

Token pair

Theme

Ratio

AA

AAA

Aa 18px

Ink → Paper

Light

17.37:1

AA

AAA

Aa 18px

Ink Soft → Paper

Light

5.27:1

AA


Aa 18px

Accent → Paper

Light

6.99:1

AA


Aa 18px

Ink → Surface

Light

18.29:1

AA

AAA

Aa 18px

Label → Button

Light

17.42:1

AA

AAA

Aa 18px

Accent → Surface

Light

7.36:1

AA

AAA

Aa 18px

Ink → Paper

Dark

17.13:1

AA

AAA

Aa 18px

Ink Soft → Paper

Dark

7.59:1

AA

AAA

Aa 18px

Accent → Paper

Dark

8.34:1

AA

AAA

Aa 18px

Ink → Surface

Dark

15.58:1

AA

AAA

Buttons · Variants & States

Three button roles, each specified across the four interaction states: resting, hover, keyboard focus, and disabled. Focus rings use the Accent colour at 35% for a visible, accessible ring.

Primary

Get forecast

Default

Get forecast

Hover

Get forecast

Focus

Get forecast

Disabled

Secondary

View map

Default

View map

Hover

View map

Focus

View map

Disabled

Ghost

Learn more

Default

Learn more

Hover

Learn more

Focus

Learn more

Disabled

Chapter Five: Designing the Experience

One screen at a time.

The product reveals itself the way it’s meant to be used, one decision at a time. Each screen exists for a reason, never for a feature list.

Speed. Clarity. Confidence. The interface gets out of the way so the decision can come into focus.

Forecast

Forecast

The first thing you see is a decision, not a dashboard: today’s conditions at your saved locations, ranked by relevance.

Search

Search

Finding a precise point should take seconds. Search resolves to exact coordinates and elevation, not just place names.

Gusty Settings

Select your desired forecasting model, change units, or switch between light and dark mode.

Forecast Detail

When it matters, depth on demand: wind, temperature, and multiple models layered into a single, calm read.

Chapter Six: AI-Assisted Development

Design first. AI second.

AI compressed the distance between intent and implementation. It did not replace the thinking that came before it.

The interaction model, the hierarchy, the visual language, the design system, and every UX decision were deliberate, made by someone who understood the domain and the person using the product.

AI became an implementation partner, not the creative director.

Used this way, AI is leverage. The judgement about what to build, and why it’s worth building, still has to be earned.

Design & Build Stack

Tech Stack

Frontend

Maps

Charts

Weather data

Geocoding

Version control

Editor

Fonts

Vanilla HTML, CSS, JavaScript

Mapbox GL JS

Chart.js

Open-Meteo API

Mapbox Geocoding API

GitHub

Cursor

Inter and DM Mono

Chapter Seven: Outcome

Quiet numbers, honestly earned.

332

Unique visitors in the first month.

59%

Mobile users.

37%

Senior-level audience.

Zero

Paid promotion.

The greatest success wasn’t building another weather app. It was demonstrating how strong product thinking and AI-assisted development can dramatically reduce the distance between an idea and a working product.

Lesson 01

Great outdoor software reduces uncertainty.

The best tools remove doubt, they don’t add features.

Lesson 02

Domain expertise matters.

You can’t design for a decision you don’t understand.

Lesson 03

Design systems accelerate AI-assisted development.

A shared language lets a machine build with intent.

Lesson 04

Good interfaces support decisions, not data.

Data is easy to show. Decisions are hard to support.

In Closing

AI didn’t replace product design. It amplified it.

Gusty became proof that the limiting factor in building thoughtful software is no longer implementation. It’s choosing meaningful problems worth solving.

Product Design, Strategy, & Leadership
Vancouver, BC

Product Design, Strategy, & Leadership
Vancouver, BC