Skip to content

Moritz · Case study

Redesigning a law firm's front door

Moritz is an AI-native law firm. A client describes their matter, an agent drafts a first pass, and a lawyer finishes it. Intake is the only part clients drive themselves, and too many came out of it unsure what had just happened. I redesigned it end to end and built it as a working prototype inside the firm's own codebase.

Design EngineeringUX/UIAI Product DesignUX Writing
Role
Product design · Design engineering · UX writing
Client
Moritz, an AI-native law firm
Timeline
3 days · September 2026
Delivered
A working TypeScript prototype in the firm's codebase, behind a design switch

The customer

Moritz is a law firm where you talk to an agent before you meet a lawyer.

Its clients run businesses. They arrive with a contract dispute, an employment question, a supplier who wants out, and no legal team of their own. They type what happened, an agent builds the case notes, and one of the firm’s lawyers takes it from there. Intake is the first thing a client ever does with Moritz, and the only part they do alone.

'The lawyers who take on cases like yours. You'll see a quote before you pay anything.' Five lawyers with their backgrounds: Daniel, Kyle, Max, Aélita, Catarina.
The people behind the agent. A client now meets them before typing a word.

The problem

Clients finished intake and still didn't know what had happened.

The flow worked. People got through it. But the feedback coming back from real clients kept landing on the same four things:

  1. 01I'm not sure my case was actually submitted.
  2. 02I don't know which step I'm on, or how many are left.
  3. 03I can't find where to upload my documents.
  4. 04It feels sterile. Like a form, not a firm.

Two goals, pulling against each other. Make submitting a case as clear as possible. Make it feel like a premium firm, not a web form. Most fixes for one make the other worse. That tension was the design problem.

The approach

Show people where they are, at every step, with real people in it.

All four complaints are one complaint. The client can’t see the process. So the redesign puts the process on screen everywhere the client looks: a story before they start, a receipt after every answer, a track after they submit, a lawyer’s face at each of those moments. Here’s what changed, moment by moment.

MomentBeforeAfter
Starting a caseA 'Start a case' button, a few clicks deepOne composer under the greeting, on every visit
Knowing you've submittedNothing on screen said soA case number, a card that says Case submitted, a track that shows what's next
Knowing where you areA side panel you had to openA receipt in the thread after every answer, and a count in the brief
UploadingAn attach control people couldn't findIn the placeholder, in Moritz's first message, in the brief panel, at any step
WaitingA promised time nobody could keepThree narrated steps, then 'your notes are with the lawyers'
Who's behind itFaces on the confirmation onlyReal lawyers on home, in the brief, on the card, on every tile

The story, in three beats

Before you type anything, the journey plays once: talk, quote, lawyers.

A brand-new client lands on an empty home screen. Instead of a button, they get a six-second story: talk to Moritz, receive a quote and pay, our lawyers take on your case. It ends on three real faces, and the composer slides in underneath.

First visit. The story plays once, then gets out of the way.
The three beats of the case journey: Talk to Moritz about your case, Receive a quote and pay, Our lawyers take on your case.
Three beats. It ends in people, not a checkmark.

This one animation answers all four complaints at once. You see the steps before you take them. You see there is a submit, a quote, a person at the end. And it feels like being welcomed, not being processed. It never repeats, so it never becomes noise.

One mark, everywhere

One small dot tells you what's done, what's next, and what you skipped.

The step dot and its rail were drawn six different ways across the app. I made one foundation component and gave it five states, then used it everywhere a client asks “where am I?”: in the brief panel, in the receipts in the thread, on the track of the submitted card, and on the case tiles at home.

Filled

Green, with a check. This step is done.

Current

A ring with a pip and a soft halo. You are here.

Dashed

A dashed ring. You skipped it, and that still counts.

Outline

An empty ring. Still to come.

Ghost

Just the glyph, no ring. A note, not a step.

The rail

The hairline between two marks. It turns green once the run above it is done.

A skipped optional step in the brief panel, drawn with a dashed ring, still counted as done.
In the brief panel: skipped, still counted.
A step receipt in the thread: a green check, 'Saved timeline', then Moritz: 'Got it, you need to resolve this by end of week. We have what we need.'
In the thread: a receipt after each answer.
The four-step track: Case submitted, Estimating quote, Accept and pay, Meet your lawyer.
On the card, laid out sideways: the same mark, four steps, ending in people.

Starting

One typed message, and the case exists.

The composer sits under the greeting on every visit. You type what happened, and the conversation opens with your words already at the top and the brief panel already filling in.

The first message starts the case. Nothing to click first.

Where am I

Every answer gets a receipt in the conversation.

Each answer leaves a one-line receipt in the thread, and the count in the brief moves. Skip a step and it still counts. You chose, so it’s done.

Answer, receipt, next question. The brief fills in as you talk.
The case brief header with its step count.
The count, top of the brief panel.

The receipts aren’t a new capability. The agent already knew what it had saved. It just never said so.

Transparency

When Moritz fills something in for you, it says so.

A long first message often answers three questions at once. Moritz takes them, names which ones it took, and leaves them editable. Anything it filled in is yours to correct.

One message, three items filled, one line saying so. Then a click to correct one.
Moritz: 'Got it, early termination notice with a fee dispute, deadline end of next week. I took what you need and other side from your message. Change anything I've got wrong. What would a good outcome look like? Feel free to skip if you're not sure yet.'
The line, in the script.

Uploading

The upload button is now the first thing you read.

It’s in the placeholder, in Moritz’s first message, and in the brief panel at every step. A file is accepted at any point, not only at the documents step.

The composer: 'Describe your matter, or drop a document here', an Attach file button, a microphone, and a black 'Start a new case' button, with matter chips below.
Describe your matter, or drop a document here.
The brief panel mid-intake: Timeline is current, Documents is optional with an Attach files button, Review and submit is next.
Brief panel, any step: Attach files.
The brief panel after a file is attached: the document listed under Documents, with an Add more files button.
Brief panel, after: Add more files.

For contract matters, the document is the very first question. A contract usually already exists, and asking for it late means re-asking everything it would have answered.

Submitting

Submitted. A case number, a track, and the lawyers it's heading to.

Submitting used to end in a page that looked like the one before it. Now it ends in a card: a check, a number, a four-step track, and the three people your case is going to.

The moment of submission.
The submitted card: a check, 'Case submitted', the title 'Northwind Fulfilment Termination', case number M-2026-0127, and a track: Case submitted, Estimating quote, Accept and pay, Meet your lawyer, ending in three lawyer faces.
The card. The track ends in the three lawyers the case is heading toward.

Waiting

While the agent works, the wait is narrated, not promised.

After submit, the agent needs a few minutes. Instead of a spinner, Moritz says what it’s doing, step by step, and tells you that you don’t need to stay.

Moritz: 'We're getting your case ready for the lawyers. It takes a few minutes and you don't need to stay.' Then two green checks, 'Read your documents' and 'Case notes ready', then 'Your case notes are with the lawyers now. Your quote is next.'
Three real steps, in plain words, then a handover.

Coming back

Back home, every case shows its stage and its lawyer.

A case tile changes shape as the case moves: a track before a lawyer is assigned, a name and a face after. Every tile shows when it last moved, so there’s no wondering where a case is.

Your cases: a hero tile for the newest case with the four-step track, a compact row that says 'Ready for payment' with three faces, and a row that says 'Aélita is on your case' with one face.
Your cases, the moment after submitting. Newest on top, with its track.
A returning client's cases: 'Aélita is on your case' and 'Daniel is on your case', each with the lawyer's photo.
A returning client. A lawyer on every case.

Human

A real person at every step, and never a promise of one before it's true.

A lawyer’s face shows up on home, in the brief panel, on the submitted card, on every case tile, and on every case you come back to. The same three faces follow a case from the card to the tile, so they never shuffle.

The bottom of the submitted card: the three lawyers the case is heading toward, and what happens next.
The bottom of the submitted card: who it's going to, and what happens next.
The brief panel footer: three lawyer faces and a line about the quote.
Brief panel, every step.
A case tile after submit, its track ending in three lawyer faces.
Case tile, after submit.

One thing I refused: a named lawyer on the brief before one is assigned. It would have promised a person the firm hadn’t given you yet. So the track ends in the three lawyers the case is heading toward, and a name appears only when it’s real.

Voice

Moritz sounds like a firm, not a form.

Most of what Moritz says is scripted by hand, and the model only fills in what it pulled from your message. A few of the lines:

Your brief fills in as you talk.
— Brief panel
Two left: documents, then review.
— Brief panel, mid-way
I took the timeline and other side from your message. Change anything I’ve got wrong.
— Moritz, after the first message
Quote first, then we assign your lawyer.
— Brief panel, after you submit
We’re getting your case ready for the lawyers. It takes a few minutes and you don’t need to stay.
— Moritz, after submit
Anything to add or change? Tell me here.
— Composer, at review

What I'd do next

Five things, in order.

Watch strangers use it

Start with a Maze or UX Army run, then make small changes from what people actually do.

Give the canvas some depth

The app is white on white right now. A light grey ground and a tighter token map would help.

One primary action per screen

Redo the nav and the screens so the black button is the one thing to do, and everything else drops to secondary.

Email at every milestone

One at each milestone: submitted, quote ready, lawyer assigned.

Give Moritz a voice

Prompt the model for a slightly formal, conversational tone, cut the em dashes, and sharpen the extraction.