benji kim
← All projects

On the Traverse / Case study

Helping skiers choose
their next mountain

A mobile-first Northeast ski guide that brings mountain data, editorial context and natural-language discovery into one decision.

Ski product screens
Role
Product design & implementation
Product
Northeast ski discovery & comparison
Stage
Independent project
In development
Stack
Next.js · TypeScript
Google Sheets · OpenAI
Collaboration
Design and implementation by me, with editorial collaboration from a fellow writer/journalist.

The product problem

A bigger mountain isn’t
always a better fit.

Choosing where to ski means weighing terrain, travel time, pass access and the character of a place. Those details are difficult to compare when each mountain presents itself differently. A large resort and a small independent hill can both be good choices for very different days.

I designed On the Traverse around that decision: help a skier understand the tradeoffs, narrow the field and look more closely at a few mountains. The intended audience includes New York–area skiers balancing the drive with what they want from a day on snow.

Information architecture

Comparable choices begin
with a common model.

Before a card, filter or recommendation can be useful, it needs a consistent definition of a mountain. I modeled resort information in Google Sheets and TypeScript so the same fields could support every view, while allowing ordinary content edits without changing application code.

InformationExamplesDesign responsibility
Mountain factsVertical, acreage, annual snowfallKeep units visible and unknown values distinct from zero.
Access & logisticsPasses, NYC drive time, transportHelp people narrow viable options before judging preference fit.
Experience ratingsFamily, beginner, tree skiing, aprèsDistinguish subjective assessments from measured facts.
Editorial contextDescriptions, highlights, pros & consExplain the character and tradeoffs that numbers leave out.

The experience

One decision, three views.

Explore helps people build a shortlist. Compare aligns the tradeoffs. Details supplies the context needed to decide. I implemented the flows in Next.js and TypeScript, using shared cards, metadata and selection controls to keep the experience consistent.

Explore screen from the local application

Build a shortlist

Give browsing a point of view.

Photography and editorial context sit alongside passes, access and mountain information. Search and manual filters provide different entry points into the same catalog.

Compare is a selection action; Details is navigation. Keeping those controls distinct makes the next step explicit.

Local implementation capture

AI product judgment

Let language express intent.
Let code make the selection.

A skier may describe a day rather than choose a sequence of filters. I modified an LLM backed parser that turns those preferences into a structured contract. Application code then applies constraints and ranks records from the loaded catalog.

Illustrative query

“Good apres, close to saratoga.”

Ski product screens An explanation of the architecture, not a captured model response.
  1. 01 / Interpret

    Extract preferences

    Translate language into supported fields such as snowfall preference, location and terrain-park interest.

  2. 02 / Constrain

    Check eligibility

    Apply explicit constraints to catalog records. Keep unsupported criteria and missing information visible.

  3. 03 / Rank

    Order the candidates

    Score supported preferences in deterministic code and generate reasons from the matched attributes.

The trust boundary

The model interprets the request. It does not invent resort facts or choose mountains from its own knowledge. A match score describes heuristic fit; it is not a probability that someone will enjoy a trip.

Designing the limits is part of the feature.

Unsupported requests

Show an unverified state when the product cannot support a criterion. Exact drink availability and live conditions require evidence outside this model.

Geographic ambiguity

Distinguish location proximity, straight-line distance and stored NYC drive time. They answer different questions.

More than three candidates

The source includes an initial shortlist with inline expansion. Ranking, filters and selection continuity still need end-to-end validation.

Design through implementation

The small states carry
a lot of the experience.

Moving between design and code made details such as selection limits, label wrapping and return navigation concrete. I used source reviews and design audits to identify where visual consistency and interaction behavior needed closer attention.

01

Put the question first on mobile

Source-level iteration moved Ask above Sort & Filters while retaining browsing controls. Shared preference behavior remains a validation priority.

02

Keep control semantics clear

Separate sorting, filtering, comparison selection and detail navigation. Refine selected and limit states while preserving their different jobs.

03

Audit the experience between screens

Review label wrapping, control names, touch targets, dialog focus, scroll restoration and loading or empty states. Physical-device checks remain part of the next validation pass.

What this work demonstrates

  • Product design carried into application code.
  • A shared data model across discovery and comparison.
  • An explicit boundary between AI interpretation and recommendation logic.

What I would validate next

  • Can skiers explain why a mountain matches their request?
  • Can they compare and return to browsing without losing context?
  • Do unsupported criteria and unknown facts remain clear?

The most useful lesson so far is that recommendation quality depends on the information model and the treatment of uncertainty. The next milestone is evidence from real use: task completion, misunderstood criteria and comparison behavior. Conversion, retention and usability improvements have not yet been established.

Evidence and scope +

This narrative uses the On the Traverse Project Knowledge Base, including its October 14 update, and the local implementation inspected for these captures. Screenshots document interface behavior, not a verification of every displayed resort fact. Some data, accessibility and fallback issues remain open. Booking, live conditions, personalization and review-informed ranking are future directions.