Case #0000Case #0001Case #0002Case #0003Case #0000Risk: LowBalance€24,500Wallets3Risk scoreCase #0001Risk: MediumBalance€8,120Wallets5Risk scoreCase #0002Risk: HighBalance€61,900Wallets8Risk score

Illustration, not the real app (NDA)

ChainComply

Analyst Workspace

Company
ChainComply
Type
B2B web app
When
2023 – now
My role
EngineeringProductDesign
Industry
Regtech, Crypto

Tech stack

  • React
  • TypeScript
  • KendoReact
  • MUI
  • TanStack
  • Axios
  • Vite
  • Turborepo
  • pnpm
  • Playwright
  • OpenAPI
  • Postman
  • i18n
  • GitHub
  • GitHub Copilot
  • Cursor
  • OpenAI Codex
  • Claude Code
  • MCP
  • JavaScript
  • CSS

Overview

The B2B workspace where compliance officers and tax accountants reconstruct a client's crypto wealth, built for MiCA and EBA guidance: reconciliation, source of wealth, capital gains and P&L, counterparties, source of funds and risk. I designed and built it, and redesigned how analysts move through a case.

  • One case file from exchange accounts, wallets and DeFi positions, with automated reconciliation.
  • Source of wealth and a wealth creation timeline, with capital gains, P&L and margin trades.
  • Counterparties and funds flow, source-of-funds tracing, and hidden wallet detection.
  • Illicit-activity checks through the blockchain intelligence tools a client already uses.
  • Interactive Source-of-Wealth graphs, a decision dashboard and an audit-ready report a financial institution can accept.
  • And more proprietary features I can't share publicly.

How I built it

Part of our pnpm, Turborepo and Vite monorepo, on the same stack as the rest of ChainComply's apps. I built it in React and TypeScript with KendoReact and MUI: data grids for transactions and reconciliation, views for source of wealth, capital gains and P&L, the Source-of-Wealth graphs of fund flows, and the decision dashboard and report. I designed it too: low- and high-fidelity wireframes on paper, in Figma or in Miro, quick proofs of concept in StackBlitz, then the final design in code.

Product decisions

The problem

Analysts couldn't see the path from a new case to a decision. The workspace covers a lot, from data checks and reconciliation to wealth, fund flows and risk, and users told us they didn't know what to do, or in what order, to reach the end result: the report a financial institution accepts.

What I changed

  • Navigation by task. I grouped the pages into sections by what the analyst is trying to do, such as Data Check, Activity & Wealth, Flow Analysis, Risk Assessment and Reporting, with the detailed pages inside each.

  • A case summary as the starting point. Opening a case now lands on a summary of where it stands: whether the data reconciles and which risk flags need checking. It shows what's left to do, and when everything checks out, the next step is the report.

  • A case list that shows the way forward. I redesigned the list of cases so the actions that move a case on are the ones that stand out.

  • Two clear ways to bring data in. Analysts can add a client's data themselves or invite the client to add it through Connect, and the case list now makes both options explicit.

  • Data entry inside the workspace. Analysts were already entering data on their clients' behalf through Connect, but as a separate app it confused them. I added a module so they can do it inside the workspace.

  • Prioritising what clients asked for. While we negotiated with prospective clients, their feature requests shaped whether they'd buy. I weighed each one, core needs against smaller UX fixes, and against the other requests and the work already planned, then estimated it and built it into the roadmap.

My role

I found the problems in user feedback, decided what to change, redesigned the UX and UI myself, and built it: from the product decision to the code.

Outcome

More analysts finished cases without help and reached the report faster, and we had fewer complaints and requests to change things.

Where it fits