pricing platform · multi-account · in production

Quote &
Rate
Engine

Built for a freight insurance brokerage and running on the client's own domain. It began as one calculator and became a platform: every account carries its own negotiated rates, deductible ladders and permitted categories, configured in an admin panel, never in code, and never visible to another account.

Next.js 14 JavaScript Supabase Resend Edge Middleware Vercel
view live demo ↓
how it works
01
Rates as a matrix, not a formula
A price resolves through rate group × transit method × coverage type × value band. Each cell holds its own rate and minimum premium, and any cell, or any single band inside it, can be marked price on request instead of being quoted automatically. Adding a new commercial arrangement is a configuration change, not a release.
02
Every account isolated
Clients sign in with their own access code and see only their own negotiated terms, falling back to standard rates where no override exists. The whole configuration is assembled server-side and scoped to the session, so one client’s deductible schedule can never reach another’s browser.
03
Deductible ladders and availability rules
Deductibles resolve automatically from cargo value and coverage type: standard, or a ladder specific to one rate group. Availability rules express what simply cannot be sold in a given combination, so an impossible quote is refused with an explanation rather than priced wrongly.
04
Configured in an admin panel
Four screens: accounts and their access codes, standard terms across five tabs, the quote log, and the change log. Rates, ladders, categories, thresholds and client-facing texts are all editable there. Nothing about pricing lives in the source code.
05
A quote log that holds up
Every calculation is recorded: money, shipment, route, contact. All of it filterable by date, account and free text, with CSV export. Quotes that need a human are flagged as such rather than inferred later. Deleting a row takes two deliberate clicks, and there is no bulk delete: one wrong filter would take real history with it.
06
And a change log behind it
Every edit made in the admin panel goes to a separate log: what changed, when, and for which account. It is written only once the change itself has succeeded. When a client asks why their rate moved, the answer is in the system rather than in someone’s memory.
0
rates written in code
4
admin screens
3
isolated access roles
1
shared pricing rule set
Tech Stack
Next.js 14 JavaScript Supabase Resend Edge Middleware Vercel
what changed
before
A quote took a person and a day
A customer filled in a form on the website. It reached a member of staff, who looked up what that customer had been quoted before, built a new quote from it by hand, and emailed it back. Every routine enquiry consumed someone’s attention, and the customer waited.
after
The routine ones answer themselves
The customer fills in the same form and has the price immediately, then goes straight on to buying the policy. Which combinations of parameters and goods are priced automatically is set per account. Everything outside them still arrives as a request and is reviewed individually. Standard business stops consuming anyone’s day; the judgement calls still get judgement.
now
Live, with customers moving onto it
The system is in production on the client’s own domain. Accounts are being migrated onto it in stages rather than all at once, which is what the per-account configuration is for: a customer can be switched over as soon as their terms are entered, without waiting for anyone else.
where else this fits

This one happens to be insurance, but none of the engine is. Strip the vocabulary away and the same situation keeps turning up: this customer has their own agreed terms, the price depends on a few things and on how big the order is, some of it we’d rather quote by hand, and in six months someone will ask why it cost what it cost. Plenty of businesses are still holding all of that in a spreadsheet and somebody’s memory.

01
Wholesale & distribution
Customer-specific price lists, volume breaks and promotional periods across a large catalogue: the same matrix, with customers in place of accounts and SKU groups in place of rate groups.
02
Freight & logistics
Lane-based rate cards with contract pricing per shipper, surcharges by service level, and quotes that need to be reproducible months later when they are questioned.
03
Equipment rental & leasing
Rates by asset class, duration band and customer agreement, with deposits resolving the way deductibles do here.
04
Fabrication, trades & service contracts
Estimates built from materials, labour and margin rules, where each client has their own agreed terms and the quote has to be sent, logged and defended.
try it
Interactive Demo

The production system holds a client’s negotiated rates, so it is not something to open to the public. This demo is the same engine configured as a wholesale drinks distributor instead, on entirely invented data, which also happens to be the point: nothing in the engine is about insurance. Sign in as different accounts to watch the terms change, then switch to the admin view to see where they are set.

open the interactive demo ↗

quoting from a
rate card
in a spreadsheet?

get in touch ↗ back to portfolio