The surfaces
Two tabs, a dock that owns capture, and a receipt trail: what the product actually looks like after the restructure.
The whole product is two tabs, one dock, and a log. Everything else is a lens on one of them.
The dock
Capture is an action, not a destination, so it never got a tab. A dock sits above the tab bar: one line when collapsed, growing as you type, and expandable into a full compose sheet when you’ve got more than a flick of a thought, with voice given real prominence, because the most valuable captures happen on walks.
One component, two grips: the flick and the ramble. Search deliberately stayed out of it. Merging search and capture into one omnibox is a tempting simplification and a bad one: you’d have to disambiguate intent on every keystroke, and getting that wrong in the capture direction loses a thought.
Today: the time axis
What needs you now. A short list, chosen each morning, and the choice is the interesting part: a deterministic layer computes what’s genuinely urgent (deadlines, blockers, staleness) and hands a shortlist to a model that applies judgment about what actually matters. Neither layer can do the other’s job. Scoring alone can’t tell a flagship from an errand. A model alone re-guesses your priorities from scratch every day and is measurably biased by list position.
Corrections feed back. Pin something and it stays; demote it and the engine learns the shape of that, deterministically, rather than by re-prompting.
The daily briefing has a card at the top rather than a page of its own, and past days are reached by moving the date, which is what a calendar was for anyway.
Life: the structure axis
Where everything stands. A minimap of your whole workspace: one district per area of life, one tile per endeavour, filled by how live it is. Below it, a status board in stable order.
Two constraints matter more than they sound:
- The map is frozen. Tiles keep their positions. A layout that reflows as data changes is a layout you can never learn, and the entire value of a minimap is that your eye goes to the right place without reading.
- It paints in under 100ms from cache, and never skeletons. Revalidation recolours in place. If it’s stale it says so. A glanceable surface that makes you wait isn’t glanceable.
Functionally, Life is a continuous, automatic version of the weekly review: the ritual everyone agrees is valuable and nobody sustains, because the judgment it demands is precisely what people don’t have spare on a Sunday.
The districts themselves aren’t a fixed list. They’re derived from your own words during onboarding and maintained after, because the hard-coded five-value taxonomy I shipped first fit nobody, including me.
Activity: the log
A chat-styled receipt trail, grouped by day: your actions on one side, the system’s work on the other, its bursts compressed into one line each, with undo and re-file inline.
It’s built over the content-bearing tables rather than the telemetry event stream, and that’s a deliberate architectural line. Telemetry structurally cannot contain content, a rule enforced in CI, and a receipt with the content stripped out is not a receipt. Two read models, two purposes, no shortcuts between them.
The ritual
A short guided flow over Today. See what’s happened, act on a bounded deck of at most five things, then say what’s on your mind into a pre-opened capture sheet. See, act, say.
No streaks, ever. A tool built for your own thinking should not be in the business of making you feel guilty for having a life.