selected work
Decision-support system for billing attorneys - global law firms, 5,000+ attorneys
Billing attorneys at global law firms manage client health, revenue cycles, and timekeeper oversight - often across hundreds of active matters simultaneously. The signals that indicate a client relationship is deteriorating are real and legible in retrospect. In the moment, they're buried across disconnected systems: email threads, document libraries, billing tables, matter management platforms.
Without a surface that aggregates these signals, problems compound invisibly until they're expensive. The existing SharePoint environments offered no decision-support layer - just raw data in fragmented views.
The design principle that governed every decision: AI should surface what the attorney can't see - not make decisions they shouldn't delegate. Awareness without overreach.
In a regulated professional environment, every AI output carries liability implications. The system needed to compress context and prepare action - not take it. The boundary between those two things required explicit, deliberate design at every interaction point.
The work was designing the line between inference and action - and making sure the system never crossed it on the attorney's behalf.
Internal wireframe design system - legaltech consultancy, replaced Balsamiq across all client engagements
A legaltech consultancy produced wireframes as the primary artifact for client discovery sessions - multi-hour meetings where requirements were finalized, decisions made, and scope locked. The quality and flexibility of those wireframes directly determined how productive those meetings were.
The previous tool (Balsamiq) worked for low-fidelity sketching. It couldn't evolve in complexity during a live meeting, required rebuilding components from scratch for each new engagement (roughly 60% rework per project), and sat outside Figma - creating a gap between discovery and production work.
The consultants needed a system that could move fluidly across fidelity levels within the same component, in the same file, during a live client meeting. A table might need to evolve from a placeholder grid to showing invoice status indicators to revealing a full filtering panel - all in response to where the client's questions led.
That range had to be achievable by consultants with minimal Figma experience and no layer-naming discipline, in real time, without breaking anything. The system had to be more capable than its users required and simpler to operate than their skill level demanded.
The first iteration was too polished - clients gave visual feedback instead of functional feedback. Pulling back a register kept the wireframe register intact while retaining structural range. Fidelity calibration is a design decision, not a default.
Eight enterprise UI components - matter table, invoice table, time entry calendar, timekeeper dashboard, news, leadership message, key documents, key contacts - each carrying the full fidelity range in a single Figma frame. Consultants toggle layers, not swap components.
Component reuse architecture: patterns built once, applicable across any client engagement. Introduced in two to three working sessions with no written documentation required.
The consultants shifted from treating wireframes as static pre-meeting deliverables to using them as live instruments that could evolve in the room. That shift changed what client meetings could accomplish - and compressed the time between discovery and development handoff across every engagement downstream.
Zero support requests in six months of continuous use. The clearest possible signal that the system was designed for its actual users, not a hypothetical version of them.