Browse articles

Formula based pricing and construction cost

Price a stage the way a lot of architecture fees actually work: as a percentage of the estimated construction cost, so the fee moves whenever that estimate does.

What you'll achieve

Make a stage's fee calculate itself from a driver, so it updates whenever the driver changes.

You'll end up with: A revenue item that derives from a stored driver and recalculates the instant that driver changes.

Before you start

A fixed fee works when a number is genuinely fixed. Most of Concept Design's fee is not: at the early stages of a commission, quoting a percentage of the estimated construction cost is the standard way architects price the work, precisely because that estimate is still moving. A quantity surveyor revises the number after a cost check, the client's budget shifts, or the scope grows during Design Development, and every time it does, a fee quoted as a flat dollar figure needs someone to remember to go back and re-quote it. Miss that step once and you're invoicing off a number the project outgrew months ago.

Formula-based pricing removes the "someone has to remember" part. Once the fee is written as a percentage of a stored construction cost, updating the estimate updates the fee. Nobody re-quotes anything.

We'll price the Concept Design stage of Riverside Apartments as ten percent of construction cost, the same arrangement you'd set up for a real commission priced this way.

Store the number the fee depends on, separately from the fee itself

A formula needs something concrete to point at, so pricing this way is really two items working together rather than one:

  1. A driver: the construction cost, entered as its own revenue item purely so the rest of the model has something to reference. It's hidden, because a driver isn't money the practice earns, it's an input, the same way a cost estimate itself is never a line on an invoice.
  2. A formula item: the actual fee, written as an expression that reads the driver, {revenue.construction_cost} * 0.1.

Before either of those goes in, hide the hourly revenue the stage started with. Otherwise you'd end up with three things counting toward the total instead of one.

Once the driver and the formula are linked, the fee stops being a number anyone has to remember to update. It's a calculation that happens to look like a number, and it moves the instant its input does, which is exactly what you want when the input is an estimate that's still being refined.

Build it

  1. 1

    Open the Concept Design stage and its Revenue breakdown.

  2. 2

    Hide the default hourly revenue so it stops counting toward the total.

  3. 3

    Add a Fixed Amount item, name it Construction Cost, and set it to two million dollars.

    Step 3
  4. 4

    Hide it too. It informs the fee, but it isn't itself revenue you bill.

  5. 5

    Add a Formula item and enter {revenue.construction_cost} * 0.1.

    Step 5

The point of doing it this way

This is the moment that plays out on every real project: the quantity surveyor comes back with a revised estimate, or the client adds scope and the budget grows. Push the Construction Cost up to three million and the formula fee jumps to three hundred thousand on its own. Drop it to one million and the fee falls to one hundred thousand, still without touching the formula. Nobody has to remember to go back and re-quote the client, because the fee was never really a number, it was always a relationship, and updating one input keeps every stage priced off it honest at once.

Troubleshooting

  • The formula shows an error or a stubborn zero. The reference has to match the driver's slug exactly, and renaming the driver changes its slug. Check the references list in the formula editor if a formula stops resolving.
  • The fee looks too high. If the hourly revenue or the driver item is still visible, it's adding into the total right alongside the formula. Both need to be hidden so only the formula counts.
  • A formula that pays out ten times too much. Percentages are decimals in a formula: ten percent is * 0.1, not * 10.
  • The estimate gets revised and the fee doesn't move. That almost always means the fee was typed as a flat number somewhere instead of pointing at the driver. Update the Construction Cost item itself, never the invoice line, and every fee that references it catches up.

Where this fits next

What you've built here is a small pricing model, not just one fee, and it's worth not rebuilding from scratch on the next project. Pricing templates covers capturing it.