Investor dashboard at D8

2026 · Senior Designer

D8 client dashboard after the redesign — portfolio screen

D8 is an investment house — not a mass-market broker. It works with high-net-worth private and corporate clients, each assigned a personal relationship manager. The client dashboard is the web surface where clients view their portfolio, trade on the exchange, and buy over-the-counter products.

I worked on the dashboard redesign as a product designer. My part was the trading surface: portfolio, quotes, the options board, and screen states. The over-the-counter product catalog and document workflow were owned by other designers on the team, and they appear in this case only where they intersect with my scenarios.

Where we started

The old dashboard was a holdover from the terminal era: dense grey tables, tabs stacked three rows deep, section names lifted straight from the back-office system. Clients used it — but as a reference tool. Anything beyond “check the balance” they did by voice: calling their relationship manager and asking them to handle it.

That’s expensive for the house twice over. The relationship manager is the company’s most expensive resource, and their job is to sell — not to read account balances aloud. And a client used to calling doesn’t open the dashboard, which means they never see what the house is selling on the catalog.

38%
of operations the client completed themselves, the rest went through a manager
61%
of manager inquiries were questions the dashboard already answered
~9 min
average call length for that kind of question
18%
of clients opened the dashboard more than once a week

The brief

The redesign’s success metric wasn’t “improve usability” — it was specific: raise the share of operations clients complete themselves, without calling a manager. We started at 38%. Everything else follows from that.

Hypothesis

Clients don’t call because they can’t figure it out. They call because they’re not sure they’ve read the screen correctly, and the cost of a mistake is high. So the fix isn’t education — it’s certainty: leave no room for double interpretation, and flag restrictions before the client starts acting, not after.

Which leads to a conclusion that runs against the grain of most products: you can’t simplify your way out of this. Every detail hidden for the sake of a cleaner screen is one more reason to double-check by phone.

Four gates every decision had to pass

The redesign was large, and every screen was up for debate. To keep the debate off matters of taste, we fixed four checks. A decision that failed at least two of them didn’t ship.

Answers without a manager
A screen either closes the question completely or doesn’t close it at all. “Call your manager for the rest” is a failed scenario, not a fallback.
Restrictions are visible before the order is built
Anything that would block a trade is shown before the client starts choosing parameters. A rejection message at the end of the funnel doesn’t count.
Terms are explained on the spot
If the interface shows a term borrowed from the back-office system, the explanation sits right next to it. A link to the knowledge base doesn’t pass this gate.
It’s clear which account this belongs to
Every amount, position and order is tied to a specific contract. A screen without an explicit account is a screen you can’t make a decision on.

Money that doesn’t exist yet

The most common source of confusion in a brokerage dashboard is the gap between a trade and its settlement. A client sells an asset: the trade is done, the position is gone, but the money arrives only after settlement. They can buy another instrument with it right away — but they can’t withdraw it yet. That’s not an edge case, it’s daily normal operation, and a single “balance” number doesn’t describe it.

There’s a second reason the balance “doesn’t add up” — margin. Open positions on the derivatives market lock up part of the funds, and the client can’t use it until the position closes. In the interface this is a lock icon with an amount next to the free balance: the locked funds are shown as a separate figure, not silently subtracted. Subtract it silently, and you get a call asking “where did my money go?”

In the portfolio, these amounts show up in a line labeled straight from the back-office system — “Future money.” Behind it are expected proceeds from over-the-counter sell trades. The client sees it in their portfolio and has every right not to know what it means.

I proposed renaming it into something human. Back-office pushed back, and rightly so: it’s not a screen label — it’s the name of an accounting entity that reconciliation depends on. Rename it in the dashboard and it drifts out of sync with the brokerage report and statement, and the client ends up seeing three different words for the same money across three documents. That would make things worse, not better.

The compromise: we kept the name and put the explanation right in the line — not as a footnote or a link to a help article, but as a tooltip exactly where the question comes up. This was a case where the right design call loses to the right accounting call, and pushing the argument further would have been stubbornness.

Back-office term explained right in the portfolio line

A mid-project reversal

In the first build, the account switcher lived in a dropdown in the header — compact, the way it’s usually done in products with a single account. Testing showed what that actually cost.

“He built the whole order, then asked: ‘wait, which account am I actually buying from right now?’”
— from a usability testing session

We had designed for someone with one account, when we needed to design for someone with several contracts at once. The same quotes screen means something different depending on which account you’re viewing it from: an instrument might be available on one and not another, margin requirements differ. The interface said nothing about any of that.

Which is where the one deliberate duplication in the whole dashboard comes from: the account and its balance appear both in the screen body and in the header. The header stays put while scrolling long tables, so context is visible at the moment of action, not just at the moment of entry. It cost us a strip of screen real estate and one long argument with product about “why show the same thing twice.”

Screens

01 — Portfolio
Summary, trend, actions — in that order

At the top, the overall picture across all contracts; below it, the selected account with a chart; below that, the three actions clients come in for most: deposit, withdraw, analytics. The prompt to confirm an email for two-factor authentication is shown as a strip under the chart, not a modal on entry. Security matters, but blocking a client’s own money to enforce it just trains them to close dialogs without reading.

Portfolio: account summary, chart, exchange rates
02 — Quotes
One table, different units

Asset classes are priced differently: stocks in rubles per share, bonds as a percentage of face value, futures in points, currencies at an exchange rate. This isn’t a styling detail — it’s different entities living in the same “Price” column. So the unit is always printed next to the value: otherwise a percentage-of-face-value figure sitting under a stock price reads as a data error, and that’s one more reason to pick up the phone.

Bonds are a trap of their own. The quote is a percentage of face value, but the client actually pays more — accrued coupon income gets added on top. The price in the list and the amount in the order legitimately don’t match, and if that’s not explained, the gap reads as a system error. Accrued interest is broken out as a separate figure on the instrument card — where the client is doing the math — rather than in the shared table, where they’re comparing instruments against each other.

At the start of each row — favorite, an instrument note, and a price alert. We pulled these out of the “⋮” menu after nobody in testing could find the alert option there: for a watchlist, these are the most frequent actions, and one extra click kills the whole scenario.

Quotes: different asset classes in one table
03 — Currencies and metals
A position and an instrument aren’t the same thing

A single currency can sit in several positions, bought at different prices at different times. For tax purposes and for understanding results, those are separate records; for the question “how much yuan do I have”, they’re one. Rows are collapsed to the instrument level, and the position-level breakdown expands on demand. The total is always visible; the detail shows up when it’s needed.

Currencies and metals: positions grouped by instrument

Options: the product’s most expensive rejection

The options board is the densest screen in the dashboard, and there’s no way around that: choosing a contract means seeing strike, theoretical price, volatility, and both sides of the order book at once. Thinning it out just forces the client to compare from memory. The underlying asset’s current price is set into the table as its own row: it splits strikes into “in the money” and “out of the money”, the main reference point when choosing. Every header carries a tooltip — even an experienced client isn’t expected to remember which model this particular system uses to calculate theoretical price.

But density wasn’t the expensive part. Not every account can trade options — only designated ones; the rest can only view the board. The rule itself is reasonable; the problem was the timing. In the old dashboard, the client found out about it when submitting an order, after already picking an asset, strike, and expiry. Looking through support tickets, this turned out to be the single most common reason for a call to the trading desk.

Options board: strikes, volatility, order book

So I deliberately kept the empty state and the restricted state apart. “Nothing matches these filters” and “you can’t trade from here” are different problems with different next steps. Merging them into one grey screen just sends the client to find out why over the phone.

04 — Empty
No data — the tools stay

The combination of underlying asset and expiry date returned no contracts. The filters and asset list stay put: the client changes the date right there, without going back or guessing what broke.

Empty state of the options board
05 — Restricted
The reason, in plain terms, before the order is built

The restriction is shown the moment the client opens the screen from this account, not when they submit an order. The data underneath the message stays visible: anyone can view the board, they just can’t trade from here. The next step is obvious — switch the account in the header, which hasn’t gone anywhere.

Restriction: trading is only available from designated accounts

A regulatory gate at the edge of the catalog

The over-the-counter product catalog was owned by another designer, but the gate reached into my scenario: the order was assembled in the trading surface and then tripped over a catalog requirement. We worked through it together, so what follows is about the seam, not the whole section.

Before trading a complex instrument, a non-qualified investor is legally required to pass a knowledge test. That’s a legal requirement, non-negotiable. An important caveat on scale: most clients in D8’s segment qualify by asset threshold and hold qualified-investor status, so the test doesn’t apply to them at all. The gate is seen by roughly a fifth of the client base, which capped how much this could ever move the needle.

The one thing we could control was when the client finds out. Previously the test surfaced at the end: the client picked a product, set the parameters, hit “buy”, and got a questionnaire. We moved the test status and the button up into the order card, onto the product’s first screen. The gate is now visible before any time is invested — and it’s wasted time, not the legal requirement itself, that turns this into resentment toward the broker.

The test itself runs as a modal over the product page, not a separate section: after the last question, the client lands back exactly where they left off, with the instrument already selected.

Knowledge test as a modal over the product page

Results

First measurement — four months after the full rollout.

The metric the redesign was built around
38% → 64%
share of operations clients complete themselves, without calling a manager
−43%
manager inquiries about questions the dashboard already answers
18% → 43%
clients open the dashboard more than once a week
−71%
options-order rejections due to a mismatched account
+6%
test completion rate — within margin of error

The headline number went from 38% to 64%: clients now handle two-thirds of operations themselves. Options rejections dropped the most in percentage terms and confirmed the hypothesis almost literally — people didn’t need the rule explained to them, they needed to see it in time.

The last one is an honest miss. I expected moving the gate to the first screen would noticeably raise the test-completion rate. It didn’t. Two things came together here: only non-qualified clients ever see the test — roughly a fifth of the base — and at that sample size, six percent is indistinguishable from noise. It looks like the questionnaire filters out not people who didn’t make it that far, but people who aren’t willing to sit through it at all, and moving a button doesn’t get past that wall. In hindsight, I wouldn’t have staked a separate hypothesis on this one — the stakes were small from the start, and the segment size made that clear before we ever measured anything.

What’s next

Break the test into steps
A questionnaire as one long list reads as a wall. Testing a version split into blocks, with visible progress and answers saved between sessions.
Pending position as its own entity
Right now settlement and locked funds are explained through tooltips. The next step is showing current and pending account state as two explicit states, not as footnotes to one.
Price alerts
Right now it’s just an icon in the quotes row. A full notification flow is the most requested feature from clients since the redesign.

The real result isn’t the screens

The visible outcome is the dashboard. The more valuable one is the table underneath it.

It’s a single component that handles different asset classes with different units, groups positions by instrument, carries empty and restricted states, and a tooltip on any header. Anything new the house adds to the shelf slots into it without new design work — and that’s what outlives this particular redesign.

The second thing that outlasted the project is the four gates. They’re cheaper than any design system, and they settle most arguments before a mockup even exists: the question isn’t “do I like it”, it’s whether it passes or not.