Glade AI  ·  Technical Product Lead (Contract)

Agent-Ready Onboarding

April to July 2026

Converted a service-heavy legal onboarding process into an explicit lifecycle state machine an agent could reason over, and shipped the production code myself.

The Glade admin console: every firm's lifecycle state, health, segment, and assigned CSM in one view

The admin console I built. The Status column is the lifecycle state machine, live for every firm.

TL;DR: Transformation & Impact

Key Outcomes

  • Converted a service-heavy legal onboarding process into an explicit lifecycle state machine built for agents to read and act on
  • Shipped self-serve attorney signup, account creation, and workflow configuration with graduation logic
  • Solo-built the React/TypeScript admin observability surface for live customer health and onboarding stage
  • Caught an unknown signup and a $2,500 pricing configuration error in the dashboard's first standup use
  • Replaced 30-60 minutes of manual customer-bug setup with agent-driven production bug reproduction
  • Automated the legal-ops triage loop: a scheduled Claude task that reads Linear and Granola over MCP and surfaces which recurring work is worth automating
  • Shipped ~170 production PRs myself using Claude Code across multiple repositories

What Changed

White-glove, service-heavy onboardingSelf-serve, agent-ready workflow
Onboarding status tracked by handLive observability with stuck-state detection
30-60 min manual bug reproductionAgent-driven repro in minutes

Context

Glade AI builds software for law firms. When I joined as a contract Technical Product Lead, getting a new firm onboarded was a service-heavy process: valuable, but manual, opaque, and expensive to scale. My mandate was to shift onboarding from operations toward product.

I operated as a hands-on build partner: defining the product direction, designing the workflows, and shipping production React/TypeScript myself alongside the engineering team.

Challenge

The hard part wasn't building features. It was that the onboarding journey existed only as institutional knowledge:

  • Implicit process: no software representation of where a firm stood, what was complete, or what remained.
  • No observability: the team couldn't see customer health or onboarding stage without asking around.
  • Nothing for an agent to drive: an AI agent can't route users through a workflow that only exists in people's heads.
  • Slow debugging: reproducing a customer bug meant 30-60 minutes of manual account and data setup.

Lifecycle State Machine (Simplified)

Signup
Account Setup
Workflow Configuration
Validation
Graduated
Built so an agent can read state, drive the next action, and flag stuck firms for intervention

What I Did

1

Built the Lifecycle State Machine Agents Can Run On

The onboarding journey lived in operations, not product: implicit, manual, and impossible for software to reason about. I modeled it as an explicit state machine with one authoritative state per firm. Listeners read that state to decide what a firm sees, write back as steps complete, and graduate the firm automatically. It is also what makes onboarding agents possible: it turns "where is this firm?" from institutional knowledge into a field software can act on.

Tradeoff: Upfront modeling work before any visible feature shipped, but it became the foundation everything else was built on.

2

Shipped Self-Serve Signup and Workflow Creation

Attorneys needed to create accounts, configure their workflows, and graduate to active use without a human walking them through every step. I built the signup, account creation, and graduation logic that move a firm toward completion on its own.

Tradeoff: Self-serve flows had to handle edge cases that white-glove operations previously absorbed by hand.

3

Solo-Built the Admin Observability Surface

The team had no live view of customer health or onboarding stage. I designed and built a React/TypeScript admin layer with stuck-state detection so anyone could see exactly where every firm stood and where intervention was needed.

Tradeoff: None significant: in its first standup use it surfaced an unknown signup and a $2,500 pricing configuration error.

4

Built Agent-Driven Production Bug Reproduction

Reproducing a customer bug required 30-60 minutes of manual account and data setup. I built an agent-driven workflow that recreated production bug conditions automatically, backed by automated testing with Playwright and MSW.

Tradeoff: Time spent on internal tooling instead of customer-facing features, repaid on every single bug investigation after.

5

Automated the Legal-Ops Triage Loop

The legal-ops backlog kept refilling with the same shapes of work, and nobody had time to notice which repeats were worth automating. I built a scheduled Claude task that reads the live backlog from Linear and call load from Granola over MCP, classifies every issue as automate / recurring-ops / cleanup / keep-manual, surfaces the configuration-pattern share of the automate pile, and publishes a dashboard that recomputes daily. It turned "what should we automate next?" into a standing answer instead of a meeting.

Tradeoff: A tool for the internal team rather than customers, but it made the automation backlog self-prioritizing.

6

Shipped Production Code Directly with Claude Code

Rather than handing off requirements, I investigated, prototyped, and shipped alongside the engineers: roughly 170 production React/TypeScript PRs across Postgres, Sentry, Mixpanel, legacy services, and multiple repositories.

Tradeoff: Required earning trust in the codebase and the team's review process as a PM shipping production code.

What Shipped

Glade self-serve signup: create your firm dashboard

Self-serve signup: firms create their own dashboard, no operator required

Glade setup wizard with sequential steps that unlock as a firm progresses

The setup wizard: steps open as the firm advances toward graduation

Glade firm health score breakdown and onboarding milestones

Health scoring: engagement, adoption, and outcomes

Impact & Results

Onboarding went from a manual service to an observable, self-serve, agent-ready product surface. The Head of Product's assessment: I "totally drove that whole initiative forward" on my own. The contract wrapped cleanly when the company reprioritized toward petition preparation and e-filing, with the door left open.

~170

Production PRs Shipped

$2,500

Pricing Error Caught on First Use

30-60 min

Manual Bug Setup Eliminated

Key Takeaways

Make the Workflow Explicit Before Adding AI

An agent can only drive a process the software can reason about. What changed things at Glade wasn't a better model. It was converting an implicit operational workflow into an explicit state machine an agent can read and act on.

Observability Is a Product Feature

A live view of customer state isn't internal plumbing. It caught real revenue errors on day one and turned "how is onboarding going?" from a research project into a glance.

PMs Who Ship Change the Conversation

Shipping production code myself compressed every iteration loop: I could investigate, prototype, and fix alongside engineers instead of writing tickets and waiting.

Design for Completion, Not Conversation

An onboarding agent's job isn't to chat. It's to drive every firm to a completed, validated setup and surface where a human needs to step in. The state machine was built for that job first.