I usually agree a project fee based on how long I expect the work to take. If it takes less time than anticipated, you’ll pay less. If it looks like things might overrun (which occasionally happens for all sorts of reasons), we’ll have a chat and agree a way forward.