One primary driver of the unknowability of software estimation, is that the customer doesn't actually know, and perhaps CANNOT actually know, what they really want or need until they see something that isn't it. No amount of asking beforehand will bring out this information, and complaining afterwards that they didn't say that doesn't accomplish anything except souring the relationship.
Bill by the hour, and absolutely refuse to bill by the project. It's the only way.
That's when you swap the hinges so the door opens the other way, and you thank the manufacturer for providing such an easy solution to a common problem. It's good to keep things flexible and user-configurable.
Now quick, someone reply with a counterexample of how user configuration complicates the product and increases cost. It's design tradeoffs all the way down...
Why don't Claude Code & other AI agents offer an option to make a sound or trigger a system notification whenever they prompt for approval? I've looked into setting this up, and it seems like I'd have to wire up a script that scrapes terminal output for an approval request. Codex has had a feature request open for a while: https://github.com/openai/codex/issues/3052