On the Design of Levee

Previous

How Dot raised the bar for AI companion UI—and how Levee carries that craft into staged, goal-directed workflows.

In June 2024, designer Dave Klein wrote a design review of Dot, the AI companion from new.computer. Jason Yuan, who had shared Mercury OS and written about redesigning Apple Music before joining Apple, was behind the product. Dot billed itself as "your Living History"—a personal guide that learned and evolved with you. Klein captured the onboarding, used the app for several days, and wrote up what worked and what didn't. The review is worth reading for its tone alone: observant, specific, and willing to question copy, permissions, and flow.

Dot showed how much craft and opinion an AI companion UI could have. Serif type, gradients, a letter-writing step, "Dot is reflecting on your letter," then Chronicles—auto-generated pages from your conversations and photos. That set a bar. Dot was removed from the App Store in 2025. This post holds onto that design language and asks what comes next.

What Dot got right

Onboarding did a lot of work. "Meet Dot, the AI that grows with you—learning and evolving with your every interaction." Clear. The letter step was the standout: a series of questions that Dot recognized as answered in real time—green checkmarks, no submit button, the next question appearing on its own. Klein called it magic. The conversation that followed felt like talking to a coach: follow-up questions, links to reading, and lines like "You've got this, Dave." After a few days, the home screen filled with cards—summaries of what you'd shared—and Chronicles turned that into generated pages. It felt like a living journal.

Dot also had weak spots. Permissions (notifications, calendar, location) were asked up front with little context. "Chronicle" wasn't defined until you saw it. And initiation was on the user: you had to open the app and think of something to say. Klein suggested Dot should send a prompt with the push notification so that tapping it opened the app to a ready question. Those are design lessons as much as the wins.

From open-ended companion to structured workflow

Dot is one long, open-ended relationship. Many products need outcomes: a strategy, a plan, a set of decisions—not just a good chat. You need to know when you're done and what was captured.

Levee is a different bet: staged, goal-directed flows with clear completion criteria. Same conversational quality—the agent can ask questions, offer options, and respond in a coach-like way—but with structure. Stages, lock items, and a rail so you always know where you are and what's left. The design question becomes: how do you keep the fluidity of something like Dot while making the path and the result explicit?

The Levee UI: what's novel

Stages and the rail

Levee wraps a config of stages. Each stage has an id, title, description, objective, and a mode (form, chat, or synthesis). The sidebar—the rail—shows every stage with a status: gated, active, locked, revisiting, or stale. You see a progress ring per stage (e.g. "3 of 5 items satisfied") and the current stage is obvious. The rail can be compact (icons only) or expanded (labels and lock percentage). You're never lost in the flow.

Lock items and completion

A stage isn't "done" when the user or the model says so. Each stage declares lock items: concrete criteria that must be satisfied (e.g. "Mission articulated," "At least three core values identified"). The model, via tools or a completion step, marks them satisfied. The UI shows a lock checklist with an animated progress ring and a list of items; satisfied items get a check and a subtle green treatment. The stage doesn't advance until the agent and the config agree. No vague "done."

Tool-driven inputs inside the thread

Dot had a moment in onboarding where it automatically recognized that you'd answered a question—the prompt turned green, a checkmark appeared, and the next question rolled in. No submit button, no "Next." That fluidity is rare. In Levee we wanted something similar but reusable: the agent can ask multiple-choice or short-answer questions inside the conversation, and the UI renders them as real controls—checkboxes, text fields, ratings—instead of asking the user to type "A" or "my answer is X." When you submit, the answer is sent back in a structured format the model can parse and use to update lock items or move the stage forward. So you get the "just answer and it knows" feeling, but it's driven by tools and a single conversation surface, not a one-off wizard.

Form, chat, and synthesis modes

Stages can be form-first (fill fields, then send a summary message to the agent for confirmation and lock evaluation), chat-first (conversation and tool calls from the start), or synthesis (e.g. a final summary step). One framework, different stage types. Brand strategy might start with a form for company name and industry, then move to a chat stage for target audience and positioning. The same Levee primitives—rail, lock checklist, collected data—apply to all of them.

Interstitial and collected data

When a stage completes, a short overlay appears: "Stage complete," a summary line, and the title of the next stage. After a couple of seconds it dismisses and the next stage becomes active. No dead end. In the rail, a "Collected data" section shows what was captured in that stage (and previous ones). Context is visible and carried forward so the next stage can use it.

Brand strategy as one application

The Levee brand strategy block is one application of this. Stages like Brand Identity (form), Target Audience (chat), and later synthesis steps all use the same components. The pattern is reusable: you define stages and lock items, wire up an API that evaluates locks and returns structured completion, and you get a guided workflow that feels like a conversation but produces a clear outcome.

Design takeaways

When do you want a Dot-like open loop, and when do you want a Levee-like staged flow? Open loop fits ongoing companionship, journaling, and discovery. Staged flow fits strategy, onboarding, and any process where "done" has a definition. Lock items and tool-driven inputs reduce ambiguity: the user and the system agree on what "done" means, and the UI can show progress honestly. There's still room to borrow from Dot—for example, a proactive first message when you land on a stage, or a richer onboarding moment before the first stage—inside a Levee flow. The goal isn't to replace one with the other; it's to take the craft Dot demonstrated and apply it where structure is an asset.

Wrapping up

Dot set a bar for craft and clarity in AI companion UI. Levee is one way to carry that into goal-directed, multi-stage products: same attention to conversation and feedback, with stages, lock items, and visible progress. If you're building something that needs both chat and outcome, try the Levee brand strategy block and extend the pattern to your own domains.