I'm new to UpWork and I feel like the client chose me because I would be naive to do free work for him. The initial job milestone was simple and got that out right away. But the second milestone was vague and it kept changing and I would get daily spams on chat asking on status on complex new custom coding that he wanted. He already funded over 125% of the second milestone. So if he is so unhappy why does he keep funding the project? My only guess is to use as a bait to do free work that is completely out of scope. The requests he is asking for are very complex for any software engineer if I went into details of the requests. His expectations are that this should be done immediately. If I don't provide him an update within 24 hours, he threatens to report me. I'm not scared of his threats, but this kind of behavior makes me not even want to complete the work. I contacted UpWork support and they said they cannot do anything about it. Only that I need to work it out with him. He also hinted that I send private contact information to him. How do I resolve this issue without thinking that all clients are there looking to exploit workers?
Freelancing is all about managing contracts, client expectations and clients in general.
When a client asks you to do something, you take control and tell the client you'll be more than happy to do X, it will take you Y days and the cost is $ whatever Dollars.
Politely decline any free work, not by arguing or becoming combative, but telling the client "Sure, we can do that. It'll take me around a week and I'll be charging $ 300 (or whatever) for it. I'll check in with you halfway. If you want to release the current milestone, and set up the new one I'll get onto it tomorrow morning."
Nobody can exploit you without your consent.