selected work

01 - interface.build · legaltech enterprise

AI that surfaces what
attorneys can't see.

Decision-support system for billing attorneys - global law firms, 5,000+ attorneys

interface.build
The environment

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 constraint

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.

Signal architecture - four sources, one surface, attorney owns the action
Data Sources
Email threads
Billing records
Document library
Matter status
AI Engine
Signal aggregation
Compresses 4+ sources into client health score. Intervenes only at threshold - not on every data point.
Interface
Client A - 62 days HIGH
Client B - 31 days MED
Client C - monitoring LOW
Attorney Action
AI DRAFT SURFACED
"Dear [Client], regarding matter 2241, I wanted to follow up on the outstanding balance..."
Edit + Send
Dismiss
AI prepares · attorney decides · nothing sends automatically
System permitted to
  • Surface converging risk signals across disconnected data sources
  • Compress context into a single client health view
  • Draft candidate communications for attorney review
  • Intervene when signal convergence crosses a defined threshold
System not permitted to
  • Send client communications autonomously
  • Determine tone or relational appropriateness
  • Act on inferred intent from incomplete context
  • Make decisions that belong to the attorney
~20
Platforms shipped
5K+
Attorneys per firm
4+
Sources aggregated
↓ hrs
Time-to-judgment
explore the billing intelligence interface
02 - system.build · legaltech consultancy

A system that evolves
in the room.

Internal wireframe design system - legaltech consultancy, replaced Balsamiq across all client engagements

system.build
The environment

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 constraint

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.

Low - skeleton Default
Content off · Status off · Filters off - layout and proportion only
Mid - structured Real content
Richardson v. Apex IN PROGRESS
Westbrook Acquisition PENDING
Employment Dispute ACTION NEEDED
Real matter names + status pills - client validates the data model
High - full feature All layers
All Types Litigation Contract
Employment Dispute 90+ days
IP License - TechCorp DUE SOON
Filters, invoice aging, activity sparklines - everything needed to act
What was built

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.

What changed

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.

97%
Reduction in component build time
8→1h
Full platform fidelity evolution
40%
Increase in component reuse
0
Support requests in 6 months
explore the component system