The budget is a figure, not an intention
A project has a fixed budget, an hourly budget or none, and budget-versus- actual is computed on real numbers in the database. What was spent, what was logged and what was invoiced are the same data, not three estimates from three different places.
For work contracted by line item there is a bill of quantities, with its quantities and prices.
Tasks with dependencies, without ceremony
The task model is flat, with declared dependencies — a task can be blocked by others. Deliberately not a five-level hierarchy: in the companies this product is built for, deep hierarchies are an administrative form nobody maintains after the first month.
There is a list and a board, for the two ways of looking at the same work.
Logged time reaches the invoice
Hours attach to the project and the task, and for hourly budgets they become the basis of the invoice. The path from "I worked three hours" to "I was paid for three hours" does not pass through retyping.
Worth knowing
Most project tools answer "where are we?". Few answer "was it worth it?". The difference is whether the project lives in the same system as the invoices and the ledger — or in a separate one that cannot see the money.