Pro Se Partner

Nine AI agents. One mission: make sure no one loses their home because they couldn't afford a lawyer.

Inspiration

Every year in LA County, tens of thousands of tenants get evicted without ever filing a response. Not because they don't have a defense. Because the system is impossible to navigate alone. You need to find the right forms on a court website that breaks constantly. You need to calculate a deadline buried in statutes and local rules. You need to know which defenses apply to your situation. You need to find legal help that's actually nearby and actually available. And you need to do all of this in five days or you lose by default.

We built Pro Se Partner to do all of that for you.

What it does

You tell us what happened in plain English. Upload your notice if you have it. Hit analyze.

Behind the scenes, nine AI agents go to work. They open real browsers, navigate real court websites, download real forms, compute your actual deadline, find defenses that fit your facts, locate legal aid near you, check if you qualify for a fee waiver, fill out your paperwork, and when you're ready, file your answer with the court. You can watch every agent work live in your browser. When it's done, your dashboard has everything you need: filled forms, a countdown to your deadline, applicable defenses with citations, and nearby help.

This isn't a chatbot that gives you generic legal information. It's a system that does the work.

How we built it

Next.js 15, React 19, Tailwind, and Browser Use Cloud as the engine that makes everything possible.

The user's story goes through the first two agents, which build the case context that powers everything downstream:

  • Case Intake Agent classifies the user's story into a structured legal profile covering eviction type, notice details, service method, and jurisdiction
  • Document Parser Agent extracts fields from any uploaded notices, complaints, or leases and merges them into the case context

Then we hand it to Browser Use. Four agents launch in parallel, each controlling its own remote browser:

  • Forms Navigator Agent navigates LA Superior Court's self-help site, finds the current UD-105 and FW-001, verifies revision dates, and downloads them. Court sites break and reorganize constantly. The agent handles it.
  • Deadline Tracker Agent pulls up California statutes and local rules, computes the exact response deadline from the user's service method and business days, and flags when missing facts make the math uncertain rather than guessing
  • Defense Research Agent searches legal resources for defenses that actually match this user's facts, habitability, improper notice, retaliation, and returns them with plain-language explanations and real citations
  • Legal Aid Agent runs location-aware searches to find organizations, clinics, and self-help centers nearby, filtered by eligibility and walk-in availability

Two more agents handle the paperwork:

  • Fee Waiver Agent checks income against California thresholds to determine eligibility
  • PDF Filler Agent takes everything the other agents gathered and fills the actual form fields, flagging anything it isn't sure about

Then the user hits file, and Browser Use does something we haven't seen anyone else attempt:

  • E-Filing Agent opens a fresh bu-max session, navigates the real courtfiling.net portal, uploads the completed answer, and captures a confirmation number. A real filing on a real court system. The user watches every click happen live.

Every session streams through TanStack Query into a unified dashboard. Every agent has a live iframe so you can watch the browser in real time. Full transparency into a process that decides whether someone keeps their home.

Challenges we ran into

Court websites aren't built for automation. Forms move, links break, self-help flows change without notice. We had to build agents that could recover from navigation failures and verify they had the right document before moving on.

Running up to four browser sessions simultaneously while tracking independent status streams and merging them into one coherent UI required a concurrency layer that could handle partial failures without blocking the rest of the pipeline.

And the stakes are real. A wrong deadline or a missed defense could cost someone their housing. The system is built to flag uncertainty and keep humans in the loop rather than guess.

Accomplishments that we're proud of

We built a system where AI agents operate on real court infrastructure, not mock APIs or sandboxed demos. The Forms Navigator downloads actual judicial council forms from a site that reorganizes itself regularly. The Deadline Tracker computes deadlines from real statutes. The E-Filing agent submits to the actual courtfiling.net portal. None of this is simulated.

The live browser overlay is something we're particularly proud of. When someone's housing is at stake, they shouldn't have to trust a black box. Every Browser Use session streams its live URL into an iframe on the dashboard so the user can watch the agent navigate, click, and download in real time. They see exactly what's happening and why.

We also got parallel orchestration working cleanly. Four browser agents running simultaneously, each with independent failure handling, all feeding results into one unified dashboard without blocking each other. A timeout on Defense Research doesn't stop your deadline from being calculated or your forms from being downloaded.

What we learned

The hardest part of legal technology isn't the law or the technology. It's the gap between them. Court websites assume a human is clicking through them. Legal rules have edge cases that compound in ways that are hard to anticipate until you're computing a deadline for someone who was served by posting and mailing on a Friday before a court holiday. Users in crisis don't need more information, they need someone to do the thing for them.

We also learned that Browser Use is remarkably capable when you give it well-structured context and constrained tasks. The difference between an agent that flails on a court website and one that reliably finds the right form comes down to how specific the task prompt is and how much case context you feed it. Generic instructions fail. Case-aware instructions work.

What's next for Pro Se Partner

Expanding beyond LA County to cover all California Superior Courts, then other states. Adding support for case types beyond unlawful detainer like small claims and restraining orders. Building a document assembly pipeline that generates complete response packets including declarations and proof of service alongside the filled forms. And integrating with court calendaring systems so users get proactive alerts as their case moves through the system rather than having to check back manually.

Built With

Next.js 15, React 19, Tailwind CSS, Browser Use Cloud SDK, TanStack Query, pdf-lib, Vercel

Built With

Share this project:

Updates