Meridian Legal Group: CRM Overhaul and Deduplication

Meridian Legal Group ran a three-office law firm on a single HubSpot instance where 40% of new contacts were duplicates and lead response averaged 6 hours. The rebuild added search-before-create deduplication, model-driven lead routing and SLA escalation, cutting duplicates by 94% and assigning every lead within 10 seconds.

94%
Fewer Duplicates
3
Office Locations
12
Intake Channels

Quote this

Meridian Legal Group: 94% fewer duplicate contacts across 3 offices and 12 intake channels, with assignment inside 10 seconds, against a baseline where 40% of new contacts were duplicates and lead response averaged 6 hours.

Source: Dario Cositore, Meridian Legal Group case study on dariocositore.com. Link: https://dariocositore.com/case-studies/meridian-legal-crm/

The problem

Meridian Legal Group operated across three office locations with a single HubSpot instance that had become a data graveyard. Duplicate contacts from intake forms, webhooks and manual entry numbered in the thousands. Leads were assigned randomly, SLA timers did not exist and partners had no visibility into which intake channels produced revenue.

The firm was paying for HubSpot Enterprise but using roughly 15% of its capability. Workflows were built by a junior marketing hire two years ago and had never been audited. The result: 40% of new contacts were duplicates, lead response time averaged 6 hours and the managing partner was manually reassigning leads every morning.

The architecture

The rebuild started with data hygiene. I implemented search-before-create deduplication at the webhook ingestion layer , every incoming contact is matched against existing records using email, phone and custom Typeform response ID before any create operation fires. Matches update the existing record. Non-matches create new contacts with full field mapping.

Lead routing was rebuilt from scratch. Each intake channel (Typeform, website chat, referral, walk-in, Google Business Profile, email) feeds into a scoring model that evaluates practice area fit, urgency signals and office proximity. The model assigns leads to the correct office and practice group within 10 seconds of submission. The same assignment logic, minus the offices, is my automated lead routing guide.

SLA timers track response time per lead. If a lead is not contacted within 2 hours, the system escalates to the managing partner. If not contacted within 4 hours, it reassigns to the next available attorney. Every escalation is logged.

STAGE 01
Deduplicate at intake
Every incoming contact is matched on email, phone and Typeform response ID before any create fires.
Custom Deduplication Logic
STAGE 02
Map and create
Matches update the existing record, non-matches create new contacts with full field mapping.
HubSpot API
STAGE 03
Score and assign
Practice area fit, urgency signals and office proximity assign the lead within 10 seconds.
Make.com
STAGE 04
Enforce the SLA
Unanswered leads escalate to the managing partner at 2 hours, reassign at 4 hours.
SLA Timer Engine

Figure 1. The intake pipeline, from form submission to assigned lead.

Before / after

Before

40% duplicate contacts. 6-hour average response time. Manual lead reassignment every morning. No visibility into channel performance. Workflows built by junior hire, never audited.

After

94% fewer duplicates. Sub-10-second lead assignment. Automatic SLA enforcement with escalation. Real-time channel performance dashboard. Fully documented and auditable workflow layer.

Results

Within 30 days of deployment, duplicate contacts dropped by 94%. Lead response time went from 6 hours to under 10 seconds for automated routing. The managing partner stopped spending 45 minutes every morning on manual reassignment. Channel attribution became accurate for the first time , the firm discovered that referrals produced 3x the revenue of Google Ads but had been under-resourced for months.

The system has been running for 8 months with zero maintenance interventions. All workflows are documented, version-controlled and auditable.

What broke

Four things were broken in the firm before the build. Every one of them now has a named component behind it.

  1. Duplicate contacts arriving from intake forms, webhooks and manual entry, numbering in the thousands and reaching 40% of all new contacts. Fix: search-before-create deduplication at the webhook ingestion layer, matching on email, phone and Typeform response ID before any create fires.
  2. Leads assigned randomly with no SLA timer, so response time averaged 6 hours and the managing partner reassigned leads by hand every morning. Fix: a scoring model that assigns the correct office and practice group within 10 seconds, with escalation at 2 hours and reassignment at 4 hours.
  3. Workflows built by a junior marketing hire two years ago and never audited, on a HubSpot Enterprise subscription the firm was using at roughly 15% of its capability. Fix: a fully documented, version-controlled and auditable workflow layer.
  4. 12 intake channels with no channel attribution, so partners had no visibility into which channels produced revenue. Fix: a real-time channel performance dashboard, which showed referrals producing 3x the revenue of Google Ads.

The stack

HubSpot API Make.com Typeform Webhooks Custom Deduplication Logic SLA Timer Engine

Related case studies

01 NORMALIZE 12 Channels Phone + email clean 02 MATCH Dedup Engine Exact + fuzzy search 03 ROUTE 3 Offices Practice + SLA timer 04 HUBSPOT Single Record Audit log + alert
System execution diagram: Meridian Legal Group: CRM Overhaul and Deduplication.
Operational dimensionLegacy baselineProduction system
Duplicate contact rate31% duplicate records across 3 officesUnder 2% after search-before-create and fuzzy matching (94% reduction)
Intake channel unification12 disconnected forms, call logs, and spreadsheetsSingle normalized webhook contract feeding HubSpot
SLA enforcementNo visibility when leads sat unworked for daysAutomated 15-minute escalation timers with partner alerts
Attribution reportingAd spend tracked in spreadsheets with broken UTMsClosed-loop revenue attribution from first touch to signed retainer

Frequently asked questions

How does search-before-create deduplication work in HubSpot?

Every inbound payload normalizes the email address and E.164 phone number first, then queries HubSpot for existing contacts before writing. If a match exists, the workflow appends the new inquiry to the existing timeline instead of creating a duplicate contact.

How are leads routed across multiple law firm office locations?

Routing rules evaluate practice area, client ZIP code, and active attorney capacity across all three offices, with an automated 15-minute SLA timer that reassigns unworked leads.

Did the firm have to pause intake during the HubSpot migration?

No. The deduplication and routing layer was built in shadow mode first, verified against live webhook payloads, and cut over with zero downtime.

Have a similar CRM problem?

Paste your broken workflow, describe the bottleneck, or share the error. I will tell you exactly what is wrong and how to fix it.

Run Free Diagnostic

Stay in the loop.

Technical breakdowns, new system builds, and lessons from deploying autonomous AI. One email a week, direct to your inbox.

One email a week. Leave with one click.

Forty percent of new contacts were duplicates and lead response averaged six hours. The Implementation Review is $1,500 and a one-workflow build is $4,000, paid 50% at kickoff and 50% on handover.