There are no magic unicorns for profitability, and you definitely will not find any here. But there are some habits you can build to help improve the change that projects will be successful and customers will be happy.
Profitability starts with a good relationship with your customers, and late-project arguments are often based misunderstandings around requirements. To anticipate this, think about the requirements early and often, together with the customer and potential users, even before they are fully on board.
Start the requirements from the user point of view. In early meetings, explore the problem space and the user pain points, and try and use language that reflects this understanding back to the customer. As well as setting the basis for requirements, it helps the customer feel that you care about the problems they are solving.
Ask about the topics they don't mention, as well as the ones they do. If the conversation is around speed and efficiency, you might build a sportscar - and only find out later that they wanted a pickup truck. Or a camel. If everyone in their industry uses camels, they may take it for granted: ask about industry standards, and to see examples of previous projects, successful or otherwise.
If possible, document the requirements using behaviour driven development style (external link), the aim is developers use the same criteria for automated tests that the customer uses for acceptance criteria.
Be clear if this is a time and materials or a fixed price contract. Make sure both the customer and the project manager know what they are working to.
More critical than any tracking tool or process is to keep a customer stakeholder up to date with all the information you have, and with all the changes and updates. Agile processes recommend a customer stakeholder should be in the room for at least sprint ceremonies, and if possible every scrum call. Make sure the customer stakeholder has full authority to approve design changes, and document decisions thoroughly. Tracking progress is important because it becomes the trigger for these conversations.
Make sure your team track their hours or tasks or both. Use the hour or task data to check how progress compares against the intended plan. Be suspicious if you seem to be ahead, as well as worried if you seem to be behind.
Communicate the tracking status with the customer often and fully, don't keep any surprises. If you need to take mitigating steps, be clear what they are and what the impact is.
Painful as it is, if a project fails to be profitable, there is still a chance to learn from it. Make sure you collect retrospective feedback: talk to the team and the customer about what went wrong. Use this review to make process changes. Set good habits and tips from the last learning exercise early in the next project, when the team will still remember why these processes are important.
Good luck, may all your projects be profitable, and when a project does go well, remember to make notes on the successful habits!