05 Product Design·2026·lilaquadrat

One Level
Less

Studio had two levels that rendered the same page, and one tile shape standing in for everything on it. Nobody could hold a picture of the product in their head without a person there to explain it. The fix wasn't a feature. I took a level out.

The rebuilt Studio dashboard: a Favorites row above a row of project cards, each naming the project in large type with its company set quietly beneath it, and a Companies filter beside a New button in the header.
Role
Product Designer · sole design owner
Product
Studio · B2B content platform
Owned
IA · interaction · visual system · front-end
Context
Live customers throughout · no downtime
01The whole change

Three levels became one.

BEFORE THREE LEVELS LEVEL 1 All companies LEVEL 2 Company · Apps + Projects LEVEL 3 Project · Apps THE APP Customers 3 levels to cross AFTER ONE LEVEL LEVEL 1 Dashboard · Projects THE APP Customers company is a label on the card, and a filter in the header switch project here no page change CLICKS 7 → 3 LEVELS CLIMBED 3 → 0 THE APP RE-SELECTED 1 → 0 BEFORE THREE LEVELS LEVEL 1 All companies LEVEL 2 Company · Apps + Projects LEVEL 3 Project · Apps THE APP Customers AFTER ONE LEVEL LEVEL 1 Dashboard · Projects THE APP Customers company is a label on the card, and a filter switch here no page change CLICKS 7 → 3 LEVELS CLIMBED 3 → 0 THE APP RE-SELECTED 1 → 0
Hand-counted from matched recordings of the same task · no timings, because the legacy build animates page changes the new one doesn't
02The same task, before

The last click re-opens the app you never left.

You are in one company's Customers. You need the same app in another company's project. There is no way across, only up and back down. Customers → project → company → root → the other company → its project → Customers again.

The legacy shell · the crossing, start to finish
03The diagnosis

One shape stood in for three different things.

A tile was a company. A tile was a project. A tile was an app. Same size, same colour, uppercase label, no icon, no metadata. And two of the levels answered with a grid headed the same word. The breadcrumb was the only thing on screen that knew where you were, and it was the only thing.

The legacy root: each company as a heading with plain uppercase tiles beneath it.
Root · tiles are projects
A legacy company page: a grid headed Apps with five tiles, and below it a grid headed Projects.
Company · “Apps”, five tiles
A legacy project page inside that same company: a grid headed Apps with six tiles and nothing else.
Project · “Apps”, six tiles
Four of those tiles are the same four · users worked out their level from which ones were missing
04Constraints, and the bet

No research budget, no feature authority, live customers.

Sole designer. Live throughout, with no migration window to hide behind. The feature set wasn't mine to change. So I didn't touch what Studio could do. I changed where its things live.

The problem was never what Studio could do. It was that its structure was invisible.

The diagnosis came from the product itself · two levels rendering the same page is a structural fact, not an opinion
05What changed

Context survives the switch.

Projects came to the front, because a project is what people actually work in; company became a label on the card and a filter in the header. Apps stopped being a destination: one overlay holds this project's apps and every project, switchable in place. Change project from inside Customers and you land in the other project's Customers. Same screen, different data.

The same crossing, rebuilt · the header still reads Customers when the rows change
06The switcher, up close

A panel that also says what a project has.

Inactive apps stay in the grid, dimmed, so the panel answers “is this switched on here?” without a trip to settings. And a tile carries live state, so a timer running in one project stays legible from inside another.

The switcher overlay open over the editor, headed with the project name Objektportal, an All Projects button, a hide-inactive toggle, and ten app tiles with icons — two of them dimmed.
This project's apps · inactive dimmed, not hidden
The same overlay with the Tracker tile showing a running timer at 00:00:14 inside it.
Live state on the tile · Tracker still running
All Projects turns the same panel to the other axis · projects instead of apps, and no page change either way
07Surface area

The same model, applied across the product.

Detail views became structured records instead of rows. Team gained a real permission model where a tile used to sit with nothing behind it. And where a level genuinely matters, it is now named in words rather than inferred from which tiles are missing.

A customer record opening in a side panel over the Customers list, with person or company, personal data, a duplicate warning and address fields.
Customers · a record, not a row
A team member's panel listing per-app permissions as checkboxes grouped under Media and Publishing.
Team · real permissions
The App Store, split into Company Level Apps available across all projects, and Project Apps which override company defaults.
App Store · the level, in words
Dashboard · Projects · Customers · Team · Media · Publish · Lists · Hosting · Settings · App Store
08How it shipped

Designed in code, structure first.

Designed and built in Claude Code against a living design system, so it went to production instead of into a backlog waiting for dev capacity. Everything else inherits from the structure, which is why the structure shipped first.

Known gap

Page transitions aren't implemented yet. The legacy build handled motion better than this one does, and that is still owed.

What I'd measure next

Time to a first published item. How often support is asked where to find something. And whether the switcher gets used at all, or people still route through the dashboard.

The design system and the workflow behind it