Approach
From a problem worth solving to a product people can use.
My process starts with understanding the people, constraints, and decisions behind the problem. From there, I work through the product with users and engineers, build enough to test the assumptions, and keep refining it until the direction holds up.
This page uses Greenridge, a recent product I designed and built end to end, to show that process in practice.
The previous process
The double diamond wasn’t the problem. The handoffs were.
For years the map was Discover → Define → Develop → Deliver. Explore the problem, narrow the focus, explore possible solutions, decide what to ship. It was the right spine for consequential work: problem space before solution space, evidence before polish.
The problem was treating those phases like separate stations: decks and artifacts moved from one team to the next, while learning waited for the next gate. The names still matter. The operating model had to evolve.
What each phase produced
Every card below is something Greenridge produced, placed in the phase that produced it.
Scroll or swipe sideways to move through the processSwipe for each artifact
Every artifact here is from Greenridge. Read the full write-upPhase by phase
These are modes of work, not sequential gates.
I move between discovery, definition, development, and delivery continuously, using working software, user evidence, and production behavior to decide what happens next. High-velocity teams cross these modes in the same week: a prototype exposes a discovery question; production traces become research; evals become requirements; a guardrail failure changes the interaction.
Discover
Start by understanding the real problem.
Greenridge began as a camping tool for Maryland’s Green Ridge State Forest.
I spent time understanding how people actually find campsites, what information is available before they arrive, and where that information breaks down. One of the most useful sources turned out to be something very simple: a clipboard posted at the campground showing which sites were occupied.
That changed the problem.
The opportunity was not just to build a better campground directory. It was to make scattered, temporary information easier for people to use.
Greenridge · at the kiosk
One photo of the sheet becomes a list of open sites.
It starts at the kiosk. Ahead of the bar it is a photograph; behind it, three columns are rows and two are struck out.
Scroll drives it. The sheet is drawn for this page: every real one carries a column of campers’ surnames, so none is published here, but its structure, the twelve block boundaries and the steps are the pipeline’s own. No model runs in your browser, and the reader takes the twelve blocks in its own order rather than top to bottom.
Build
Make enough of the product to learn from it.
Once I had a direction, I built the product rather than stopping at screens.
Greenridge became a working web and mobile application with offline support, image capture, OCR, and a review step for information the system could not confidently interpret.
Building it exposed questions that would have been difficult to answer in a prototype alone. How reliable was the image recognition? What happened without a network connection? When should the system ask a person to verify something?
Those became design questions as much as technical ones.
Test
Test the assumptions.
I tested the reader against 86 real campground photos, with glare, blur and hurried handwriting.
No reader was right every time.
That ruled out a product direction. Instead of designing around the assumption that the model would usually be right, I kept human review in the workflow and used confidence thresholds to decide when the system should ask for help.
The implementation changed because of what the testing showed.

Reframe
Follow the problem when it changes.
Working on Greenridge also changed how I thought about the product itself.
The same pattern exists well beyond one campground: useful information is often scattered across signs, photos, websites, PDFs, and local systems. People nearby frequently know something that would make the information more useful to everyone else.
That led me to explore Greenridge as a broader system for gathering and improving place-based information, rather than only as a camping application.
That shift came from building and observing the product, not from deciding on a larger vision at the beginning.
Deliver
Stay with it through the build.
This is generally how I work.
I spend enough time with users and the domain to understand what is actually happening. I make the product concrete early. I work closely with engineering because implementation exposes things the design process cannot predict. And I use testing to change the direction when the evidence says it should change.
The process moves back and forth, but the goal stays simple: understand the problem well enough to build something useful, then keep learning from the thing you built.
What’s evolving
AI accelerates production; evidence still determines direction.
The job isn’t research → define → test → ship, with AI making each step faster. It’s the fastest trustworthy loop between a real problem, a working system, observable behavior, and the next decision, using AI to compress execution while strengthening evaluation, human judgment, and operational safeguards.
The more a team relies on handoffs between documents and tools, the easier it is to lose the original intent. I try to keep the constraints, states, success criteria, and limits on autonomy close to the work itself. A prototype orbit throws most ideas away on purpose. A product orbit is continuous delivery with learning built in: harden what survived, ship in small increments, instrument it, and feed discovery again.
The craft hasn’t changed as much as the way we work. Design intent can now sit much closer to code, and teams can learn from working software instead of waiting for the next formal handoff.
The process now: intent at the centre of two orbits
Discover feeds intent and Define writes it. Intent sits inside a prototype orbit, where Develop builds fast, discardable prototypes, and a product orbit, where Deliver hardens what survived, ships in small increments and instruments it. What production shows loops back to Discover.
How the phases land now
The same four names, in continuous motion.
Discover and Define still frame intent. Develop runs the prototype orbit, including how a probabilistic system should behave under load. Deliver is the product orbit: prototypes that earned their keep enter a continuous delivery path, ship in small increments, observe, and loop back into discovery. The evolution isn’t renaming the work. It’s refusing to freeze learning between stations.
Framing
Discover and Define still earn the build.
-
Discover
Who has the problem. How severe · what we assume.
Feeds Intent
-
Define
Problem worth solving. Wedge · what we are not building.
Writes Intent
Orbits
Develop and Deliver keep learning in motion.
-
Develop
Interactive tests. Most ideas discarded.
Evidence for Intent
-
Deliver
Ship · instrument. Loop back to Discover.
Compounding