We Feared AI Would Replace Us. So We Built DingDuff.

We Feared AI Would Replace Us. So We Built DingDuff.

We Feared AI Would Replace Us. So We Built DingDuff.

How a lawyer, her best friend, and a Raspberry Pi built an MCP server that changed how attorneys use AI

How a lawyer, her best friend, and a Raspberry Pi built an MCP server that changed how attorneys use AI

10

min

Copy link

A little over a year ago, in the spring of 2025, I was still an enforcement attorney at the Consumer Financial Protection Bureau, where my colleagues and I had been living through a DOGE-induced upheaval. With all my investigations and lawsuits frozen, and having fired off my Nth “here are the five things I did last week” email, I decided it was time to head back to private practice.

But back in the private sector, attorneys - or at least the more forward-looking ones - were facing their own 3 a.m. monster: the fear that AI was about to replace us. My close friend, Kyle Dingman, whom I’d met years earlier in a philosophy of language class at the University of Texas, was among those already losing a lot of sleep over this. We had built our adult lives on learning how to see every angle and write well, and getting paid for both, and he feared those skills were about to be worth a lot less. Until then, I’d had the luxury of looking away while taking refuge in my federal job. But that was no longer an option.

So I joined Kyle. And from our fears, our curiosity, and some inexplicable inability to ignore this looming AI monster, DingDuff was born. At around the same time, I left the government and my specialized practice area for a busy litigation shop, where every day presents a new legal research question. In retrospect, the timing of both couldn’t have been better.

So what is DingDuff? It’s an MCP (model context protocol) server, or what most people would call a connector. It links to your Claude account and gives it direct access to an enormous corpus of case law (from CourtListener, updated daily) and statutes, regulations, and rules (our own database) so you can do legal research without it inventing cases. If you’ve used Westlaw’s AI features, it’s similar to the chat window that runs an AI through Westlaw’s database to produce a legal research memo. Except ours connects directly to your Claude account, and the legal research output appears in your own Claude platform. “MCP” is a term I now use daily, but along with a host of other terms (API calls, database architecture, vectors, context windows, skills, and agents) it was one that I, a lawyer by profession, had never heard in my life. I was now hearing them all for the first time; some from the internet, but most of them from Kyle.

How it Began

Bob Ambrogi, of LawSites, has done a great job with the back story here. But it’s a good story, and worth briefly repeating. 

To be clear, Kyle is also not a coder by profession. But when most lawyers responded to ChatGPT’s release by burrowing their heads in the sand and saying “oh, I hear it just hallucinates cases,” Kyle did the opposite. He worked out that you could raise a specialized AI the way you train a person - feed it contract law and it becomes a contracts lawyer; feed it employment law and it becomes an employment lawyer - and he set out with a plan. He would train miniature LLMs, and he began to joke about the AI dream team he would eventually have - an AI Daubert specialist, an AI choice-of-law expert, an AI causation expert, and on and on - who would do all his plaintiff-side mass-torts work for him while he never worked again.

By the time I joined the project in March 2025, all of that had been abandoned.

Kyle was already hooked into a new idea: build a local database on our own machines and let the model reach into it. He began watching hours of database-architecture videos. And every time we got together I’d get a new lecture on “normalization” or “schema layouts.” In the blink of an eye, Kyle had a working database on his MacBook Pro. (By contrast, I barely had one reporter volume downloaded on mine.) A lot has happened since then: the database was migrated to a Raspberry Pi (Dingbot); an MCP server (Duffbot) was built so that I, too, could connect to the database (rather than architecting my own), which also allowed us to benefit simultaneously from any updates we made; the bulk of that database gave way to us making API calls to CourtListener; Duffbot became DingDuff; and Claude Code exited its beta phase, supercharging Kyle’s progress and allowing me to participate more along the way.

The story of DingDuff is, at its heart, a story of hundreds of days of trial and error and thousands of collective text messages and emails exchanged (and, eventually, GitHub issues opened and closed), all of which could probably be classified into one of four buckets: (1) how to make it do the legal research we wanted it to do, (2) how to make it work for more than a handful of users, (3) how to make it as close to free as we could, and (4) how to do all of this while keeping up with Anthropic’s constant evolution. We thought the first one would be the really hard one, but it was two, three, and four that took six months and a few more developers to figure out.

Phase One: Making DingDuff a Good Researcher

By August of 2025, we had an MCP server that accessed the CourtListener database and our own database of federal and Texas statutes and rules. These were the things that two Texas litigators needed first. (CourtListener would not release a connector of its own for another nine months, so this gave us a non-trivial head start.) And because we were building this for ourselves, and for the first time, DingDuff’s evolution has been driven purely by what we found ourselves needing in our daily practice. The problems that fell into this bucket (“make a good legal research tool”) are captured in our many texts that read along the lines of “uh oh, it just gave me an overturned case, let’s figure out shepardization,” or “we really gotta get it to read more context, I just got two cases for propositions they barely address!”

By September we had our first user who was neither Ding nor Duff (yay!), and that user helpfully discovered some cross-jurisdictional bleeding in Claude’s responses. We made a fix. Then two more users followed, including a former CFPB colleague now practicing in California. So we began adding other state statutes, starting with California and New York. Every time one of us would hit a new wall, like on the day I suddenly needed the New York commercial division rules, we’d fold whatever we needed into our connector. Through daily tweaks, we were getting to a tool that was giving us genuinely good answers. (We now have all fifty state statutes and rules and continue to grow our database, thanks to the work of Brady, our fifth member.)

By the time we got our first glimpse at DingDuff’s output versus Westlaw’s in late October 2025, we had a connector with something like 20 tools, several of which we had created and fine-tuned to help us tackle the very specific problem of making sure the AI could read the relevant parts of enough cases to give us a rigorous-enough legal research answer. When we saw, in our opinions, how good our output was against Westlaw’s, we were pretty floored.

We were even more surprised to find that our tool was more versatile than Westlaw’s. Because DingDuff plugs directly into Claude, Claude’s answer frequently becomes the start of a conversation rather than the end of one. I can then follow up in the same window, or change tack entirely and ask it something like “now look across federal appellate decisions in which the court evaluated a punitive damages award for whether it was constitutionally excessive, and (a) calculate what punitive-to-compensatory ratio survived at each tier of the compensatory damages award, and (b) tell me where the Fifth Circuit sits within the pattern.” (When I asked it this recently, I got a pretty amazing chart, a memo, and an excel file with multiple tabs that allowed me to type in my own compensatory and punitive damage award amounts to see where they fell in the distribution as compared to other cases, and also a little warning from Claude that the Fifth Circuit’s cases diverge due to statutory caps at play.) This is the sort of answer I couldn’t have gotten with an old-school Boolean search. 

Phase Two: Solving the Four-User Problem

We suddenly had something we wanted to share beyond the few friends who had stuck with us through the roughest patches, and we brought in Jeremy, a senior developer and close friend from our undergrad years, and Julia, a junior developer, to do the serious stuff - migrate it all to professional-grade hosting, help with DNS issues, and implement an identity provider, among many other things. But we still had a big problem. We had designed the whole thing for ourselves, and we had never asked whether it would scale.

It’s here that what we affectionately refer to as the “Four-User Problem” appeared on the scene, along with what became a running joke for the months to come.

Kyle and I each ran our daily research questions in our individual Claude accounts. But part of our design for solving the make-the-AI-read-enough-context-to-give-us-a-genuinely-useful-answer problem relied on a loop that ran through a back-end AI, which processed large swathes of text before handing it back to the user’s front-facing Claude. That back-end AI was a Claude API key that we paid for.

This would work well at four users, and fine at eight. But it was never going to work at fifty. The problem was that Anthropic’s servers just wouldn’t let us make too many calls at once, so we couldn’t serve more than a handful of users at a time.

We wrote a sequencing rule to queue the tool calls, which got us to roughly twenty users. But we knew that if we ever got to many more, the bottleneck would become too great, the wait times too long, and eventually the tool would be too slow and lumbering to be useful to anyone.

So for months, every time we’d get really excited about DingDuff, or every time we’d go down a three-hour long rabbit hole on something we also wanted to add, the excitement would invariably end in: “but oh yeah, the four-user problem.” Even our non-DingDuff friends began to troll us. We would tell them how useful the tool had been on some project, and they would say, “that’s great, too bad only four people can use it!”

It took us a few months to work out our first solution. We turned the default position to “off” for those tools that called on our back-end AI and asked users to add their own Anthropic API key to their DingDuff profile, which routed their back-end inference through their own account. Bring your own key (BYOK) not only moved the small charge to the user but, more critically, it removed the bottleneck, which solved our four-user problem.

Phase Three: Getting Lawyers to Use It as Intended While Keeping It as Close to Free as We Could

As frequently happens, solving one problem just created another: lawyers, for the most part, do not love technology, and it turned out that asking them to add a strange thing called an API key to their profile was basically a non-starter.

We had made one Reddit post, and people were signing up, but we could see they were getting a watered-down version of DingDuff with those two tools off. We went round and round. Sometimes we would forget and say, “it doesn’t cost that much, let’s just give everyone a ‘Princess’ account (an account with all the tools on) and foot the bill.” Then we would remember: it was never the money, it was the four-user problem.

And then Kyle figured out the solution.

We could make a plain-text copy of every case that a user’s Claude wants to read and pipe it straight to them. Their own account could then run the loop, without needing any back-end processing. It worked. We were pretty happy. Not only did this solve the four-user problem, but it let us make DingDuff totally free, with no API key required.

Phase Four: Expanding Quickly

By June of 2026, we were adding a few users a day and celebrating any day that brought three. Then Bob ran his article on us, and we went from 220 users to nearly 2,000 in just a few weeks. But when we looked at the tool calls those users were making, it looked like BYOK all over again. Almost nobody was getting the full version of DingDuff. 

As it turned out, just before the spike, Anthropic had changed something on its platform. We are almost never told what; we only notice that something that worked is now broken. And this is the running refrain of DingDuff: we crack the code, Anthropic changes the lock. Here, we could see that almost nobody was using the “opinion_store” tool, and we could not figure out why.

Troubleshooting this required doing what product developers do routinely, and we had never done - replicating the user experience from scratch. I made new Claude accounts and new DingDuff accounts and walked through a bunch of sign-up combinations (Teams, Max) as a stranger would. It became apparent pretty quickly why almost nobody was getting DingDuff’s full potential: our sign-up guidance was a disjointed mess, and each type of Claude account carries its own default settings, which Anthropic changes without much notice.

In response, we rewrote the website instructions, built a plugin that pipes in new skills automatically as we update them (users have to download it from our website until Anthropic approves it for the directory), and we’ve been answering a lot of user setup emails. This has mostly worked, as most users are now accessing our “fetch_opinion_file” (renamed from “opinion_store”) tool. But it’s not perfect.

Where Things Stand

People keep asking us what our plan for DingDuff is, and the honest answer is that we don’t know. Creating DingDuff has given us a front-row seat to how AI is reshaping the law, and it has allowed us to be actively involved in it. The feedback we get from practicing lawyers is really good, and I think that is mostly because we developed the tool and also use it daily to solve our own problems. But it still has its hiccups, and we still never know what will break next.

Whatever ultimately happens with DingDuff, one pleasant surprise has come out of this project: the technology that we feared would replace humans has, so far, brought us closer together. As undergraduates, Jeremy, Kyle, and I practically lived at Spider House, an Austin coffee shop, arguing about questions that seemed purely philosophical at the time: is consciousness just an emergent property, and if so, can a computer have it? The questions that bonded us at twenty-one have become the questions of the moment, and we’ve found ourselves back around a table (a kitchen one now) on many weekends this past year, taking them up again as we collectively build. 

This project has also made the legal community smaller for us. The daily emails we get at our hello@dingduff.com account come from other lawyers having the very same human experience we were having a year ago, wondering what AI will mean for their jobs. And the vast majority of those emails thank us for creating this tool - they thank us for leveling the playing field for the smaller firms, the solo practitioners, and the non-profits. It is these emails that currently motivate us to keep it all going.

Stephanie Duff-O'Bryan

Stephanie Duff-O'Bryan

Senior Counsel at Cleveland Krist PLLC

Stephanie is Senior Counsel at Cleveland Krist, focusing on high-stakes commercial disputes. Before joining the firm, she spent nearly a decade as an enforcement attorney at the Consumer Financial Protection Bureau, where she helped recover more than a billion dollars for consumers, including a $1 billion settlement with a national bank.

Earlier in her career, she litigated business disputes in Austin, clerked for a federal judge in the Western District of Texas, and taught legal research and writing at Georgetown Law.

Stephanie holds a J.D. from Columbia Law School and a B.A. in Philosophy from the University of Texas at Austin.

AUTHOR

Stephanie Duff-O'Bryan

Stephanie Duff-O'Bryan

Senior Counsel at Cleveland Krist PLLC

TRY IT YOURSELF

DingDuff is an MCP (model context protocol) server that connects directly to an LLM like Claude, giving it access to a full corpus of case law and statutes from CourtListener.

The Data Platform for Law Firms

© 2026 PacerPro. All rights reserved.

The Data Platform for Law Firms

© 2026 PacerPro. All rights reserved.

The Data Platform for Law Firms

© 2026 PacerPro. All rights reserved.