CRM for Law Firms
A prospective client rarely calls one firm. They call three, describe their problem to whoever picks up, and retain the first lawyer who calls back. Meanwhile the two things that can end a small firm hide in that same intake: a conflict of interest missed because the adverse party is a current client, and a statute of limitations no one docketed. Most solo and small firms run this on a legal pad, a shared inbox, and memory. A CRM built for how a firm actually intakes and manages matters, one intake queue, a real conflict search, a matter board, and a deadline docket, is what keeps the good clients in and the malpractice claims out.
The problem
- Intake leaks: a referral call, a web form, and a walk-in all land in different places, follow-up is slow, and prospective clients retain the firm that called back first while yours sits in voicemail.
- Conflict checks live in someone's head: whether the new matter's adverse party is a current or former client is checked from memory or a stale spreadsheet, and the one you miss is the one that disqualifies the firm.
- A person is not a role: the same individual is your client on one matter and the opposing party on another, so a contact list that stores one label cannot answer a real conflict question.
- Deadlines are tracked everywhere and nowhere: statute-of-limitations dates and court deadlines live in a paper calendar and three attorneys' heads, and a single missed date is the most common malpractice claim there is.
What you’d build
One place every prospective client lands, from a web form, a forwarded call note, or a walk-in, with the practice area, the matter description, and every party named. Before a matter can be accepted, the intake must pass a conflict search across all contacts and parties in open, closed, and even declined matters, with the result recorded on the intake so you have proof you checked.
A drag-to-move board with your real stages, New Intake, Consult, Retained, Active, Discovery, Closed, where each card is a matter linked to a client contact and to every other party, each with a role. One matter can list a client, an adverse party, co-counsel, and a witness, so the record actually reflects who is on which side.
A docket that surfaces statute-of-limitations dates, court deadlines, and filing dates with lead-time reminders, plus a daily task queue tied to matters and contacts. The soonest hard deadline is always the loudest thing on screen, so nothing critical slips between an accepted matter and the courthouse.
The data model
A day in the system
- 8:40am: an overnight web intake and two referral calls are waiting in the queue. Each becomes an intake record with the source tagged, the practice area set, and the matter description captured while it is fresh, so no prospective client is left in voicemail limbo.
- Before booking a consult, you run the conflict search on the prospective client and every party they named. The system matches on full names and aliases across all contacts and parties, including closed matters and prior declined intakes, not just current clients.
- A hit comes back: the adverse party in this new dispute is a contact your firm represents on an unrelated matter. The intake flips to conflict_pending and routes to the responsible attorney to decline or pursue a written waiver, and the result is stamped on the record.
- A clean intake clears. You schedule the consultation, log it as an activity, and when the client retains you the intake converts to a matter, the client contact is linked, and the adverse party is added as a party with its role.
- You enter the statute-of-limitations date on the new matter. The docket immediately creates a SOL deadline with lead-time reminders, so the single date that can end the case is now a hard, visible obligation instead of a note.
- Midday: the matter board shows what moved. You drag a case from Retained to Active, another from Active to Discovery, and each card carries its client, parties, and open deadlines with it.
- The docket surfaces a court filing due in nine days and a SOL landing next month. You assign the filing task to an associate and confirm the reminder window is wide enough to actually act on.
- End of day: the dashboard shows intakes still awaiting a conflict check, deadlines due this week, and prospective clients not yet called back, so you leave knowing what is unresolved rather than hoping it is fine.
Where AI trips up
- A conflict check is not an exact-name lookup: it must search every party across open, closed, and declined matters, and match on aliases, DBAs, maiden names, and related entities, not just the client's name. A naive build that only compares the new client's exact name to current clients misses the adverse-party and former-client conflicts that actually disqualify firms.
- Model parties per matter, never one label per contact: the same person is a client in one matter and the opposing party in another. If a contact stores a single role, you cannot answer a real conflict question and you will misrepresent whose side someone is on.
- Prospective and declined clients still conflict you out: information learned in a consult can bar the firm from the other side even if you never take the case. Store consults and declined intakes permanently and keep them inside the conflict search, do not delete them to tidy up.
- A statute-of-limitations date is not an optional task: it is the deadline that ends the matter if missed, and missed deadlines are the leading malpractice claim. Give SOL and court dates hard reminders with real lead time, and store dates unambiguously so an off-by-one on a filing deadline can never happen.
- Client confidentiality is a duty, not a setting: matter details are privileged and cannot live in a shared inbox or an open spreadsheet. Gate the system behind per-user auth with access control, and keep trust-fund accounting out entirely, since Rule 1.15 requires separate, reconciled records a general CRM has no business faking.
- An intake queue that captures every prospective client with source, practice area, description, and all parties, and blocks accepting a matter until a conflict search has run and been recorded.
- A conflict search across all contacts and parties, open, closed, and declined, matching on names and aliases, with the result stamped on each intake as your proof you checked.
- A matter board linked to a client and its parties, plus a deadline docket that flags statute-of-limitations and court dates with lead-time reminders.
- Trust accounting and IOLTA reconciliation, and client billing or invoicing: money is a separate, heavily regulated system, so keep it out of v1 rather than half-building it.
- Document assembly, e-signature engagement letters, and court e-filing integrations: upload or link documents for now and automate the paperwork later.
- Full time-tracking and billable-hour analytics: log activities on matters in v1 and add billing reporting once the intake and docket core is proven.
FAQ
Does it actually run a conflict check, or just store names?
It runs a real search. When you work an intake, it matches the prospective client and every named party against all contacts and parties across open, closed, and declined matters, on full names and aliases, then records the result. It flags potential conflicts for an attorney to clear or waive rather than making the ethical call for you, but it gives you the search and the paper trail Rule 1.7 assumes you performed.
Can it handle a matter where the same person is on the other side?
Yes, and this is the point of modeling parties separately. A contact exists once, and each matter links to it through a party record with a role, so one person can be your client in one matter and the adverse party in another without the two collapsing into a single confused record.
Will it stop me from missing a statute of limitations?
It is a system of record, not a substitute for docketing discipline, but it makes the date impossible to lose. SOL and court deadlines sit on a docket with lead-time reminders and the soonest hard date surfaced first, so the obligation is visible every day rather than buried in a calendar someone forgot to check.
Is client data kept confidential and secure?
Your CRM runs hosted on ybuild and served on your own domain, backed by a managed database and gated behind managed auth with per-user access, so privileged matter details stay in one controlled system instead of a shared inbox or an open spreadsheet.
Can I bring my existing client and matter list over?
Yes. Describe the columns in your current spreadsheet or export, names, matters, parties, practice area, key dates, and the app maps them into the contacts, matters, and parties tables so your conflict search covers your real history from day one, not a blank database.
Sources
- ABA Model Rule 1.7: Conflict of Interest: Current Clients — The American Bar Association rule defining when a concurrent conflict of interest bars representation, the exact standard your intake conflict check exists to catch.
- ABA: How the Legal Client Intake and Conflict Check Process Works — Practical ABA guidance on collecting full legal names, aliases, and adverse parties and searching every open, closed, and prospective matter before accepting a client.
- ABA Model Rules on Client Trust Account Records — The recordkeeping baseline behind Rule 1.15, and why trust accounting is a separate, reconciled system you deliberately keep out of a v1 CRM.
- Clio Legal Trends Report: Law Firm Benchmarks — Widely cited benchmarks showing average lawyer utilization near 38 percent, underscoring how much billable time leaks into unstructured intake and admin.
Describe it, go live on your own domain in one pass — hosted, full-stack, no server. Free to start.