Show us your business

Case study: custom software

A two-sided legal marketplace, run end to end by software

Consumers on one side. Law firms on the other. One engine in between doing the work of a whole back office.

A network of consumer legal properties generates injury case leads. Law firms buy them, delivered straight into their own CRMs, billed against budgets they control. Everything between the first form field and the final invoice is automated. We designed it and built it for the client who owns it, and we still operate it for them today.

125,000+Lines of code
6Applications
350+API endpoints
23CRM integrations
9Lead types
50States covered

The business

Two sides, one platform

Marketplaces are hard because you're really building three products: one for each side, and the engine that keeps them honest with each other.

Demand side: consumers

Properties people actually search for

A family of consumer brands built around real questions people ask after an accident, led by a settlement calculator and an accident report lookup service.

  • Instant AI-drafted settlement estimate ranges
  • A server-driven form engine: question schemas, a rules engine, and skip logic, so new intake flows are configuration, not code
  • Ranked fuzzy city matching against a complete US places database
  • Full attribution captured on every lead: click IDs, campaign data, page journey, time on form

Supply side: law firms

Buyers who never touch a spreadsheet

Firms apply through a dedicated acquisition site, then manage everything through a portal the platform keeps current for them.

  • Territory, practice area, and case requirements per order, down to excluded injury types
  • Budgets at the region, firm, or shared-pool level, topped up by card
  • Leads delivered into their own CRM, not another inbox to check
  • A dispute portal with refunds that land back in the right budget automatically

The engine

The life of a lead

Six things happen between a stranger's form submission and a law firm's CRM. No person touches any of them unless they choose to.

01

A consumer asks for help

Someone hurt in an accident lands on one of the consumer properties, like the settlement calculator or the accident report lookup. A server-driven form engine walks them through the right questions for their case, resolves their city against a full US places database with fuzzy matching, and files the lead in about a minute.

02

The lead is verified

Three stages before anything gets sold: fake-data heuristics, then concurrent email and phone verification services, then a Claude-based classifier that catches pranks and gibberish. Every stage is audited on the lead record, and the gate fails open by design so a real lead is never lost to our own infrastructure.

03

AI prices the case

A language model drafts the consumer's settlement estimate range and double-checks the case classification, upgrading, say, an auto accident to a commercial vehicle case when the details support it. Only allow-listed changes are applied, and the originals are always kept.

04

The engine finds the buyer

A single database aggregation resolves geography from city to county to state to nationwide, walks the practice-area hierarchy with fallback priorities, checks each firm's case requirements, then runs a six-mode budget waterfall to find every firm that can afford the lead. The winner is picked by priority, price, and a round-robin that keeps concurrent orders in the same territory fair.

05

Delivery, wherever the buyer lives

The lead arrives as a formatted email and lands directly inside the firm's own CRM, in whichever of 23 delivery formats their system speaks, from Litify and Lead Docket to Salesforce and Clio. A config-driven field-mapping engine handles new CRMs without new code, and real-time alerts fire the moment it's delivered.

06

The books settle themselves

The right budget bucket is debited atomically, spend counters update, low-balance alerts go out, and the conversion is reported back to the ad platform with a full audit trail. Firms top up by card whenever they like, and disputes refund to the exact budget source the lead was charged against.

Under the hood

The parts we're proud of

A matching engine with business sense

Matching isn't a lookup, it's policy: regional and shared budget pools, flexible pricing that lets a buyer's CRM response set the final price, free re-matches when a consumer already has a lawyer, priority overrides that beat price, and exclusion rules per firm. All of it runs inside one aggregation on indexed hot paths.

AI where it earns its keep

No chatbots for show. AI screens out prank submissions before a firm pays for them, drafts the consumer's estimate, and refines case classification under strict guardrails. Boring, profitable AI, wired into the money path with an audit trail.

Money that reconciles itself

Card payments credit budgets through webhooks. Refunds carry idempotency guards so a dispute can never credit twice. When an ad-platform conversion turns out to be junk, the system retracts or restates it upstream automatically, so ad spend learns from reality.

Integrations without hand-holding

Firms don't change their tools; the platform speaks theirs. Twenty-three delivery formats, a mapping engine configured from an admin screen instead of code, HMAC-signed service-to-service calls with replay protection, and scheduled auto-send windows per buyer and timezone.

Then we grew it

Software was half the story

The demand side doesn't buy ads to survive. Hundreds of pages of research-backed content rank organically in one of the most competitive legal markets in the US, built and tuned by the same team that wrote the platform.

#1Organic rankings for many of the most competitive personal-injury search terms in the US
9xInbound lead growth in three months on the flagship property
4 to 1Free organic leads outnumbering paid ad leads
100sOf ranking pages, generated and maintained as a system, not one by one

Build and growth are separate services. This client needed both; plenty of our clients want only one, and that's exactly how we work.

Built to be operated

The unglamorous parts that keep it alive

  • Fails open, never silent. Verification outages can't block a real lead, and if a budget was debited without its audit record, the system alerts a human loudly instead of hiding it.
  • Kill switches everywhere. A dry-run mode spans the entire send pipeline, and new subsystems ship behind legacy-only switches so rollback is one flag, not one deploy.
  • Human judgment is honored. When a consumer asks to talk to a person, three independent layers respect that flag. No code path can auto-send around it.
  • Operated, not abandoned. A dated engineering changelog runs unbroken across years of production, through framework migrations, model upgrades, and a steady stream of business rule changes.

Stack

Boring where it should be

Node.jsExpressNext.jsReactTypeScriptMongoDBStripePostmarkTwilioTelegramOpenAIClaudeGoogle Ads APICloudflareDigitalOcean

Have something complicated in mind?

Tell us what you want built. Within 48 business hours you'll get a written plan and a fixed quote, no sales call. And if what you need is growth instead of software, that's its own front door.

Get a build quote

Details anonymized. Third-party platforms named above are integration vendors, not clients.