Skip to content

Experience & Design

Design connected from the user to the shipped pixel

A designer does many jobs: mapping journeys, framing the real problem, sketching concepts, building prototypes, running tests, codifying a design system, and holding the brand. In most teams each of those jobs lives in a separate tool that references none of the others, so the journey maps a persona research never confirmed, the prototype tests a hypothesis strategy never set, and the design system drifts from the flows it is meant to serve. UPG holds the whole arc as one graph: a stalled journey step becomes a framed opportunity, a concept becomes a tested prototype, and a tested prototype becomes a systematised, accessible component that ships, each step linked to the one before it.

“When we consider more than one option, we make better decisions.”
Teresa Torres, Continuous Discovery Habits
01Map The Experience

The journey, mapped onto the persona who walks it

The work begins with the journey. A user journeyuser_journeyAn end-to-end map of a user experience contains ordered journey stepjourney_stepA single step in a user journey nodes and maps the canonical personapersonaAn archetype representing a user segment who walks them, so the experience under design is the same user the strategy named and research confirmed, rather than a fresh archetype invented for the workshop.

Because the steps are typed and ordered, a friction point is a node. The step where activation drops is a place in the graph that links forward to the work that addresses it. That node is the anchor the rest of the design work hangs from.

First-week activationanchor
user_journeyuser_journeyAn end-to-end map of a user experience
mapsuser_journey_maps_personaData-wary team lead
journey_step
Discover
journey_step
Sign up
journey_step
First value
friction here
journey_step
Habit
journey_step
Advocate

A journey contains ordered journey steps and maps the persona who walks it. So the friction point is a node, not a sticky note: the step where activation drops links to the opportunity that fixes it and the design concept that tries to.

02Frame The Problem

From a friction point to a framed opportunity

Framing is a chain of edges. A friction step reveals a needneedA user need, pain, desire, or constraint; the need is measured by a desired outcomedesired_outcomeWhat the user hopes to achieve; the gap in that outcome reveals an opportunityopportunityA validated gap worth solving. The path from a symptom to a problem statement is recorded rather than asserted.

The opportunity a designer pursues points back to the journey step that raised it and forward to the solutions that address it. The reason behind a redesign stays attached to the work, traceable in both directions.

Activation, the first-value step
where the journey stalls
journey_stepjourney_stepA single step in a user journey
revealsjourney_step_reveals_need
Cannot trust the numbers on screen
needneedA user need, pain, desire, or constraint
measured byneed_measured_by_desired_outcome
Numbers trusted at a glance
desired_outcomedesired_outcomeWhat the user hopes to achieve
revealsdesired_outcome_reveals_opportunity
Trusted in-context reporting
opportunityopportunityA validated gap worth solving

Design starts where the experience breaks. A friction point is not a sticky note; it is a journey step that reveals a need, which is measured by a desired outcome, whose gap reveals the opportunity worth solving. The problem the designer takes on traces straight back to the moment in the journey that raised it.

03Explore Solutions

Several concepts per opportunity, each one kept

An opportunityopportunityA validated gap worth solving explores via several design conceptdesign_conceptA possible design direction or approach nodes, and each concept is sketched in a wireframewireframeA low-fidelity structural layout and realised as a user flowuser_flowA navigation path through the product. The divergence is captured as typed nodes rather than left in a file.

A concept the team parks stays in the graph, linked to the opportunity that prompted it. A good idea that was early rather than wrong can be found again, since the branch that did not ship is recorded next to the one that did.

Trusted in-context reportinganchor
opportunityopportunityA validated gap worth solving
explores viaopportunity_explores_via_design_concept
Inline trust badges
design_conceptdesign_conceptA possible design direction or approach
Provenance drawer
design_conceptdesign_conceptA possible design direction or approach
Each concept becomes tangible:
sketched indesign_concept_sketched_in_wireframe
Dashboard v3 wires
wireframewireframeA low-fidelity structural layout
realised asdesign_concept_realised_as_user_flow
Verify-and-view flow
user_flowuser_flowA navigation path through the product

Divergence is captured, not lost. An opportunity explores via several design concepts, and each concept is sketched in a wireframe and realised as a user flow. The exploration lives in the graph as a branch from the problem, so a parked idea can be found again instead of disappearing into a Figma archive.

04Prototype & Test

The prototype, tested against a hypothesis

A design conceptdesign_conceptA possible design direction or approach is realised as a prototypeprototypeAn interactive mockup for testing, and the prototype carries its evidence. It simulates a screenscreenA distinct screen or view in the product, tests a hypothesishypothesisA testable belief about a solution, validates a featurefeatureA product capability or feature, and is annotated with the annotationannotationA note or markup on a design artifact it draws.

The question “did the design work?” resolves to the result recorded on those edges. A failed test is a learning linked to the concept that prompted it, so the next iteration starts from what the last one found.

Inline trust badges
design_conceptdesign_conceptA possible design direction or approach
realised asdesign_concept_realised_as_prototype
Clickable v3anchor
prototypeprototypeAn interactive mockup for testing
The prototype earns its keep:
simulatesprototype_simulates_screen
Dashboard / verified state
screenscreenA distinct screen or view in the product
testsprototype_tests_hypothesis
Badges raise trust in the numbers
hypothesishypothesisA testable belief about a solution
validatesprototype_validates_feature
Verified metrics dashboard
featurefeatureA product capability or feature
annotated withprototype_annotated_with_annotation
Tooltip copy unclear
annotationannotationA note or markup on a design artifact

The prototype does work, not decoration. It simulates the screen, tests a hypothesis, validates a feature, and is annotated with the feedback it draws. So “did the design work?” is answered with evidence on an edge, and the annotation that flags a problem is linked to the exact artifact that caused it.

05Systematise

The design system, from token to component

A design systemdesign_systemThe root design system entity contains design componentdesign_componentA reusable UI component nodes, defines design tokendesign_tokenA design token (colour, spacing, typography) nodes, and is codified in design guidelinedesign_guidelineA design usage guideline nodes. It is part of the same graph as the product, scoped to the parts meant to scale across screens.

One component carries the whole chain: styled by a token, conforming to an accessibility standard, implementing the featurefeatureA product capability or feature it ships, and consuming the serviceserviceA deployable service or microservice behind it. When a token changes, the graph names every component, feature, and screen it touches, so the blast radius of a design-system change is a traversal rather than an estimate.

Acme Design Systemanchor
design_systemdesign_systemThe root design system entity
contains · components
MetricBadge
DataTable
TrustTooltip
defines · tokens
color.trust.500
space.tight
font.mono.label
codified in · guidelines
When to badge
Empty states
Zoom on one component, and the whole stack hangs off it:
MetricBadge
design_componentdesign_componentA reusable UI component
styled bydesign_component_styled_by_design_token
color.trust.500
design_tokendesign_tokenA design token (colour, spacing, typography)
specified bydesign_component_specified_by_interaction_spec
Hover reveals source
interaction_specinteraction_specA specification for an interaction behaviour
conforms todesign_component_conforms_to_a11y_standard
WCAG 2.2 AA contrast
a11y_standarda11y_standardAn accessibility standard (WCAG, Section 508)
implementsdesign_component_implements_feature
Verified metrics dashboard
featurefeatureA product capability or feature
consumesdesign_component_consumes_service
Reporting service
serviceserviceA deployable service or microservice

The design system is not a separate artifact; it is the same graph, zoomed in. A system contains components, defines tokens, and is codified in guidelines. Then one component carries the whole chain: styled by a token, conforming to an accessibility standard, implementing the feature it ships, and consuming the service behind it. Change the token, and the graph names every component, feature, and screen it touches.

06Brand & Accessibility

The brand the system carries, the standards it meets

A brand identitybrand_identityThe root brand identity entity is coloured with its brand colourbrand_colourA brand colour definition, typeset with its brand typographybrand_typographyBrand typography specifications, and speaks with its brand voicebrand_voiceBrand voice and tone guidelines, all linked to the design system that carries them.

Accessibility is recorded on an edge. A design componentdesign_componentA reusable UI component conforms to an accessibility standard as a typed relationship, so “what fails AA?” resolves to a query over the graph at any time, rather than a once-a-year audit retrofitted before launch.

Acme brandanchor
brand_identitybrand_identityThe root brand identity entity
coloured withbrand_identity_coloured_with_brand_colour
Trust blue / ink
brand_colourbrand_colourA brand colour definition
typeset withbrand_identity_typeset_with_brand_typography
Inter + JetBrains Mono
brand_typographybrand_typographyBrand typography specifications
speaks withbrand_identity_speaks_with_brand_voice
Plain, precise, no hype
brand_voicebrand_voiceBrand voice and tone guidelines
signed withbrand_identity_signed_with_brand_logo
Contour mark
brand_logobrand_logoA brand logo or mark
And accessibility is a fact on the edge, not a footnote:
MetricBadge
design_componentdesign_componentA reusable UI component
conforms todesign_component_conforms_to_a11y_standardWCAG 2.2 AA

Brand is expressed, not appended. A brand identity is coloured with its palette, typeset with its type, and speaks with its voice, all linked to the design system that wears them. And every component conforms to an accessibility standard as a typed relationship, so “what fails AA?” is a query, not an annual audit.

07Where To Go Next

Experience and design links in both directions: back to the user it serves, and forward to the build that ships it.