BriefCheck All guides

Outside-counsel billing guidelines vs. the LEDES spec: what's actually checkable

A LEDES file can pass every structural check, balance perfectly, and still violate a client's actual billing guidelines. Those are two different questions. "Is this a valid LEDES file" is about the spec. "Does this invoice follow the rules this specific client's outside counsel agreed to" is about a document that usually lives as a PDF a general counsel's office sent over, not anything LEDES itself encodes.

The four things that are actually checkable from a LEDES file

Not every outside-counsel guideline can be verified from the file alone (a lot of them are about legal judgment, not data), but four common ones can:

Block-billing thresholds. A lot of guidelines cap how many hours a single line item can carry, on the theory that one task rarely legitimately takes that long, and single oversized entries are usually several tasks billed together instead of itemized. Checkable directly from LINE_ITEM_NUMBER_OF_UNITS.

Disallowed task codes. Some clients categorically won't pay for specific UTBMS task or activity codes (internal case-management admin work is a common one). Checkable against LINE_ITEM_TASK_CODE.

Rate caps. A ceiling on LINE_ITEM_UNIT_COST, either flat or scoped to a specific timekeeper classification (a partner rate cap that doesn't apply to associates, for instance).

Approved timekeeper classifications. Some guidelines only allow certain classifications to bill at all, no paralegal-billed research, associates need separate sign-off, that kind of rule. Checkable against TIMEKEEPER_CLASSIFICATION.

How this actually works

POST /api/check?tier=consistency&profile=<id> runs a named profile's rules against the file alongside the normal Tier 2 consistency checks, same report, same issue shape, tagged with which rule fired so you can tell a guideline violation apart from a structural or arithmetic one. GET /api/profiles lists what's available. It's gated the same way the rest of Tier 2 is: the tier2:consistency scope, no separate scope of its own.

What ships today isn't your client's actual policy

This matters enough to say plainly: the profiles available right now (sample-conservative-corporate, sample-high-volume-insurer, sample-litigation-fast-track) are illustrative, built to show realistic threshold shapes, not transcribed from any real client's guideline document. sample-conservative-corporate caps line items at 4 units and partner rates at $650, sample-high-volume-insurer allows 6 units and caps flat at $395 while blocking two specific task codes, sample-litigation-fast-track caps at 3 units with its own disallowed codes. None of those numbers came from an actual guideline document; they're representative of the kind of thresholds real ones tend to set.

A real client's guideline set becoming available here is a data change, not a new feature: the four rule types above are already generic and parameterized, so encoding an actual outside-counsel guideline document means instantiating those same rules with that client's real numbers, not writing new code.

Try it

Tier 2 (consistency), same gate as the rest of this series, part of a Day Pass or Ledger subscription. GET /api/profiles shows the current list; try one of the three illustrative profiles against a sample file to see the shape of what a real guideline-violation report looks like before assuming it matches your specific client's actual rules.

Try it on your own file →