Interlace: turning a codebase-intelligence platform into a guided path

Interlace turns a codebase into a knowledge graph that AI assistants query over MCP. I audited its admin application and redesigned the path from uploading code to a working IDE connection.

Stage
UX audit, redesign
Role
Product Designer
Timeframe
May 2026
Publication
Client identity withheld.
Scope
  • UX audit
  • UX strategy
  • Redesign
AI developer platform UX audit Redesign

Decision summary

29 findings across five areas, triaged by impact and effort, and answered by one guided admin path and four system rules.

01 / The product

A powerful engine.
An interface that shows its wiring.

Interlace is AltexSoft's codebase-intelligence platform. It parses source code into a knowledge graph. Developers then query that graph from their AI assistant through MCP, so answers about a large or legacy codebase rest on its actual structure. Getting there takes an admin five separate steps in the web application. That application is what I audited.

How Interlace turns source code into answers in an AI assistant. Stages 01 to 04 are the admin's work in the web application; stage 05 is the developer's, in the IDE.
  1. 01

    Source code

    A ZIP upload, or a GitHub, GitLab or Bitbucket repository.

  2. 02

    Pipeline

    LLM-driven parsers read the code in phases.

  3. 03

    Knowledge graph

    Services, endpoints, entities and user flows.

  4. 04

    Snapshot

    A fixed version of the graph, deployed to a DEV or PROD slot.

  5. 05

    MCP to the AI assistant

    The developer asks Cursor or Claude Code, which answers from the graph.

Stages 01 to 04: Admin, in the web app Every audit finding sits on this path.
Stage 05: Developer, in the IDE Where the result is felt.

Admin

Creates projects, uploads code, runs pipelines, creates and deploys snapshots, and issues MCP access. Every finding in this audit sits on the admin's path.

Developer

Never needs the web app beyond a token. Their experience starts in the IDE, which is why every broken hand-off upstream reaches them as “the assistant doesn't know our code yet”.

What shaped the recommendations

  • Pipelines are LLM-heavy. A single parse can take around 20 minutes and costs real compute. Mistakes late in the flow are expensive, and any automation has to respect cost.
  • The team was already moving snapshots and graphs into project scope. Visual navigation fixes could ship at once; structural navigation changes had to follow that migration.
  • Interlace is B2B, one tenant per company. The admin is technical, so the interface should save clicks, not teach.
Four terms used on this page
Pipeline
One parsing run over the project's code.
Snapshot
A frozen graph produced by a pipeline.
Deploy
Make a snapshot the graph that assistants query in DEV or PROD.
MCP
Model Context Protocol, the way AI assistants connect to tools and data.

02 / My task

Assess the experience.
Leave the team a plan.

I was asked to evaluate the design and UX strategy of the user-facing application: where it helps an admin reach a working MCP connection, where it gets in the way, and what to fix first. I worked on this alone as the product designer. The audit covered the whole application, grouped into five areas: Home, Project flow, Repository, Grid views and Navigation.

03 / How I audited

Walk the real workflow.
Score every break in it.

I went through the full admin workflow on the live build, from an empty project to a working IDE connection, and confirmed the sequence in a walkthrough with the team. Every screen that raised an issue was captured and annotated where it happens.

Method

  • Nielsen's usability heuristics. Above all, visibility of system status, match with the real world, and error prevention.
  • Hick's and Jakob's laws. Fewer choices and manual steps; patterns that match the tools developers already use.
  • WCAG 2.1 AA. Contrast and legibility checked as correctness, not taste.

Priority scale

Each finding was scored on two axes: user impact and implementation effort. The labels express triage, not how desirable a feature is.

Critical
Actively misleads users, blocks a key action, or fails WCAG 2.1 AA. A bug in the interaction layer, not an opinion. Fix before anything else ships.
High
Significant friction in a primary workflow. Not a blocker, but it erodes confidence and creates recurring support load. Fix in the same release cycle as Critical where scope allows.
Medium
Real friction with a workaround, on secondary paths. Address before the product scales.
Additive
Nothing is broken; this is net-new capability. Treat it as a hypothesis: prototype, validate with users, then build.

Where the workflow halts

Five steps stand between an empty project and a developer's first answer. Every hand-off between them is manual.

  1. Step 1

    Upload code

    The folder has to be named first. Leave it blank and it looks like success.

    Manual hand-off
  2. Step 2

    Run pipeline

    Nothing prompts the run, and progress can sit still for minutes.

    Manual hand-off
  3. Step 3

    Create snapshot

    The admin has to notice completion and find the snapshot screen alone.

    Manual hand-off
  4. Step 4

    Deploy

    Deploying to PROD looks more dangerous than deleting.

    Manual hand-off
  5. Step 5

    Connect MCP

    Setup asks for a hand-merged JSON config.

04 / The audit

29 findings.
Each one on the screen where it happens.

29 findings on 16 screens, in the order an admin meets them. Jump to a group of screens, or read straight through. Every marker points to its finding; every finding says what is wrong, what to change, and where the redesign answers it.

Findings by area and priority.
Area CriticalHighMediumAdditive Total
Home 0010 1
Project flow 23130 18
Repository 0010 1
Grid views 2111 5
Navigation 1210 4
All 56171 29

Most friction sits in the project flow, the path every admin has to take. The Critical findings are spread across four of the five areas.

The five Critical findings

  1. Critical A blank folder name fakes a successful upload Nothing is processed, and nothing says so.
  2. Critical Deploying to PROD looks more dangerous than deleting The colour of danger marks a normal step.
  3. Critical Table headers fail contrast and break the type system Headers fall below WCAG 2.1 AA contrast.
  4. Critical Blue IDs look like links but do nothing A false affordance in every table.
  5. Critical Inside a project, the navigation forgets where you are Global and project-scoped lists look the same.

Actively misleads users, blocks a key action, or fails WCAG 2.1 AA. A bug in the interaction layer, not an opinion. Fix before anything else ships.

Home

Home dashboard

Open full size
Original home dashboard screen. Numbered markers point to the findings listed with it.
  1. Medium Finding 1 on this screen.
    The home dashboard says almost nothing

    Problem

    Home shows a welcome banner and three cards that link to Projects, Pipelines and Graph, and none of them carries data. The first screen after sign-in can't tell the admin whether anything needs attention.

    Fix

    Turn the cards into telemetry: counts of projects, pipelines and graphs, plus status badges (Done, Failed, Pending) for the most recent pipelines.

    Visibility of system status

    See it fixed in the redesign: step 1, Project home

Projects

Projects list

Open full size
Original projects list screen. Numbered markers point to the findings listed with it.
  1. Medium Finding 1 on this screen.
    The projects table lists database fields, not project health

    Problem

    The projects table has six columns: ID, Name, Description, Status, Created at and Updated at. Four are administrative metadata, and nothing shows pipelines, graphs or code. To learn whether a pipeline failed or a graph is live, the admin has to open each project.

    Fix

    Add operational columns: linked repositories, last pipeline status, and deployment (DEV, PROD or none). Remove Created at and rename Updated at to Last activity, which also avoids horizontal scrolling.

    Visibility of system status; recognition rather than recall

    See the rule: rule 1, tables
  2. High Finding 2 on this screen.
    Each table handles row actions differently

    Problem

    Snapshots stack a solid View button, a Deploy dropdown and a trash icon. Pipelines mix text links with red icons. Repositories and Projects use a kebab menu. Every table has to be learned separately, and visual weight no longer signals importance.

    Fix

    Use one global pattern. A kebab menu holds the secondary actions, with at most one standalone icon for a critical action. Apply it the same way in every table.

    Consistency and standards

    See the rule: rule 1, tables
  3. Critical Finding 3 on this screen.
    Table headers fail contrast and break the type system

    Problem

    Headers such as NAME, STATUS and ACTIONS use a light grey that appears to fall below WCAG 2.1 AA contrast, and they are set in all caps, which the product uses nowhere else. A contrast failure is a correctness problem, not a style preference.

    Fix

    Darken the headers to at least 4.5:1 and set them in sentence case (Name, Status, Actions).

    Accessibility (WCAG 2.1 AA); consistency and standards

    See the rule: rule 1, tables
  4. Critical Finding 4 on this screen.
    Blue IDs look like links but do nothing

    Problem

    Pipeline IDs (#7, #6) and project IDs are set in the link colour but are not clickable. Blue text in a table reads as a link, so static blue text causes misclicks and erodes trust in every other signal.

    Fix

    Make the identifier the link to the detail view. If it has to stay static, set it in the body text colour.

    Consistency and standards; error prevention

    See the rule: rule 1, tables
  5. Additive Finding 5 on this screen.
    Grids have no summary of system health

    Problem

    Every grid lists rows with a pagination count and nothing above them. Questions like “how many pipelines failed today?” need mental arithmetic or a scan of every row.

    Fix

    • Projects: total, active pipelines, failed pipelines.
    • Pipelines: runs in 30 days, success rate, running now, average duration.
    • Snapshots: total, storage used, active deployments.
    • Repositories: connected sources, last synced, sync errors.
    • A hypothesis to prototype and validate.

    Flexibility and efficiency of use

    See the rule: rule 1, tables
  6. Critical Finding 6 on this screen.
    Inside a project, the navigation forgets where you are

    Problem

    On project sub-pages (pipelines, snapshots, MCP access), the Projects item is no longer highlighted. The admin can't tell whether a list is global or scoped to this project.

    Fix

    Keep Projects active on every page that belongs to a project.

    Visibility of system status; recognition rather than recall

    See it fixed in the redesign: step 1, Project home
  7. High Finding 7 on this screen.
    The sidebar toggle lives outside the sidebar

    Problem

    The collapse control sits in the global header, away from the panel it controls. A control is expected next to the thing it changes.

    Fix

    Move it into the sidebar, as a chevron at the top or a control at the foot. This frees the header for global and contextual navigation.

    Match between system and the real world

    See it fixed in the redesign: step 1, Project home
  8. High Finding 8 on this screen.
    Every table opens details differently

    Problem

    Snapshots use a solid View button, and the name is plain text. Pipelines have a View details link and a clickable ID. Repositories and Projects make the name the link, in two different colours. The admin has to relearn how to open an item on every table.

    Fix

    Adopt the linked-name pattern everywhere. The primary identifier is the only link to the detail view. Remove View and View details.

    Consistency and standards

    See the rule: rule 1, tables

Project dashboard

Open full size
Original project dashboard screen. Numbered markers point to the findings listed with it.
  1. Medium Finding 1 on this screen.
    The project page hides its own context

    Problem

    The project header shows only a folder icon and the name. The ID, description, owner and dates live in Settings, so anyone opening the project has to go elsewhere to learn what it is.

    Fix

    Use the empty space under the title for a meta line: project ID, description, owner and last update.

    Recognition rather than recall

    See it fixed in the redesign: step 1, Project home
  2. Medium Finding 2 on this screen.
    Dashboard cards count things instead of reporting status

    Problem

    The dashboard cards say “2 pipelines” or “0 snapshots”, but not whether the latest run succeeded or whether anything is deployed. The numbers are true but not useful: the admin still has to open each section.

    Fix

    • Pipelines: the latest run's status and progress, with Rerun on failure.
    • Snapshots: the latest date and deployment.
    • MCP access: token state and last rotation.

    Visibility of system status

    See it fixed in the redesign: step 1, Project home
  3. Medium Finding 3 on this screen.
    Nothing tells a new project what to do first

    Problem

    Six cards carry equal weight, although the workflow is strictly sequential: upload code, run a pipeline, create a snapshot, deploy, use MCP. A new admin has to discover the order by trial and error.

    Fix

    Add a next-step area whose primary action follows the project's state. For example, “Upload code and start analysis” when there are no pipelines, and “Create snapshot” when a run has just finished.

    Help and documentation; error prevention

    See it fixed in the redesign: step 1, Project home
  4. Critical Finding 4 on this screen.

    Inside a project, the navigation forgets where you are

    Described on Projects list
  5. High Finding 5 on this screen.

    The sidebar toggle lives outside the sidebar

    Described on Projects list
  6. Medium Finding 6 on this screen.
    Back and the page title compete for one row

    Problem

    “Back to project” sits on the same line as the page title, so escape navigation and page identity blur together.

    Fix

    Move Back to the left of the global header, into the space freed by the sidebar toggle, and give the title its own line.

    Aesthetic and minimalist design; consistency and standards

    See it fixed in the redesign: step 1, Project home

Uploading code

Project settings: code upload

Open full size
Original project settings: code upload screen. Numbered markers point to the findings listed with it.
  1. Critical Finding 1 on this screen.
    A blank folder name fakes a successful upload

    Problem

    Uploading a ZIP requires a folder name first. Left blank, the interface behaves as if the upload succeeded, but nothing is processed. A silent failure at the first step breaks everything after it, and the admin finds out much later.

    Fix

    Remove the up-front field and derive the folder name from the ZIP file name. Keep it editable.

    Error prevention; match between system and the real world

    See it fixed in the redesign: step 2, Add code
  2. High Finding 2 on this screen.
    Uploads merge silently, and folders can't be renamed

    Problem

    Uploading to an existing folder name merges the two without warning, and a folder can't be renamed once it exists. Silent merges risk corrupting the code the graph is built from.

    Fix

    On a duplicate name, ask whether to merge or to upload a new version (for example backend_v2). Add an inline Rename action to the code structure table.

    User control and freedom

    See it fixed in the redesign: step 2, Add code
  3. Medium Finding 3 on this screen.
    After upload, the next step is manual

    Problem

    Once code is uploaded, the admin has to navigate to Pipelines and start the analysis by hand. The flow stops at the moment the admin is most ready to continue.

    Fix

    On success, offer the next step in place: “Code uploaded. Run pipeline now.”

    Flexibility and efficiency of use

    See it fixed in the redesign: step 3, Run pipeline

Project repositories

Open full size
Original project repositories screen. Numbered markers point to the findings listed with it.
  1. Medium Finding 1 on this screen.
    “Run Pipeline” doesn't say what it runs

    Problem

    On the project's Repositories page, Run Pipeline sits next to Link repository. It could run for the listed repositories, for the whole project, or simply open Pipelines. Ambiguity is expensive when a run takes around 20 minutes.

    Fix

    Name it for what it does. If it navigates, use “Go to pipelines”. If it starts a project-wide run, use “Run project pipeline” and put it behind a confirmation.

    Match between system and the real world; error prevention

    See it fixed in the redesign: step 3, Run pipeline
  2. High Finding 2 on this screen.

    Each table handles row actions differently

    Described on Projects list
  3. Critical Finding 3 on this screen.

    Table headers fail contrast and break the type system

    Described on Projects list
  4. Additive Finding 4 on this screen.

    Grids have no summary of system health

    Described on Projects list
  5. Critical Finding 5 on this screen.

    Inside a project, the navigation forgets where you are

    Described on Projects list
  6. High Finding 6 on this screen.

    The sidebar toggle lives outside the sidebar

    Described on Projects list
  7. Medium Finding 7 on this screen.

    Back and the page title compete for one row

    Described on Project dashboard
  8. High Finding 8 on this screen.

    Every table opens details differently

    Described on Projects list

Linked repository: upload new version

Open full size
Original linked repository: upload new version screen. Numbered markers point to the findings listed with it.
  1. Medium Finding 1 on this screen.
    The “Edit” page can only replace a file, and Save is always on

    Problem

    The page is titled “Edit — smoke_project (ZIP)”, but its only capability is uploading a new version, and the primary Save button is active before any file is staged. “Edit” promises a form, and an active Save with nothing to save invites a click that appears to do nothing.

    Fix

    Title the page Update repository. Keep the primary action disabled until a valid ZIP is staged, then label it Upload and replace.

    Match between system and the real world; error prevention

    See the rule: rule 3, inputs
  2. Medium Finding 2 on this screen.
    No record of what is about to be overwritten

    Problem

    The Code status card shows the files count as “—” and leaves out Uploaded at and Uploaded by, both of which Project settings does show. Before replacing a repository, an admin needs to know what is there, who put it there, and when.

    Fix

    Show the last upload date and author. If parsing hasn't happened yet, say “Pending analysis” instead of showing a dash.

    Visibility of system status; recognition rather than recall

    See the rule: rule 3, inputs
  3. Medium Finding 3 on this screen.
    Replacing code looks as harmless as a first upload

    Problem

    The upload zone for a new version looks identical to a first upload, although replacing source code affects pipelines, graphs and snapshots. A consequential action gets no more care than a routine one.

    Fix

    Add an inline warning above the zone: “Uploading a new version replaces the existing codebase. Run a new pipeline to update the graph.”

    Help users recognise, diagnose and recover from errors

    See it fixed in the redesign: step 2, Add code

Repositories list

Open full size
Original repositories list screen. Numbered markers point to the findings listed with it.
  1. High Finding 1 on this screen.

    Each table handles row actions differently

    Described on Projects list
  2. Critical Finding 2 on this screen.

    Table headers fail contrast and break the type system

    Described on Projects list
  3. Additive Finding 3 on this screen.

    Grids have no summary of system health

    Described on Projects list
  4. Medium Finding 4 on this screen.
    Filter inputs disagree, and disabled fields almost vanish

    Problem

    Search has its icon on the left, the date picker on the right, and the disabled Branch and Linked to project dropdowns are so faint they look like rendering errors. Users with screen glare or low vision may not realise the filters exist.

    Fix

    • Standardise the inputs: border, radius, type, padding, and icon placement, with descriptive icons on the left and action icons on the right.
    • Explain disabled fields with a tooltip, for example “Branch isn't available for ZIP uploads.”

    Consistency and standards; aesthetic and minimalist design; accessibility

    See the rule: rule 3, inputs
  5. High Finding 5 on this screen.

    The sidebar toggle lives outside the sidebar

    Described on Projects list
  6. High Finding 6 on this screen.

    Every table opens details differently

    Described on Projects list

Add repository: GitHub token

Open full size
Original add repository: github token screen. Numbered markers point to the findings listed with it.
  1. Medium Finding 1 on this screen.
    Getting a Git token means leaving the flow

    Problem

    Linking GitHub or GitLab needs a personal access token. The interface names the scopes, but the admin still has to find the token page in the provider's settings and come back. A technical user doesn't need instructions here, just a shorter route.

    Fix

    Turn the helper text into a deep link to the provider's token page, for example “Create a token on GitHub”. The audit estimates this saves 5 to 7 clicks.

    Flexibility and efficiency of use

    See it fixed in the redesign: step 2, Add code

Running the pipeline

Pipeline detail

Open full size
Original pipeline detail screen. Numbered markers point to the findings listed with it.
  1. Medium Finding 1 on this screen.
    A running pipeline can look frozen

    Problem

    The progress bar can stay still for minutes, with no movement or detail to show that work continues. Admins may assume a silent failure and cancel a healthy run.

    Fix

    • An indeterminate indicator on the active phase.
    • A sub-status such as “Analysing file 45 of 300”.
    • The elapsed time.

    Visibility of system status

    See it fixed in the redesign: step 3, Run pipeline

Pipeline running

Open full size
Original pipeline running screen. Numbered markers point to the findings listed with it.
  1. Medium Finding 1 on this screen.
    Recovery actions hide in per-phase dropdowns

    Problem

    Rerun phase sits inside a small Actions menu on every phase, and the overall progress and the phase list carry the same visual weight. The one action a failed phase needs is the hardest to find.

    Fix

    When a phase fails, show Rerun directly on that row.

    Recognition rather than recall; aesthetic and minimalist design

    See it fixed in the redesign: step 3, Run pipeline

Pipeline completed

Open full size
Original pipeline completed screen. Numbered markers point to the findings listed with it.
  1. Medium Finding 1 on this screen.
    The workflow stalls after a successful run

    Problem

    When a pipeline finishes, nothing leads on. The admin has to notice it is done, go to Graph States and start a snapshot, so the step that turns a run into something usable depends on memory.

    Fix

    On completion, show a persistent notice with Create snapshot. Put the same action on the completed pipeline's page.

    Flexibility and efficiency of use; recognition rather than recall

    See it fixed in the redesign: step 4, Snapshot

Project pipelines list

Open full size
Original project pipelines list screen. Numbered markers point to the findings listed with it.
  1. High Finding 1 on this screen.

    Each table handles row actions differently

    Described on Projects list
  2. Critical Finding 2 on this screen.

    Table headers fail contrast and break the type system

    Described on Projects list
  3. Critical Finding 3 on this screen.

    Blue IDs look like links but do nothing

    Described on Projects list
  4. Additive Finding 4 on this screen.

    Grids have no summary of system health

    Described on Projects list
  5. Critical Finding 5 on this screen.

    Inside a project, the navigation forgets where you are

    Described on Projects list
  6. High Finding 6 on this screen.

    The sidebar toggle lives outside the sidebar

    Described on Projects list
  7. Medium Finding 7 on this screen.

    Back and the page title compete for one row

    Described on Project dashboard
  8. High Finding 8 on this screen.

    Every table opens details differently

    Described on Projects list

Snapshot and deploy

Project snapshots list

Open full size
Original project snapshots list screen. Numbered markers point to the findings listed with it.
  1. High Finding 1 on this screen.

    Each table handles row actions differently

    Described on Projects list
  2. Critical Finding 2 on this screen.

    Table headers fail contrast and break the type system

    Described on Projects list
  3. Critical Finding 3 on this screen.

    Blue IDs look like links but do nothing

    Described on Projects list
  4. Additive Finding 4 on this screen.

    Grids have no summary of system health

    Described on Projects list
  5. Critical Finding 5 on this screen.

    Inside a project, the navigation forgets where you are

    Described on Projects list
  6. High Finding 6 on this screen.

    The sidebar toggle lives outside the sidebar

    Described on Projects list
  7. Medium Finding 7 on this screen.

    Back and the page title compete for one row

    Described on Project dashboard
  8. High Finding 8 on this screen.

    Every table opens details differently

    Described on Projects list

Snapshot detail: deployment

Open full size
Original snapshot detail: deployment screen. Numbered markers point to the findings listed with it.
  1. Critical Finding 1 on this screen.
    Deploying to PROD looks more dangerous than deleting

    Problem

    Deploy to PROD is a solid red button, and below it Delete snapshot is an outlined red button. Red should mean irreversible loss. Here it marks a normal workflow step, and the real danger reads as secondary.

    Fix

    • Use the primary colour for deployment, with DEV as secondary and PROD as primary.
    • Protect PROD with friction instead of colour: a confirmation that asks the admin to type PROD.
    • Keep Delete the only red action, or move it into an overflow menu.

    Consistency and standards; error prevention

    See it fixed in the redesign: step 5, Deploy

Snapshot failed

Open full size
Original snapshot failed screen. Numbered markers point to the findings listed with it.
  1. High Finding 1 on this screen.
    A failed snapshot shows two alerts and no way forward

    Problem

    A yellow “Deployment unavailable” warning and a red “Snapshot error” appear together. The first is only a symptom of the second, and neither suggests a fix. The admin sees the problem twice and the solution never.

    Fix

    Show the root cause alone, or combine the two (“Deployment unavailable because the snapshot failed”). Pair it with actions such as View pipeline logs or Rerun backend parser.

    Help users recognise, diagnose and recover from errors; aesthetic and minimalist design

    See it fixed in the redesign: step 4, Snapshot

Connecting the assistant

MCP access

Open full size
Original mcp access screen. Numbered markers point to the findings listed with it.
  1. High Finding 1 on this screen.
    MCP setup is a wall of text with a manual JSON merge

    Problem

    The setup instructions are a wall of text whose third step asks the admin to merge entries under mcpServers without overwriting others, and a separate Copy instructions button adds a second, confusing copy action. Hand-merging JSON invites missing commas and brackets, and either one breaks the IDE connection at the very last step.

    Fix

    Turn the instructions into a visual stepper, give each step its own copy action, and remove Copy instructions.

    Help and documentation; error prevention

    See it fixed in the redesign: step 6, MCP access
  2. Medium Finding 2 on this screen.
    The default-graph control sits in the wrong group

    Problem

    Default graph (optional) sits just above Rotate token, so it reads as a token setting. It actually changes the endpoints in the setup config below, and controls read as belonging to whatever they are grouped with.

    Fix

    Move it next to the setup tabs, beside the config it changes.

    Match between system and the real world

    See it fixed in the redesign: step 6, MCP access

Original captures with test data. Browser chrome is removed and the test account email is replaced. The finding text is edited for this page from the original audit.

05 / From findings to a plan

Triage became a sequence.

The 19 findings the team could act on first were grouped into six phases: correctness fixes before any workflow change, then the core admin path, then the end of the path, then the one additive feature, then testing and hand-off. Each phase ships on its own, and the order follows the constraints above, not the severity alone. The project-scoped navigation described in the next chapter is the item sequenced after the team's own migration.

  • 19 of 29findings scheduled explicitly, including every Critical and High item on the admin path
  • 6phases, each shippable on its own
  • 1phase in progress before any workflow change: correctness first

How the order was decided

An impact-and-effort matrix, then two constraints from the team.

  • High impact, low effort Fix first Phase 1. Correctness and compliance: contrast, false affordances, the active nav state. Ships without touching the workflow.
  • High impact, high effort Plan in sequence Phases 2 and 3. Workflow changes along the admin path, in the order the admin meets them.
  • Lower impact, low effort Not scheduled yet 9 Medium findings: real friction with a workaround, on secondary paths. Addressed before the product scales.
  • Net new, high effort Validate first Phase 4, the summary ribbon. Nothing is broken; a new feature is a hypothesis to test before it is built.
  1. Score. Every finding got two scores: user impact and implementation effort. Impact set the label, Critical to Additive, from the definitions in the previous chapter. Effort ranged from a CSS state change to a structural one.
  2. Place. Impact against effort gives the order. High impact at low effort ships first; high impact at high effort follows in workflow order; net-new capability is tested before it is built.
  3. Then let the constraints override. Two rules from the team: nothing structural in the navigation until snapshots and graphs have moved into project scope, and every phase ships on its own. That is why one High finding, the project-scoped navigation, sits outside the six phases, and why testing follows phases 1 to 3 rather than the whole plan.
  1. Phase 1: Critical fixes: grid views and navigation Correctness and compliance issues. Lowest effort, highest impact. Scoped to the grid views and navigation areas. NowStart here
    1. Fix WCAG contrast on table headers Darken column header text to at least 4.5:1 against the background. Convert the all-caps header labels (NAME, STATUS, ACTIONS) to sentence case to align with the rest of the design system. Applies to the Projects, Pipelines, Repositories and Snapshots grids. All 4 grids
    2. Fix false affordances: make IDs real links Pipeline IDs (#7, #6) and project IDs are styled in primary blue but are static. Make them links to the detail view. If they must stay static, set them in the body text colour to remove the link expectation. Pipelines, Projects
    3. Fix the active nav state: Projects stays highlighted On every project sub-page (Pipelines, Snapshots, MCP access, Repositories, Settings) the Projects item stays active. Users should always know they are scoped within a project. A CSS state fix, and one of the quickest wins in the audit. All project sub-pages
    4. Move the sidebar toggle into the sidebar The collapse control lives in the global header, away from the panel it controls. Move it into the sidebar: a small chevron at the top of the panel, or a collapse button at the foot of the nav list. Global sidebar
    5. Standardise row actions to a kebab menu Replace the current action patterns (stacked buttons in Snapshots, text links in Pipelines) with one kebab menu for secondary actions. One standalone icon alongside it is acceptable for a destructive action, but only if applied consistently across all tables. All 4 grids
    6. Unify filter inputs and fix disabled states Standardise every filter input: descriptive icons on the left, action and dropdown icons on the right, one border weight, radius and padding. Raise the contrast of the disabled Branch and Linked to project dropdowns so they are clearly visible, and explain with a tooltip why a field is inactive. All 4 grids
    7. Deep-link to GitHub and GitLab token generation Replace the helper text about token scopes with a direct link to the provider's token page. It saves the user 5 to 7 clicks and respects their technical expertise without adding educational friction. Repository, Add repository
  2. Phase 2: Project flow: dashboard, upload and pipeline Fixes to the core admin workflow, from project creation to running the first pipeline. NextAfter phase 1
    1. Derive the folder name from the uploaded ZIP Remove the up-front folder name requirement. When a ZIP is selected, fill the folder name from the file name and let the user edit it before confirming. This removes the silent failure where a file appears uploaded but is never processed because the field was blank. Project, Settings
    2. Add rename and duplicate detection Add an inline Rename action in the code structure table. On upload, detect whether the folder name already exists and offer to merge, to upload as a new version with _v2 appended, or to cancel. Never merge silently. Project, Settings
    3. Post-upload action: Run pipeline now After a successful upload, show a persistent notice with the next step in place: the code is uploaded, run the pipeline. This bridges the gap in the happy path, so users no longer have to navigate to Pipelines and work out what to do next. Project, Settings
    4. A next-step area on the project dashboard Add a contextual next-step area at the top of the project dashboard that follows the project's state: no repositories, upload code; pipeline complete with no snapshot, create a snapshot; snapshot ready, deploy the graph; graph deployed, set up MCP. It guides the user through the five-step path without memorising the workflow. Project dashboard
    5. Enrich dashboard cards with live status Move beyond passive counts. Pipelines: the last run's status, with Rerun on failure. Snapshots: the deployment status (PROD, DEV or not deployed). MCP access: whether a token is active and when it rotates. Repositories: the source count and last sync. Project dashboard
    6. Restructure the Projects list columns Replace database-centric columns with operational ones. Remove Created at, rename Updated at to Last activity, and add Repositories, Last pipeline (Done, Failed or Running) and Deployment (DEV, PROD or none). The list becomes an operational dashboard. Projects list
    7. Surface pipeline phase recovery actions When a phase fails, show Rerun directly on that row rather than inside a dropdown. Improve the hierarchy between the overall progress bar and the phases below it, so a failed phase is actionable at once. Project, Pipeline detail
  3. Phase 3: Project flow: snapshot and MCP access Fixes to the end of the workflow: snapshot deployment, error recovery and MCP token setup. NextAfter phase 1
    1. Fix the colour semantics on the snapshot page Change Deploy to PROD from solid red to the primary colour, and make Deploy to DEV the secondary action. Reserve red for Delete snapshot. Protect PROD with friction instead of colour: a confirmation that asks the admin to type PROD. Keep Delete visually isolated, or move it into an overflow menu. Project, Snapshot
    2. Improve error recovery in the failed snapshot state Suppress the secondary Deployment unavailable warning when a snapshot error is present, or combine the two into one message. Pair the error with a recovery action: View pipeline logs or Rerun backend parser. Users must never be left stranded after a failure. Project, Snapshot (failed)
    3. MCP setup: replace dense instructions with a visual stepper Turn the instruction block into a three-step stepper with a code block and a copy button per step. Remove Copy instructions, which confuses more than it helps. Step 3 must not ask users to merge JSON by hand; provide a ready-to-paste snippet instead. Project, MCP access
    4. Fix the Default graph control placement Move the Default graph select so it sits beside the setup config it actually changes. Where it is now, it reads as a parameter of token generation. Controls sit next to what they control. Project, MCP access
  4. Phase 4: Additive: summary metrics A new feature, not a fix. Validate with users before building. Scoped and testable on its own. LaterValidate first
    1. Summary ribbon: metric cards above every grid
      • Add a row of three or four small metric cards above each grid's filter bar.
      • Projects: total, active pipelines, failed pipelines.
      • Pipelines: runs in 30 days, success rate, running now, average duration.
      • Snapshots: total, storage used, active deployments.
      • Repositories: connected sources, last synced, sync errors.
      • Selecting a card filters the table below it.
      All 4 grids
  5. Phase 5: Usability testing with real users Moderated sessions against an HTML prototype. Covers the phase 1 to 3 changes and the additive ribbon. TestingValidation
    1. 5.1 Participants Five to eight developers or business analysts matching Interlace's two roles: the admin with full access and the user who only consumes MCP. Recruit from existing users where possible. Recruit
    2. 5.2 Scenario tasks
      • You have just joined as admin. Upload a codebase and get it ready for your team to use in Cursor.
      • Find which pipeline failed last and rerun only the broken phase.
      • A snapshot just failed. What do you do?
      • Set up MCP in Cursor using this project.
      • Compare this week's pipeline runs. How many succeeded?
      5 scenarios
    3. 5.3 Metrics to collect
      • Task success rate.
      • Time on task.
      • Errors per task.
      • A SUS score from a post-session survey.
      • Think-aloud notes: moments of confusion and the vocabulary people use.
      Metrics
  6. Phase 6: Final polish, documentation and hand-off Fold the test findings back in, finish the design hand-off, and document the improvement cycle. FinalHand-off
    1. 6.1 Incorporate testing findings Apply the corrections surfaced in the sessions, with a final polish pass, and tag the changes as updated after testing for the developer hand-off. Design files
    2. 6.2 Developer hand-off Mark the updated screens as ready for development, export the design tokens, and annotate spacing, states and interaction notes, especially for the kebab menu, the disabled states and the MCP stepper. Hand-off
    3. 6.3 Process documentation Document the cycle end to end: problem definition, the findings with screenshots, the design decisions with rationale and alternatives, before-and-after comparisons, the testing results, and the outcome and next steps. Deliverable

Why this order

Phase 1 before phase 2: correctness before flow
The grid-view fixes (contrast, false affordances, the active nav state) are compliance and correctness issues that can ship independently of any workflow redesign. Starting there delivers fast, demonstrable wins and keeps the early phases from creeping in scope.
The summary ribbon is additive, and labelled as such
The summary ribbon is a net-new feature, not a fix to something broken. It sits in phase 4 so it can be prototyped and tested on its own without blocking the correctness work. Phases 1 to 3 are not deprioritised for it.
Structural navigation changes are deferred
The team confirmed it is moving snapshots and graphs from global scope into project scope. Any navigation architecture redesign waits until that change has shipped, to avoid designing twice. The active nav state and the sidebar toggle are safe to fix now: they change visual state, not structure.
An HTML prototype for interaction-level changes
The kebab menu, clickable IDs and the MCP stepper are interaction-level changes that static screens cannot demonstrate. They are built as an HTML prototype for the usability sessions and shared by link for review.

06 / The solution

One guided path.
The system carries the sequence.

Interlace's admin app stops being a set of equal sections and becomes one state-aware path. The project is the unit of work, the project home is its control centre, and every completed step hands the admin the next one. The system, not the admin, remembers what comes next.

The path, before and after

The same five steps. What changes is who carries the hand-off between them.

Before Manual hand-offs. The admin has to notice, navigate and remember.

  1. 1

    Upload code

    The folder has to be named first. Leave it blank and it looks like success.

    Manual hand-off
  2. 2

    Run pipeline

    Nothing prompts the run, and progress can sit still for minutes.

    Manual hand-off
  3. 3

    Create snapshot

    The admin has to notice completion and find the snapshot screen alone.

    Manual hand-off
  4. 4

    Deploy

    Deploying to PROD looks more dangerous than deleting.

    Manual hand-off
  5. 5

    Connect MCP

    Setup asks for a hand-merged JSON config.

After System-led hand-offs. Each completion offers the next action in place.

  1. 1

    Upload code

    The folder name comes from the file. A duplicate asks before merging.

    Upload success offers the run
  2. 2

    Run pipeline

    A named, scoped run with a live phase, elapsed time and inline rerun.

    Run completion offers the snapshot
  3. 3

    Create snapshot

    Facts about the graph, and one root-cause error with a fix if it fails.

    Snapshot success offers deployment
  4. 4

    Deploy

    DEV secondary, PROD primary and typed to confirm. Red only for delete.

    Deployment offers MCP setup
  5. 5

    Connect MCP

    A token, a complete config for the assistant, and nothing to merge by hand.

    The project home shows the current step throughout

Where things live

The structural change behind the path: inside a project, the navigation belongs to the project.

Target navigation: global lists stay global; inside a project, its sections sit under Projects, which stays active.
Global lists stay global
Home, Repositories, Pipelines, Graph States, Settings: every object across every project, for the admin who runs the whole tenant.
Inside a project, the sidebar is the project's
Projects stays active and opens the project's own sections: Overview, Code, Pipelines, Snapshots, Deployments, MCP access. The admin always knows which list they are looking at.
Sequenced after the migration
The team was moving snapshots and graphs into project scope. This structure is the target that migration makes possible; the roadmap says when.

Four decisions behind the screens

Each decision groups several findings into a single rule, and names its trade-off.

  1. Guide the sequence instead of exposing the system.

    Signal

    The workflow is strictly sequential, but the interface gives every section equal weight and stops after each step.

    From the audit

    Home cards carry no data, Nothing says what to do first, After upload, the next step is manual, The flow stalls after a successful run.

    Decision

    The project home always shows one next step, and every completion hands the admin the following action in place: upload → run → snapshot → deploy → connect.

    Trade-off

    A guided path adds a persistent element to the dashboard. For experienced admins it has to stay compact and never block direct navigation. Starting pipelines automatically was rejected because every run costs compute; the redesign offers the run instead of starting it.

  2. Prevent silent failures at the first step.

    Signal

    A blank folder name looks like a successful upload, and duplicate names merge without warning.

    From the audit

    Blank folder name fakes an upload.

    Uploads merge silently, no rename.

    Replacing code looks routine.

    Decision

    Take the folder name from the file, and ask before merging or replacing. The safe default is a new version, _v2.

    Trade-off

    One extra dialog for the rare duplicate, in exchange for removing a mandatory field from every upload.

    Where to see it
  3. Friction, not colour, for risky actions.

    Signal

    Deploy to PROD is solid red, and Delete snapshot is a red outline. The colour of danger marks a normal step, while real loss looks secondary.

    From the audit

    Deploy to PROD looks like deleting.

    Decision

    Deployment uses the primary action colour, with DEV as the secondary action and PROD as the primary. PROD asks the admin to type PROD. Delete is the only red action and moves into an overflow menu.

    Trade-off

    Deploying to PROD takes one more deliberate action. That is the point: the confirmation is proportional to the consequence.

    Where to see it
  4. Show status where the decision is made.

    Signal

    Cards count things, tables list database fields, progress can look frozen, and a failed snapshot shows two alerts with no way forward.

    From the audit

    Failed snapshot: two alerts, no way out.

    Projects table lists database fields, Cards count things, not status, A running pipeline can look frozen.

    Grids have no health summary.

    Decision

    Each surface answers “is it working, and what do I do next?”:

    • Status on cards and table rows.
    • A live indicator and sub-status while a pipeline runs.
    • One root-cause error with a fix action.
    Trade-off

    More information per card. Hierarchy has to keep the status line dominant and the counts secondary.

What is deliberately not automated

Pipelines are never started without a click, because every run costs compute. The path offers the next action in place; it does not take it. The same holds for deployment: the system prepares the step, the admin commits to it.

The measure

Time from an empty project to the first MCP query, and the number of silent failures along the way. If the path works, both fall. That is what the last chapter says should be instrumented.

07 / The redesigned path

Six steps.
Each one hands you the next.

Each step shows the audited screen and the redesigned one together. The redesign is live: the primary action on each screen hands you the next step, and a switch above each frame shows its other state. Every step names what changed and links to the finding it answers.

Step 1 of 6Project home

What changed

  • A next-step banner tells a new project what to do first
  • Cards report status instead of counting things
  • Every card carries data, not just a link
  • The title carries the project's ID, owner and last activity
  • Projects stays active inside a project, with the toggle in the sidebar
  • Back moves into the header, so the title has its own line
Before Six equal cards that count things, no project context under the title, and nothing that says what to do next. Select a marker to read the finding.
Original project dashboard screen, as audited. Numbered markers open the findings.
After The redesigned project home screen. Live: the primary action hands you the next step.
Back to Projects

ProjectsOrders platform

Orders platform

  • ID 90
  • Owner: admin@example.com
  • Last activity: today, 09:12

Order capture, fulfilment and invoicing services for the web shop.

  1. Upload code Done Uploaded today, 08:51
  2. Run pipeline Done Run finished 09:12
  3. Create snapshot Current
  4. Deploy Not started
  5. Connect MCP Not started

Code

1 repository, 1,284 files

orders-api, uploaded today, 08:51

Pipelines

Last run #7: Done

18 min, finished 09:12

Snapshots

None yet

Created from a finished pipeline

Deployments

Nothing deployed

DEV: none. PROD: none

MCP access

No active token

Available once a snapshot is deployed

Settings

Owner: admin@example.com

Routing: smart routing

Recent activity
  • 09:12Pipeline #7 finished in 18 min
  • 08:54Pipeline #7 started by admin@example.com
  • 08:51orders-api.zip uploaded by admin@example.com
  • 08:47Project created by admin@example.com

Step 2 of 6Add code

What changed

  • The folder name comes from the file, and stays editable
  • A duplicate name asks before merging or replacing, and folders can be renamed
  • Replacing code carries a warning about pipelines and graphs
  • The token helper is a link to the provider's token page
Before A mandatory folder name before the upload, which fakes success when left blank, and no warning before code is merged or replaced. Select a marker to read the finding.
Original project settings: code upload screen, as audited. Numbered markers open the findings.
After The redesigned add code screen. Live: the primary action hands you the next step.
Back to Projects

ProjectsOrders platformCode

Add code

Interlace parses the code you add here. Upload a ZIP or connect a repository.

Drop a ZIP here or choose a file

Up to 5 GB compressed and 50,000 files. Binaries are excluded from parsing.

orders-api.zip 48 MB, 1,284 files

Taken from the file name. You can rename it at any time.

Parsers
Routing
Code in this project

No code yet. Upload a ZIP or connect a repository above.

Step 3 of 6Run pipeline

What changed

  • Upload success offers the run in place
  • The run is named and scoped before it starts
  • Progress shows the phase, the file being analysed and the time left
  • A failed phase shows Rerun on its own row
Before A progress bar that can sit still for minutes, with Rerun hidden inside a per-phase menu. Select a marker to read the finding.
Original pipeline running screen, as audited. Numbered markers open the findings.
After The redesigned run pipeline screen. Live: the primary action hands you the next step.
Back to Projects

ProjectsOrders platformPipelines

Pipeline #7

Started 08:54 by admin@example.com. Smart routing, both parsers.

Running

Phase 4 of 9: endpoint discovery

38% done, 07:41 elapsed, about 10 min left

Analysing file 412 of 1,284

  1. 1Project structure discovery Done, 0:42
  2. 2Smart file sampling Done, 1:10
  3. 3Technology detection Done, 0:58
  4. 4Endpoint discovery In progress
  5. 5Entity discovery Pending
  6. 6Endpoint-entity mapping Pending
  7. 7Service grouping Pending
  8. 8User flow reconstruction Pending
  9. 9Graph files generation Pending

Step 4 of 6Snapshot

What changed

  • A finished run offers Create snapshot in place
  • A failed snapshot shows one root cause with a fix
Before Two alerts for one failure, and no way forward. Select a marker to read the finding.
Original snapshot failed screen, as audited. Numbered markers open the findings.
After The redesigned snapshot screen. Live: the primary action hands you the next step.
Back to Projects

ProjectsOrders platformSnapshots

orders-api graph, 12 May

Snapshot of Orders platform from pipeline #7.

Not deployed

Next: deploy it so assistants can query it

Deploy to DEV to try it, or to PROD for every connected assistant.

Nodes
92
Relationships
209
Dump size
73 KB
Backend pipeline
#7
Frontend pipeline
#7
Created
12 May 2026, 09:58
What's in the graph
  • 12 services
  • 38 endpoints
  • 21 entities
  • 9 user flows
Deployments
  • DEVNot deployed0 of 5 slots used by this snapshot
  • PRODNot deployed0 of 5 slots used by this snapshot

Step 5 of 6Deploy

What changed

    • Deployment uses the primary colour, with DEV as the secondary action
    • PROD is protected by typing its name, not by colour
    • Delete is the only red action, inside the overflow menu
Before Deploy to PROD in solid red, above an outlined red Delete snapshot. Select a marker to read the finding.
Original snapshot detail: deployment screen, as audited. Numbered markers open the findings.
After The redesigned deploy screen. Live: the primary action hands you the next step.
Back to Projects

ProjectsOrders platformSnapshots

orders-api graph, 12 May

Snapshot of Orders platform from pipeline #7.

Deployed to DEV
Deployments

A slot serves one snapshot to the assistants connected to it. DEV is for trying a graph; PROD is what every connected assistant answers from.

DEV

2 of 5 slots used

Deployed orders-api graph, 12 May, since today, 10:05

PROD

0 of 5 slots used

Nothing deployed. Connected assistants have no graph to answer from.

Step 6 of 6MCP access

What changed

    • A complete config replaces the hand-merged JSON
    • Copy instructions is gone; each block has its own copy action
  • The default graph sits next to the config it changes
Before A wall of instructions asking for a hand-merged JSON, and the graph select grouped with the token. Select a marker to read the finding.
Original mcp access screen, as audited. Numbered markers open the findings.
After The redesigned mcp access screen. Live: the primary action hands you the next step.
Back to Projects

ProjectsOrders platformMCP access

MCP access

Connect an AI assistant to this project's deployed graphs over MCP.

Token

Active until 11 Jun 2026

Scope
This project's deployed graphs
Token
ilc_********3f9a
Rotating revokes the current token. Every assistant that uses it has to be updated.
Set up your assistant

Changes the endpoint in the config below.

{
  "mcpServers": {
    "interlace-orders-platform": {
      "url": "https://interlace.example.com/mcp/projects/90/prod",
      "headers": {
        "Authorization": "Bearer ilc_********3f9a"
      }
    }
  }
}
Open .cursor/mcp.json, paste, save and restart Cursor.

Try it

Ask your assistant: “Using the Interlace graph, explain how checkout works.”

Resets every screen to an empty project and scrolls to step 1.

A folder called orders-api already exists

What to do with the upload

Deploy to PROD?

Assistants connected to PROD will answer from this snapshot. Type PROD to confirm.

08 / System rules

Four rules
the whole interface follows.

Some findings aren't a step in the path. They are patterns that repeat on every screen. Each rule is shown with its Before and After specimens together.

Rule 1A table tells you what needs attention.

Headers use sentence case and at least 4.5:1 contrast. The primary identifier is the only link. Row actions follow one pattern: a menu for secondary actions, plus at most one icon for a critical action. Operational columns come before administrative ones. A summary ribbon above the table answers the first question before the admin scans the rows.

The summary ribbon is marked as a hypothesis to validate.

Fixes

Table headers fail contrast, Blue IDs look like links, do nothing.

Row actions differ in every table, Every table opens details differently.

Projects table lists database fields.

Grids have no health summary.

Before. Faint, all-caps headers, a blue ID that isn't a link, and three different row-action styles.
After. Sentence-case headers at 4.5:1 or better, the name as the only link, one row-action pattern, operational columns first, and a summary ribbon marked as a hypothesis.

Rule 2Navigation always says where you are.

Projects stays active on every page inside a project. The sidebar toggle lives in the sidebar. Back sits in the header, so the page title stands alone.

Fixes

Navigation forgets where you are.

Sidebar toggle sits outside the sidebar.

Back and the title share one row.

Before. Inside a project, Projects is no longer active, the sidebar toggle sits in the global header, and Back shares a row with the page title.
After. Projects stays active, the toggle sits inside the sidebar, and Back moves to the header, so the title has its own line.

Rule 3Inputs look alike and explain themselves.

Every field shares one border, radius, type style and padding. Descriptive icons go on the left, action icons on the right. A disabled field says why, for example “Branch isn't available for ZIP uploads.” Primary buttons stay disabled until there is something to act on, and use precise verbs, such as “Upload and replace”.

Fixes

Filter inputs disagree, disabled fields vanish, “Edit” only replaces, and Save is always on, No record of what gets overwritten.

Before. Icons sit on different sides, the disabled Branch field is nearly invisible, and Save is active with nothing staged.
After. One field style with icons on consistent sides, a disabled field that explains why, and a primary button that stays disabled until a file is staged, labelled “Upload and replace”.

Rule 4Red means loss.

Red is reserved for destructive, irreversible actions and critical errors. High-stakes but constructive actions, such as deploying to production, use the primary colour and are protected by friction.

Fixes

Deploy to PROD looks like deleting.

Before. A solid red “Deploy to PROD” next to an outlined red “Delete snapshot”: the normal step looks like the dangerous one.
After. Deploy uses the primary colour, DEV as secondary and PROD as primary. Red appears only on Delete, inside the overflow menu.

09 / The outcome

A review that became
the roadmap.

The audit did more than list problems. Scoring every finding on user impact and implementation effort turned 29 observations into a sequence the team could plan against: correctness fixes first, then the admin path, then the additive work, each phase shippable on its own, and the structural navigation change timed to the team's own migration.

That sequence changed the strategy. Instead of polishing screens one at a time, the admin application is rebuilt as one guided path: the project home carries the current step, every completion offers the next action in place, and four system rules keep tables, navigation, inputs and colour consistent across every screen. Phase 1 is in progress.

What carries over to the next review: score before you sketch. The priority matrix did more for the team than any single screen, because it said what to ship first and why.

  • 29findings on 16 screens, each with a fix and a place in the redesign
  • 6phases, sequenced by impact, effort and the team's constraints
  • 1guided path of six screens and four system rules, in place of five manual hand-offs

Design preview

Next case

The altexsoft.com design system, from Figma to code

AltexSoft's website kit had grown for years inside page mockups and an old library. With a second designer, I turned it into one design system that Figma, code and AI agents read by the same names. I built the tokens, the export to code and all of the code, and part of the Figma library.

Read next case

Have a complex product problem?

Get in touch Selected work