A UX process built for developers.

UX Process for Developer Handoff
UX process · Developer handoff

From brief to behaviour.A UX process built for developers.

When UX artifacts become the spec, developers stop guessing what the design meant. They build against a contract everyone has already agreed on.

UsuallyMistakes are found in production, after the code is written and shipped.
With this processMistakes are found in conversation, while we write the scenarios, before any code exists.
The problem

The app that ships isn't the app that was designed

The PO briefs, UX designs, and developers (or an AI on their behalf) interpret. Each handoff loses something. It's worst on greenfield products, where no codebase carries the context.

Usually
PO brief interpretation UX design interpretation Code Documentationwritten after, if ever
With this process
PO brief UX design SpecPRD + BDD scenarios Codechecked against the spec

Personas

Say who the product is for.

Jobs to be done

Say why they need it.

Mockups

Say what it looks like.

Missing: the rules

Nothing writes down how the app must behave, like "Confirm stays locked until the disclaimer is ticked." So developers guess, and AI just guesses faster.

My approach

As PO-UX, I write the behaviour, not just the screens

Each step produces an artifact that feeds the next. Nothing moves forward until the PO confirms it.

  1. 01

    Research

    Start from real users: interviews and surveys at live events, plus session recordings of how people actually use the product.

    InterviewsSurveysSession recordings
  2. 02

    PRD

    One source of truth: epics and numbered user stories with acceptance criteria, kept in sync with the team's wiki and backlog so every story maps to a ticket.

    EpicsUser stories US-01…Changelog
  3. 03

    Mockup

    Not a picture of the app: a coded, working mockup of every flow. It runs on desktop and mobile, pulls live ETF prices through a small server, remembers the user's session, and includes the first-run guided tour and cookie consent. The PO, real users and developers all react to the same thing. Every change to it, even a colour, is logged back to the PRD.

    ReactResponsiveLive dataSession persistenceReference implementation
  4. 04

    Personas

    Archetypes grounded in research, PRD and mockup, including anti-personas: who the product is not for.

    P-01…Anti-personasAI-assisted
  5. 05

    Jobs to be done

    For each persona, the job they hire the product for, mapped step by step into job stories, ranked unmet needs and scenario seeds. Jobs stay solution-agnostic; the UI is only how they're carried out.

    Jobs J-01…Needs N-01…Seeds SS-01…AI-assisted
  6. 06

    BDD scenarios

    Plain-language Given / When / Then scenarios grouped into features, each tagged back through the whole chain. Every behaviour has a reason, and every reason has a test.

    .feature filesFully traceableAI-assisted
  7. 07

    Handoff

    The scenarios are the contract. Developers, or a coding agent, build until every scenario passes. If a scenario is ambiguous, they don't weaken it. They raise it, and the spec gets fixed upstream.

    Behavioural contractNo silent rewrites

How AI fits in: it drafts, I decide

For personas, jobs and scenarios (steps 4–6) I use three AI agents I set up myself, one per step.

They ask, they don't guess. When information is missing, the agent asks the PO a question instead of making something up.
They work in order. No personas, no jobs. No jobs, no scenarios. Nothing gets skipped.
They keep it in sync. When the PRD or mockup changes, they flag which personas, jobs and scenarios are affected, instead of rewriting everything.
Traceability

Every line of behaviour can be followed back to a reason

Each scenario carries tags that link it to the need, job, persona and user story it comes from. Click each link to see the real ETF artifact behind it.

features/wizard-profilo-consiglio.featureThe testable rule

A behaviour written in plain language that anyone can read and a machine can test. It started as scenario seed SS-02 in the JTBD file:

"The user hasn't accepted the disclaimer yet: the button to continue stays locked until they tick the consent box. Once they accept, they continue without losing the profile values already entered."
@boundary @seed-ss02 @need-n03
Scenario: Block confirmation until the disclaimer is accepted
  Given the user has filled in their profile
  And   has not ticked the educational disclaimer
  When  they try to confirm
  Then  confirmation stays blocked
  And   they can still open the Terms without unlocking it

Translated from Italian. The tags link it to the seed and the need it proves.

Case study

The ETF mini app

An educational web app that takes retail investors from ETF theory to a first real portfolio, a savings-plan simulation and ongoing rebalancing.

28
User stories
across 11 epics
3
Personas
plus anti-personas
3
Core jobs
15 job stories · 11 ranked needs · 8 seeds
21
BDD scenarios
across 3 features, each traced end to end
The delivery

What lands on the developer's desk

One package: the working mockup plus every artifact behind it, in the folder structure the AI agents read. Nothing lives only in someone's head.

The ETF mini app mockup on a tablet and a phone
The ETF mini app mockup, desktop and mobile
.claude/product/
mockup/index.html + assets
The working mockup: the reference implementation of every flow.
PRD — Wizard ETF.md
11 epics, 28 user stories with acceptance criteria, definition of done, open backlog, open questions, glossary, changelog.
personas.md
3 personas plus anti-personas, each linked to the UI they use.
jtbd.md
3 core jobs, job maps, 15 job stories, 11 ranked needs, 8 scenario seeds.
features/*.feature × 3
21 BDD scenarios: the behavioural contract.
features/README.md
Coverage map: seed → scenario → file, journeys, edge, security and performance scope, and what's deliberately out of scope.
.claude/agents · skills/
a-personas · a-jtbd · a-gherkin
The agents that built the chain, shipped with it, so any change can be triaged layer by layer instead of rewritten.
handoff-to-dev.md
The brief for the coding agent: scenarios are the contract, semantic selectors only, never weaken a test.
Shared with the team
Confluence PRD · Jira tickets
The PRD mirrored on the wiki after PO approval, with one Jira ticket per user story.
What developers get

Less guessing, more engineering

A clear definition of done

Nothing left to interpret. If the scenarios pass, the feature is done.

Specs before code

Scenarios written up front, ready to become an automated test suite.

Traceability

Any behaviour can be followed back to the business reason behind it.

Time for real engineering

Architecture, security and performance, instead of rebuilding intent from mockups.

Where it breaks

Honest limits

The spec can run ahead of the build

On ETF, one epic was in the PRD but not yet in the product. It stayed a hypothesis, with no scenario written for it, because scenarios only describe what exists.

Upkeep is real work

Every change, even a colour, flows back into the PRD and its changelog. That costs PO time, and it's what stops the spec from going stale.

Scenarios must run to enforce

Their full value arrives once they're wired to an automated test runner.

BDD can't judge feel

Visual quality and interaction polish still need a designer's eye.

The result

The team argues over sentences, not shipped code

By the time anyone writes a line of code, PO, UX and developers already agree on what "working" means.

good-gds.com · Design and product ownership, in one seat.
Next
Next

User personas - Onboarding App