Product design · Multi-location hospitality

From scattered signals to a decision someone can defend

Meridian is an AI-assisted ops platform for multi-location hospitality. It catches problems early, explains what they'll cost in terms you can check yourself, and helps regional teams approve a response. The system does the prep. A person still makes the call.

Role
Product strategy, UX, interaction and visual design
Scope
7 screens incl. edge states, light and dark · 23-component system
Domain
Multi-location hospitality operations
Status
Self-directed build, not user tested. The problems it works through are from client work I can't show
Meridian Control Tower overview screen
The operating reality

There's no shortage of data. The hard part is knowing what it means.

A regional director might run ten venues, or fifty. The job is working out which changes matter, which locations need help, what it costs if nobody acts, and getting a response moving before service starts.

The signals that answer those questions already exist. They're just spread across eight systems that don't talk to each other, and none of them knows what the others saw.

Most tools show you a metric or fire an alert, then leave you to piece the situation together yourself. Usually while guests are already feeling it.

Where this comes from

What I learned on a product I can't show you

Meridian is my own build, so none of this was learned by shipping Meridian. It came from an enterprise AI product I worked on with a team, in a different industry, under an agreement that means I can't show it. Three things from that work decided how Meridian is shaped.

How can I trust this? Where are these numbers from? This is great in theory, but what can I actually do with it?

The three questions that come up in almost every client meeting
  1. 01
    The demo was built to sell, and I was redesigning it to use

    The prototype clients first saw was built by our sales team to gauge interest, and it did that job. It showed everything the product could do at once: every input, every step of the reasoning, every caveat. That is the right instinct in a pitch and the wrong one for someone opening the tool on a Tuesday. My work was the redesign, which meant deciding what a person needs at a glance and what they only need on demand.

    In Meridian: the band at the top of an incident carries four figures and nothing else. The reasoning behind them sits behind a Why this reading control.

  2. 02
    We understood human-in-the-loop as a checkpoint before we understood it as trust

    The first pass reasoned about approval from the system's side: where does the pipeline need a person to sign off before it continues. That is a technical question and it produces a technical answer, which is one gate at the end. What clients kept telling us is that they will not act on a number they can't source, and they will not approve a plan wholesale when they are accountable for each piece of it. Approval is how someone builds a case they can defend to their own boss.

    In Meridian: approval is per action rather than per plan, so the recommended response reads 4 actions, 2 need your approval. Every impact figure carries its own math, and the block naming what weakens a reading sits on the same screen as the evidence supporting it.

  3. 03
    We built past the brief

    The action view originally animated the steps of a plan so you could watch the sequence unfold. It was the most sophisticated thing in the build, and users told us it was confusing. The client had been clear from the start that they wanted something clean and simple enough for anyone in the company to navigate, and we had built something that needed explaining. It came out.

    That trade costs something. The plain list shows four actions with no visible order or dependency between them, so the sequence lives in the wording rather than in the structure. We took it anyway. A feature that fights the brief is impressive and still wrong.

    In Meridian: Recommendation Review is a flat list of four actions.

The design challenge

Operators need enough to make a real decision. Show them every signal and you get noise, slower responses, and a system nobody trusts.

01

Surfacing

How do you surface the right issue without burying it in everything else the system noticed?

02

Reasoning

How does AI explain itself without a wall of text nobody reads mid-service?

03

Consequence

How do you make cost concrete without faking precision you don't have?

04

Accountability

How does approval stay fast enough to use and slow enough to mean something?

The product model

One lifecycle running under every screen

Meridian is built around one chain that runs under all of it. Each screen is a stop, and the fourth stop is a person.

Signalraw observation
Incidentsignals correlated
Impactmodeled consequence
Recommendationproposed response
Decisiona named human
Actionassigned work
Outcomemeasured result

Everything before Decision is prep. Everything after is follow-through.Meridian never crosses that line by itself.

The scenario

One disruption, start to finish

The whole thing follows a single Saturday. Every number here shows up again on every screen, and each one is worked out somewhere you can see it.

Region
Southwest
12 locations
Trigger
Sat 15 Mar
reservations +38% vs 4-week mean
Exposure
270 – 420
covers at risk across 3 locations
Modeled
$14k – $22k
270–420 covers × $52 avg check

Every figure below traces back to these four. Nothing gets invented downstream.

06 · Control Tower

What needs attention, and what it costs

This screen answers one question: where does the next hour go. The band up top states the situation in a sentence before any metric shows up. The numbers under it are consequences. Covers at risk, revenue at risk.

Control Tower: regional overview with priority incidents and approvals queue
1

Four figures share one container with divided cells, so the row reads as a single statement.

2

Status sits on a 4px rail, so you read severity before you read words. That matters when someone's scanning mid-service.

3

Pending approvals are on the same screen as detection, so you can see the whole loop without navigating away.

07 · Incident Workspace

Explain before you ask

This screen leads with plain language, then evidence, then a proposal. Nothing asks you to act until the situation's been explained in words you could repeat to your own boss.

Incident Workspace: plain-language summary, contributing signals, evidence and recommended response
1

Every impact number shows its math. $14k–$22k is 270–420 covers × $52 average check. You can redo that yourself.

2

Evidence is rated separately from severity. A critical incident can rest on weak evidence, and the screen says so.

3

There's a block for what weakens the read. Confidence you can't argue with isn't confidence.

08 · Recommendation Review

Approval that actually does something

This screen makes oversight mean something. It shows what you're authorizing, what it costs, what you can undo, and how long you have to decide.

Recommendation Review: four proposed actions, alternatives considered, expected effect and decision record
1

Actions that need your sign-off are outlined in violet, so you can see your own exposure at a glance.

2

The alternatives Meridian ruled out are listed with reasons. If you can't argue with a recommendation, you can't really approve it either.

3

Reject and Escalate sit level with Approve. Saying yes isn't the default.

09 · Outcome & Learning

Closing the loop, including where the model was wrong

The last screen measures what happened against what was predicted, keeps your reasoning attached to the record, and lets the system suggest its own fixes. You still have to accept them.

Outcome and Learning: predicted vs actual, decision record, and proposed model changes
Predicted vs actual, stated plainly, including the miss
MeasurePredictedActualResult
Covers at risk after plan40 – 9062In range
Revenue impact$2k – $4.7k$3.2kIn range
Median service time≤ 12 min14 minMissed
Guest rating changeno change−0.1Within tolerance
Plan cost$660 + $1.6k opp.$0 + $1.4k opp.Under
1

Predicted vs actual, stated plainly, including the one thing the model got wrong. Hiding that would make every other number worth less.

2

The record shows that holding overtime until the 14:00 re-check saved $660. A person beat the plan, and it's logged that way.

3

Playbook and calibration changes get proposed for confirmation. Nothing gets applied quietly.

Edge states

What it does when it has nothing useful to say

The happy path is the easy part. These three states are where an ops tool earns or loses trust: nothing's wrong, the model isn't sure, or a person says no.

All clear

Silence has to mean somebody checked. The zero state names the threshold that wasn't crossed, shows the eight systems still reporting and when each last checked, and offers to adjust the threshold so you're not left wondering whether it's broken.

All-clear zero state

Not sure enough to advise

Three weak signals at a venue with four weeks of history. Meridian holds back the impact number, lists the three things that would change its mind, and offers to hand it to a person.

Low-confidence state where Meridian declines to recommend
Revenue at risk reads Withheld · Not modeled. A range this wide would just be a guess.

Rejected

A rejection isn't a dead end. Your reasoning gets recorded word for word, the withdrawn action is marked, and the new constraint carries into whatever gets proposed next. No overtime without a second re-check.

Rejected approval state with recorded rationale
Trust

Three components doing the real work

Most of the thinking here isn't in the layout. It's in three small pieces that decide whether you can defend a call you made on Meridian's advice. All three are running in this page.

Revenue at riskModeled
$14k – $22k
270 – 420 covers at risk × $52 avg check

The range covers uncertainty in how many covers get lost. The check average is fixed. This is a model output.

DerivationEvery impact number carries the math behind it, and a range where a single figure would overstate what the model knows. A number you can't rebuild is a number you can't defend to your boss.

Reservations · POS
Saturday covers forecast 412 against a four-week mean of 298Strong · 3 systems agree · 12-week history

CorroborationEvidence strength describes the evidence itself. A serious incident can still rest on thin support, and it reads that way.

ConfidenceMedium

4 corroborating signals · no contradicting data

Calibrated confidenceConfidence uses violet, which keeps it out of the status palette. A low-confidence read never looks like a healthy one, and it always ships with the reason behind it.

Design system

Built so the second theme was basically free

Two collections. Raw primitives, aliased by semantic tokens that resolve per mode. No component holds a hex value. Building the whole dark theme meant switching one frame's mode, then auditing what broke.

Primitives
44
raw values, never used directly
Semantic tokens
30
each resolving in light and dark
Text styles
24
Inter throughout, mono for identifiers
Library components
23
63 variants, every fill token-bound
Meridian components in light mode
The same components in dark mode
The same components in both modes. Verified: 0 WCAG AA failures on every text node, 0 paint drift, 0 unused variables.
Result

The whole loop, closed

You can see what needs attention, understand why it matters, dig into the reasoning behind it, approve something you're personally accountable for, and afterward find out whether it worked. Including the places the model got it wrong.

What I want to test next

  • How long it takes to find the highest-risk incident cold.
  • Whether people can restate where a revenue number came from.
  • Whether the confidence meter changes what gets approved, or just gets ignored.

Known limitations

  • The scenario data is constructed. No model has been trained behind it yet.
  • Only the approver's path is designed so far. The GM's mobile view is still open.
  • Contrast is verified across every screen. Keyboard and screen reader flows still need a pass.