← paulvu.org

AI platform · Los Angeles Superior Court · 2025 to 2026

CourtHelp: Building a Court Chatbot Platform Before the Standard Existed

One front door for the public, many specialist chatbots behind it, and what changed when the Model Context Protocol caught up with the design.

At a glance

CourtHelp is the Los Angeles Superior Court's single chat entry point for the public. One orchestrator reads each question and hands it to the right specialist chatbot: court FAQs, jury service, or hearings.

The problemMembers of the public had to know which chatbot handled which task.
Version 1 · 2025We built the orchestrator ourselves, including routing, memory, and multi-step transactions. It launched with the court's new website in July 2025.
What changedOnce the Model Context Protocol (MCP) matured, the platform was rebuilt on it, replacing most of the custom plumbing with a standard.
The takeawayInvest in the architecture, not the framework. The design survived intact; the plumbing turned out to be replaceable.

The full story

The problem

The Los Angeles Superior Court is the largest trial court in the country. Much of what the public asks it comes down to a handful of needs: where do I go, how do I pay this, what do I do with my jury summons. A well-organized website can answer some of those. Others are transactions, like registering for jury service, postponing it, or finding a hearing and checking in. We had chatbots that handled some of these on their own, and each one worked. But a member of the public shouldn't have to know which bot to talk to.

The idea: one front door

In early 2025 we set out to build a single entry point. CourtHelp would read each question and hand it to the right specialist: a knowledge chatbot that answered from the court's website and PDFs, a jury chatbot that could complete transactions, and more to follow. Internally we called it the "lord of all chatbots."

Version 1: building the plumbing ourselves

At the time, there was no settled standard for connecting an AI assistant to a set of tools. We evaluated open-source multi-agent frameworks and decided our needs were simple enough to build in-house. That meant building every piece of the plumbing:

CourtHelp launched alongside the court's new website in July 2025, and a hearings chatbot (find a hearing, set reminders, check in) was built next.

What running it taught us

The design worked, but much of our engineering went into problems that had nothing to do with courts. The transaction lock was the hardest part. Every bot had to follow the same conventions, and a conversation that went sideways was painful to debug. Each new chatbot also meant custom integration work, which made it hard for other teams to build their own.

The shift to MCP

Meanwhile, the Model Context Protocol (MCP) matured into a widely adopted standard for connecting AI applications to tools. When we looked closely, it described almost exactly the architecture we had built by hand: a client that decides which tool to call based on the tool's description, and servers that declare what they can do. So the platform was rebuilt on it.

Version 1 · 2025

Custom orchestrator, hand-built plumbing

Court userWebsite chat
CourtHelp orchestrator
Intent classifier, later an LLM router
Hand-built agent registry
Transaction lock: flags + session IDs
History compressed into every prompt
Court FAQ bot Jury bot

Each bot integrated by hand

Today · MCP

Same design, standard protocol

Court userWebsite chat
CourtHelp · MCP client
Routes by each tool's description
Elicitation for multi-step tasks
Sessions handled by the framework
Thin wrapper: input checks, exits
Court FAQ Jury service Hearings + new servers

MCP servers built from a shared template

Custom code we maintained Provided by the MCP standard and framework
Version 1 (2025)Today (MCP)
RoutingCustom registry plus an LLM intent classifierMCP client reads each tool's description
Multi-step tasksTransaction lock: flags and session IDsMCP elicitation: the server asks, then resumes
MemoryCondensed history packed into every promptHandled by the agent framework
Adding a botCustom integration workShared server template and registration
The front door, guardrails, and specialist chatbots stayed. The plumbing between them changed.

How it works today

Simplified for illustration. Component names are descriptive; implementation details are omitted.

Lessons Learned

  1. Invest in the architecture, not the framework. The orchestrator-and-specialists design survived intact. Much of the custom plumbing holding it together could be retired once a standard existed.
  2. Content quality beats model quality for public-facing questions and answers.
  3. Instrument feedback from day one. The daily negative-feedback report drove most of our improvements.
  4. Keep the pieces swappable. Because we had, adopting the standard was a migration rather than a restart.