Per-service measurement and unit-price switches

Each service line has two separate switches, one for how much there is and one for what each costs, labelled with the words from the builder's own catalog.

What it is

Three levels of control per service: show the line at all, show its measurement (336 sq ft), show its unit price ($13/sq ft). The two attribute switches render as chips on the parent row rather than another level of checkboxes, and their labels are derived from the service's unit in the catalog, so a square-foot service says Square footage and $ per sq ft.

Also called: hide the square footage · hide my per foot rate · bundle the price · granular line items

See it
Per-service measurement and unit-price switches
Day rate
$500
Days figured
9
Crew size
5
Fuel & equipment
$300
Finished 2 days early — $1,600 back to the crew
A service row in the builder's controls with two chips reading '336 sq ft' and '$13/sq ft'. stageSections in src/lib/portalFunnel.ts. Sample data — no customer information appears here.
How it works
  1. 1Keys are svc_<id>, svc_<id>_meas and svc_<id>_rate in the shared sections map
  2. 2Hiding a line hides the line item only; its price stays inside the customer total
  3. 3serviceChipLabels maps the catalog unit (sqft, linear_ft, each, flat, custom) to the wording
  4. 4An unknown or missing unit falls back to honest but vaguer words
Why we built it

Some builders bundle work into a rate and cannot break it out without inviting a line-by-line negotiation they already priced away — a garage door quoted inside a package should not display a unit count for the customer to pick apart. Each service line has separate switches for its measurement and its unit price, so the builder shows as much or as little as the job warrants. The unit wording comes from the service's own setup rather than being chosen per estimate, because Versetta Stone sells by the square foot and a builder picking labels by hand will eventually tag it per-item and send that to a client.

The problem
  • Only being able to show or hide a whole line
  • Builders having to guess which abstraction a settings label stands for
Sound familiar?
What you get
A package can be quoted as a name and a number
The switch is labelled with what the customer would actually read

See it on your own jobs

Twenty minutes, your numbers, no slide deck. We’ll build one of your real buildings in front of you and send you the estimate link at the end — yours to keep either way.

or keep browsing features →