← Selected work

Finance product

Legal Pricing & Margin Calculator

A practical pricing tool that turns staffing assumptions, rates and delivery scenarios into a clear margin decision.

  • Python
  • Streamlit
  • PostgreSQL
  • Excel
2026

The model, live

Same fee. Same hours. Move who does the work

All three team shapes below deliver the same 160 hours for the same client fee. The only thing that changes is which seat the work sits in — and that is the whole difference between a matter worth taking and one that quietly funds itself.

Move something

Team shape
Hours by role
  • PartnerFully loaded 260 / h24
  • Senior associateFully loaded 150 / h54
  • AssociateFully loaded 105 / h58
  • ParalegalFully loaded 60 / h24
Client fee

Illustrative model with demonstration rates. The working tool carries the firm’s own roles, rates and stage library.

What the assumptions are worth

The discount costs more than the delivery

Every line below is the same engagement with one assumption changed. Four of them are things a team can work on for weeks. The first one is agreed in five minutes, in a meeting, by someone who is not thinking about cost.

Base caseBalanced team · 160 h · 32.0k fee · 31.7% margin

  1. The client asks for 10% offThe fee drops. The cost of delivering it does not move by a single hour.−7.6 pp
  2. The drafting moves to the right seat40 hours off the senior associate and onto the associate who was meant to do it.+5.6 pp
  3. Scope grows after signatureFifteen extra hours that were discussed but never added to the fee.−4.9 pp
  4. A partner day replaces an associate dayEight hours in the most expensive seat in the firm, for work priced as junior time.−3.9 pp
  5. Two stages come off a templateTwelve hours saved because the firm has drafted this before and kept it.+3.9 pp

Percentage points of margin, calculated against the base case above using the same demonstration rates.

What it changed

The same quote, guessed and modelled

The work does not change, and neither does the client. What changes is whether the number you send has a cost behind it before it is sent.

The same quote, priced by feel and priced with the model
What changesBy feelA number defended after the factWith the modelA number with the mix behind it
Where the price comes fromBy feelA figure that feels about right, justified once the matter is overWith the modelA figure with the team, the hours and the cost standing behind it
Comparing two ways to deliverBy feelTwo versions of a spreadsheet and a memory of the first oneWith the modelSame fee, different mix — the margin gap is on the screen
A discount requestBy feelAgreed in the room, felt at the end of the matterWith the modelApplied live, against a floor that was set before the meeting
Who actually does the workBy feelAssumed to be the associate, delivered by the partnerWith the modelPriced as the mix you intend, so the assumption is visible
The margin floorBy feelA rule of thumb, applied unevenly and argued each timeWith the modelA line on the chart — above it or below it, with no discussion
After the quoteBy feelWhether it was worth doing is known once it is finishedWith the modelThe assumption is written down, so it can be checked against the outcome
If your quotes get defended after they are sent, let’s talk.