Nestify Family HubDesign lead, three-person team2026 nestifyapp.org ↗

Design didn't hand off.
It shipped.

Three designers took a wall-mounted family hub from zero to a device on the wall, in eight weeks.

8weeks, first commit to first homes
71%of the code I wrote was prototypes
377commits from the design team
17/53shipped specs are agent surface
The Nestify Hub home screen: the family week, today's chores by member, and the shared lists

Home. The morning glance, read from across a kitchen.

The Nestify Hub mounted on a bedroom wall, showing the family week

One screen, wherever family life happens. 1920 x 1080, landscape, mains-powered, never off.

Chores board
Chores
Activity centre
Voice, with a trace
Rewards board
Rewards
Screensaver
At rest

Ten ways the agent can answer you.

A generated reply has no fixed layout, so we specified the shapes it is allowed to take. This is the catalogue we designed to, and it ships as a scenario library inside the product.

01
Voice lifecycleWake, listen, think, speak, complete. The full motion sequence.
06
Ordered mixed resultsReply and cards kept in the order they streamed in.
02
Action receiptA finished action, re-checked against local truth before it shows.
07
Safe fallbackA malformed response still renders something recoverable.
03
Choice requestDisambiguation. Which Alex did you mean.
08
Long scrollable resultTen cards and long content at constrained pad height.
04
High-risk confirmationDestructive action, with a local cancel path.
09
Error stateTerminal failure, with the transcript preserved.
05
Phone portalA result that continues in the phone app.
10
Non-blocking noticesBusy turn, audio-only degradation. Never a dead end.
Listening: the dashboard dims and a rainbow glow runs the whole screen edge
Listening. The dashboard dims and the entire screen edge lights, so it reads from across the room.
Thinking: the same bubble with a different verb while the request is processed
Thinking. Same bubble, different verb. Never a spinner.
Working on it: the bubble shows what it heard while it works
Working on it. It shows what it heard while it works, so a mishearing is caught before the write.
Answered: Nestie speaks the confirmation and the glow recedes to the corner
Answered. Spoken and written at once, then the glow recedes to the corner.
Choice request: which Alex did you mean
Choice. Who did you mean.
High-risk confirmation: delete the recurring event
Confirmation. Destructive, so it asks.
Phone portal: continue on phone
Portal. This one belongs on a phone.
Activity centre: a receipt with a change notice and the updated card
Receipt. The card, with a change notice above it.

Every state is reviewable on demand, including the ones a real conversation almost never reaches.

The prototypes are screens in the real app.

Not files. They ship inside the production binary behind a debug panel, so engineering reviews a running thing on real hardware.

58,423Prototypes, in the shipping app
8,939The pad app itself
7,115Agent skills and rules
7,910Everything else

Lines of code I inserted, by destination. 82,387 across 713 files.

One step, two treatments, both running on the device.

Voice enrolment, grid versus carousel. The scrubber on the right walks the flow, so a reviewer needs no build.

Voice enrolment prototype, grid treatment
Grid
Voice enrolment prototype, carousel treatment
Carousel

A control panel for the agent's interface.

Six voice states, driven by hand, no account and no network. Twenty more prototypes live in the mobile app, eight of them mine.

The design team's prototype harness driving the production agent interface, step by step

Design has commit rights.

I negotiated the access, then wrote the rules that made engineering willing to grant it. They are an executable agent skill, not a wiki page.

A

Visual change, no new behaviour

main gate preflight push

B

Real front-end work, no backend

branch spec + prototype PR me

C

Touches data, sync, permissions, native

branch PR me + eng owner

The gates are mechanical, so nobody argues past one. Designers can write code; we cannot approve it.

The part worth talking about

We used agents to build an agent.

17/53

You cannot redline a generated screen

So we specify behaviour and boundaries: what it may write, what it must ask, what it does when unsure.

33+91

The spec became the interface

Skills and rule files. A decision written precisely enough is executable: agents route it, build it, refuse it.

117

The AI is a contributor

Of 7,380 commits in the repo. The bar moved from can you build it to can you decide it.

The bottleneck stopped being production. It became judgement.

Believed. Broke. Shipped.

Believed

The hub runs as whoever set it up.

Broke

A child's chore said created by Dad. That account leaves, the wall dies.

Shipped

A family-owned device identity. It asks who a list belongs to; it never guesses.

Activity centre, where device actions are attributed

Believed

Check the voiceprint, then answer.

Broke

A device that silently refuses is not secure. Nobody debugs a threshold in a kitchen.

Shipped

It always answers. Recognition only resolves "me" and clears the lock.

Security settings on the pad

Believed

A PIN on the pad keeps the kids out.

Broke

Twice. They watch you type it, and the lock's own settings sit behind it.

Shipped

Settings moved to the phone. The pad page has no controls at all.

Chores board, where checking off is never locked

The rule underneath: the wall does, the phone decides.

The marketing site, before and after.

Same company, two visual languages, about four months apart. Each window scrolls the whole page.

BEFOREProduct shot

The earlier marketing site: an uppercase claim over a family photo, tablet and phone on a table

Rounded sans, an uppercase claim, hardware on a table. Reads like a spec sheet with a family in it.

NOWParent Copilot

The current marketing site: warm paper, one sentence per screen, video set inside the headline

Warm paper, one sentence per screen, video set inside the headline, the device shown in rooms. Sells a feeling.

What changed.

The function

Design became a shipping team.

Three designers, 377 commits into the product repo. The routes and review ownership are written down, so the model survives me.

The product

0 to 1 hardware in eight weeks.

First commit 27 June, v1.0.0 in first homes by late August. 53 specs, 579 commits on the device app.

The method

A repeatable way to design agent products.

Prototype inside the binary. Specify behaviour, not layout. Write decisions precisely enough for agents to execute.

Three things I got wrong first.

I optimised for output before judgement.

With agents, making things stopped being the constraint. I made more options than the team could evaluate.

I defended designs I had already finished.

The welcome animation, the pairing flow, the on-device PIN. The demo was fine. The kitchen was not.

I asked for capacity when I needed permission.

What unblocked the team was write access plus a rule set strict enough for engineering to accept.

It is early. The hub is with first families; the retention numbers do not exist yet.

See more projects.

Each one a different shape of ambiguity.

Back to all projects