The algorithm, in the open

How tortlconnect ranks every match.

This is the matching engine that sits between a consumer's case and an attorney's profile inside tortl. It is documented here in full because a ranking model that decides who you talk to about an injury claim should not be a black box.

Pure scoring · No pay-to-rank · Bidirectional


Why we publish it

A ranking model is a moral document.

Whatever a directory ranks attorneys by is what the directory believes a good outcome looks like. If the ranking is hidden, the consumer has no way to know whether the model thinks good outcome means the same thing they do.

tortlconnect optimizes for fit. The features below are the only things that move the score. Money does not move the score. Recency of payment does not move the score. There is no tier that lifts an attorney above their fit-determined position.

If a directory will not show you the math, the math is not on your side.

Case · Rear-end · injury reported · NJ

specialty depth +0.18
response time +0.12
recovery prob. +0.14
intake quality +0.09
+ 9 more features +0.29
0.82

no penalties triggered


Two perspectives, one feature pool

Same features. Different weights.

Every match is scored from two perspectives. The consumer sees a ranking of attorneys for their case. The attorney sees a ranking of cases for their practice. Both rankings come from the same thirteen features. The weights are tilted because the two sides optimize for different things — but neither side gets a hidden number.

Client view

Ranking attorneys for a case

Consumer-side weights · v3

Specialty depth
16
Reputation
15
Recovery probability
14
Geographic proximity
12
Fee alignment
12
Response-time fit
10
Liability appetite
7
Case complexity fit
5
Activity recency
4
Language match
3
Case value fit
2

Weights sum to 100. Published in the repo.

Attorney view

Ranking cases for an attorney

Attorney-side weights · v3

Expected fee value
23
Recovery probability
19
Specialty depth
14
Liability appetite
12
Intake completeness
11
Case complexity fit
7
Geographic proximity
6
Response-time fit
5
Language match
3

Weights sum to 100. Published in the repo.

Weights sum to one hundred on each side. Each feature returns a value between zero and one. The score is the weighted average, normalized, rounded.


The features

What each feature measures.

Each feature is a pure function: it takes the case, the attorney, and any pre-resolved context, and returns a number between zero and one. The descriptions below are paraphrased from the implementation. The implementation itself lives in a single feature library and is the authoritative source.

Specialty depth
How closely the attorney's declared focus aligns with the case type. Depth in the practice area beats a generalist who lists it.
Reputation
A normalized rating with a neutral floor for new attorneys — track records matter, but a clean newcomer is not penalized for the absence of one.
Recovery probability
A composite of liability strength, case type baseline, tortl verification, and remaining statute-of-limitations runway. The most honest single signal in the model.
Geographic proximity
Distance in miles, banded. Twenty-five miles or less is full credit; beyond two hundred the score falls below twenty percent.
Fee alignment
Whether the attorney's typical contingency percentage fits inside the consumer's declared maximum. Light tolerance below; hard penalty when the gap exceeds seven points.
Response-time fit
Average response hours, weighed against case urgency. An urgent case demands a fast attorney; a routine case forgives a 72-hour window.
Liability appetite
Whether the attorney takes strong-only cases, anything, or specifically welcomes complex liability — matched against the case's liability grade.
Case complexity fit
Derived from comparative negligence percentage, multiple insurers, pre-existing conditions, denial history, and liability grade. Matched against the attorney's complexity appetite.
Activity recency
How recently the attorney has been active in the platform. New attorneys aren't dormant — they're new — and are scored on a neutral floor until a pattern forms.
Language match
Whether the consumer's preferred language is covered by the attorney's declared languages.
Case value fit
Whether the case's estimated damages fit inside the attorney's declared value range. A small tail of credit for cases just outside the band.
Expected fee value
The case's estimated damages × recovery probability × the attorney's typical contingency, normalized against the attorney's declared value range.
Intake completeness
How much of the case file the consumer has actually filled in. Sparse intake is a strong predictor of a ghost client.

Critical-failure penalties

When a single feature should outvote the rest.

A weighted average can hide a catastrophic failure. An attorney can score well across nine features and have a 72-hour response time on a case where the statute expires in two weeks — and the consumer still sees a top ranking. tortlconnect addresses this with multiplicative penalties: when a feature falls below a defined threshold, the entire score is dampened by a fixed factor.

Feature Threshold Penalty
Recovery probability below 20% multiply by 0.60
If the case will not pay out, nothing else matters.
Specialty depth below 50% multiply by 0.85
Practices the area but doesn't focus on it — a soft fail the hard filter doesn't catch.
Response-time fit below 30% on urgent cases multiply by 0.80
A slow attorney on an urgent case is a real problem.
Intake completeness below 30% (attorney view) multiply by 0.70
Sparse intake is a leading indicator of a client who will not show up.
Fee alignment below 20% (client view) multiply by 0.85
Fee structure too far above the consumer's cap to negotiate around.

Penalties stack multiplicatively. A score that earned a 0.85 in the weighted sum and triggers both the recovery and the specialty soft-fail becomes 0.85 × 0.60 × 0.85 = 0.43 before any further adjustment.

Honest penalties

A weighted average can hide a catastrophic failure. Penalties name the failure out loud — and the score reflects it.

Hard filters

When a match is excluded entirely.

Below penalties sit hard filters. These do not dampen a score; they remove the match from the result set altogether. A consumer never sees an attorney who cannot legally take their case, and an attorney never sees a case that is already past the deadline to file.

Not licensed in the case's state
tortl will not surface an attorney to a consumer in a state where they cannot practice. Bar-licensure is verified at onboarding and re-checked.
Does not practice the case type
Listed practice areas are the floor for eligibility — an attorney who has not declared they handle the case type is excluded.
At monthly capacity
Attorneys set a monthly intake cap. Once they hit it, they are excluded from new matches until the next month.
Statute of limitations has expired
If the case's statute window has passed, the match is filtered. The score is irrelevant; the underlying claim is gone.

Apply to the founding cohort

This is the math your profile is ranked on. Get into it before consumers arrive.

Onboarding takes about ten minutes. We confirm bar standing, practice areas, and the inputs your matches are weighted on. Billing begins only when consumer access opens at public launch.

Free until launch


The quality boost

One asymmetric lift, applied honestly.

When a tortl-verified case with strong liability and at least $50,000 in estimated damages is matched to an attorney with a 4.5-star rating or higher, the final score is multiplied by 1.10, capped at 1.00.

This is the only asymmetric lift in the system. It exists because a clean case with a top-rated attorney is the matching engine's success case — and our incentive is to make sure those matches surface first. The boost is documented here so it isn't mistaken for a hidden tier.


What tortlconnect does not do

The list is short, intentionally.

We do not sell match ranking.
The algorithm above is the only thing that orders a consumer's match results. Bidding does not enter the score. The browse view — a consumer scrolling the open directory of in-state attorneys — is a separate surface where impression order can be bid on, and is labeled as such in product.
We do not sell consumer information.
Consumer case data is shared with an attorney only when the consumer initiates contact through tortl. The matching algorithm reads the case file; it does not transmit it.
We do not boost recency-of-payment.
An attorney who pays on the first of the month and an attorney who pays on the twenty-eighth score identically. Money flow is not a feature.
We do not surface attorneys outside their license.
The hard filter on jurisdiction is non-negotiable. We will not show a consumer an attorney who cannot represent them, regardless of how good a fit they would otherwise be.
We do not blur the line between ranking and impression.
The directory's browse view (where bidding affects impression order) and the consumer's match results (where it does not) are visually distinct in product and labeled differently. A consumer always knows whether they are looking at "your matches" or "all attorneys in your state."

Join the founding cohort

The algorithm is in the open. The founding rate isn't, for long.

If a future version raises a weight, drops a feature, or adds a penalty, the change will be documented on this page, dated, and explained. The founding rate locks now and stays locked for the life of your listing.

Free until launch

More to read