Foundey · Senior Product Designer · September 2026

Fifty minutes to answer it.One night to build it.

The brief asked for a low-fidelity redesign of a warehouse operations dashboard, in under an hour. The hour went into the argument. Then the build ran overnight, unattended, against eleven gates that grade themselves — and not one screen was drawn by hand.

Relay's worker screen: a status sentence reading 2 need you now, one hero task with the reason underneath it and a countdown ring, then a queue in four labelled tiers, and a rail of carrier cutoffs.
/work · SEA4 · one frozen Tuesday at 10:40. No data is invented at runtime.
  • 50 min

    Scaffold to a live URL

    12:05 → 12:55, day one

  • 12

    Commits with nobody awake

    22:20 Mon → 13:07 Tue

  • 635

    Automated checks

    283 unit · 304 end-to-end · 48 pixel

  • 11

    Quality gates

    Nine of them a single command

  • 0

    Screens drawn by hand

    The Figma files are generated

The ask

Two sentences, from two people who cannot see each other.

The brief gave a fulfillment centre, a dashboard nobody trusts, and two complaints. Everything below is an answer to one of them.

“I never know what needs my attention first.”
An outbound exception coordinator, on the floorAnswered by /work
“I cannot see what each worker is doing.”
A shift manager, at a deskAnswered by /team
  • Under 1 hour
  • Low fidelity or wireframes
  • Graded on product thinking

The diagnosis

The old screen already ranked. Ranking was never what was missing.

Its queue was titled “Needs Your Attention, ranked by urgency”, and people still said they did not know what to do first. So the order was not the problem. Four other things were.

  1. 01 · Ranked by urgency

    It ranked, but never said why.

    A number nobody can see is a number nobody trusts. The score was real and invisible, so the order read as arbitrary.

  2. 02 · Grouped by source

    It sorted by where a task came from.

    System, safety, vendor, escalation. None of those is a reason to act. What happens next is.

  3. 03 · Four identical buttons

    Every row asked for attention at once.

    When a screen shouts uniformly, the loudest thing on it is noise, and the ranking underneath stops meaning anything.

  4. 04 · An endless feed

    There was no way to be done.

    A queue that never empties gives a shift no shape. Nobody can pace work they cannot see the end of.

The answer

One thing at the top, and the reason written underneath it.

Not a better sort. A screen that commits to a single next action, says out loud why that one, and can be finished.

The score, in plain words

“Why is this first?” opens the actual arithmetic. Not a confidence bar, not a coloured dot — the three numbers that produced the rank and the threshold they crossed.

Time 30+Orders 22+Impact 10=6260+ means act now

Four tiers, instead of a feed

Grouped by what happens next, never by where the task came from. The tier name is the instruction.

  • Act nowScore 60+. Someone is blocked, or a truck is.
  • Up nextScore 40–59. It becomes Act now if it waits.
  • When you canScore 20–39. Real work, no clock on it.
  • For your infoUnder 20. Read it, do nothing.

And a way to be done

Finish the last one and the queue does not refill itself. It says the shift is clear and shows what was finished. A queue with no end has no pace.

The worker's screen at 390 pixels wide: the same hero and the same four tiers, with the primary action moved into a sticky bar at thumb height.
390px. The primary action moves to a thumb-height bar — a handheld decision, not a reflow.

The proof

If the ranking only works in colour, it does not work.

Wire is a real mode with its own token values — every chroma channel multiplied by zero, lightness untouched. It is not a grayscale filter, and a lint rule keeps it that way. Switch it and check that you can still tell what to do first.

The worker's screen in colour: the Act now hero is tinted red, Up next rows carry an amber clock, and the tier bands descend in weight.

Hi-fi. Tier tint, tier hue, tier weight.

This is also the brief’s low-fidelity answer, kept live instead of screenshotted: the same shipped screens, with every colour channel switched off. Rank survives in shape, label, position and weight.

The process

I wrote the argument and the gates. The night shift wrote the code.

Transcribed from git log, in the machine's own time zone. Twelve commits landed between the last instruction of one night and lunchtime the next day. Six of them arrived between midnight and half past eight.

  • A person decided something
  • An agent shipped something
  1. 12:05

    Mon 22

    The brief lands. The hour starts.

    Scaffold, tokens, seed data, and a priority model with its own tests.

  2. 12:55

    Mon 22

    A deployed prototype, 50 minutes in.

    Two screens, a ranked queue, wireframe mode, and a production URL. That is the answer to the brief as written.

  3. 15:00

    Mon 22

    A second session reviews the first, and it does not go well.

    Measured, not eyeballed: the main column was narrower at 1024 than at 1440, the undo toast never appeared on screen, and wireframe mode hid its own off switch.

  4. 16:07

    Mon 22

    Start again on Next 16, with a plan and eleven gates.

    The product argument survives. The execution does not. Nothing advances a phase without a green gate.

  5. 22:20

    Mon 22

    Last instruction of the night.

    The test loop is made cheap to run and cheap to read, so that a long unattended run does not drown in its own output.

  6. 23:18

    Mon 22

    Foundations: type, colour and geometry tokens.unattended

    One source of truth for every value the screens are about to be built from.

  7. 01:11

    Tue 23

    The worker screen.unattended

    Hero, the reason underneath it, the openable score, four tiers, and a finish line.

  8. 02:46

    Tue 23

    The manager board.unattended

    Exceptions first. Four tiles that filter. Never a stopwatch on a person.

  9. 05:28

    Tue 23

    Updates, search, and the ends of the day.unattended

    All-clear, end of shift, and the empty states that make a queue finishable.

  10. 10:33

    Tue 23

    Motion: fourteen moments, each with a reduced-motion variant.unattended

    The done choreography first, because it is the one people will see a hundred times a shift.

  11. 13:07

    Tue 23

    The deck. Twelve commits since the last instruction.unattended

    Part A is the one-hour answer in ten slides. Part B is marked Optional on every slide.

  12. 14:11

    Wed 24

    An independent session reviews it and finds seven real defects.

    A session that built none of it drives every route at three widths. It also catches that the first fix for one of them was itself wrong, and says so in writing.

  13. 17:24

    Wed 24

    Ship.

    Every gate re-run against the deployed URL, not against a local build.

My own hours went into four things: the argument, the plan, the constraints, and reading the reviews. Each session got a short brief and a hard exit condition. What made that safe was not trust — it was that every claim a session makes is checkable by a command someone else can run.

The constraints

Nothing is graded by looking at the thing it grades.

Eleven gates. Nine are a command, so they cannot be talked out of a red. The last two are judgement, and are done by a session that did not build the thing.

  • G1command

    Every colour resolves to a token. No literal hex outside one file

  • G2command

    Controls sharing a row share a height. Every touch target ≥44px

  • G3command

    Six widths render every surface with no scroll, overlap or clipping

  • G4command

    Zero axe violations on every route in all three modes. AA on every pair

  • G5command

    With colour removed, the ranking is still recoverable

  • G6command

    Every animation has a reduced-motion variant. Nothing loops

  • G7command

    Clocks and greetings are identical in three time zones

  • G8command

    Lighthouse ≥95 for performance and accessibility, median of three

  • G9command

    Verb-first buttons, no orphaned labels, grade ≤8 reading level

  • G10judgement

    Each Figma file matches what shipped, verified by screenshot

  • G11judgement

    A session that did not build it drives every route and writes the review

What the gates cost to run

283 unit tests
0.5s — the priority model, copy, tokens, contrast pairs
304 end-to-end tests
78s — size contract, six widths, axe, wire, reduced motion
48 pixel baselines
10s — eight surfaces at six widths, compared not described

The honest part

What I did not do.

A case study that only lists wins is a sales page. These are the choices a reviewer would find anyway by opening the repo, so they are here first.

  1. 01

    I did not draw a single screen in Figma.

    The three Figma files exist, and they were built last, generated from the shipped code and its tokens. A design system maintained by hand in two places drifts within days. This one has a direction.

  2. 02

    I did not polish pixels.

    Not one spacing value was nudged by eye. Every height, radius and colour is a token with a test behind it, so when something looks wrong the rule is wrong — and fixing the rule fixes every screen at once.

  3. 03

    I did not do research.

    There are no users here. The two personas, the site, the carriers and the cutoffs all come from the brief and from one frozen Tuesday at 10:40. No data is invented at runtime.

  4. 04

    I did not sit and watch it build.

    My own time went into the argument, the plan, the gates and the reviews. The longest stretch of work in this repo happened between 22:20 and 13:07 while nobody was at the keyboard.

  5. 05

    I did not finish everything, and the repo says so.

    The demoted hero does not animate back into its row. Reduced motion collapses globally instead of per moment. /team scrolls sideways below 390, a width the app does not claim. Each one is written down where it happened rather than quietly left out.

Go and look

Everything here is running, not rendered.

Four surfaces, a deck, a design system read out of its own stylesheet, and the repository behind all of it.