I started to work with a client on a contract to correct the profanity filter for images and videos on their app. Initially, I took multiple tries (4-5 maybe) but I was able to resolve all the errors and shortcomings, I even logged into their server to correct the dependency issues once, for which neither did I agree in the contract and nor getting paid. But I did it anyways since I'm just in the initial phase of my upwork journey and want to make long term connections.
We all know that it is almost impossible to get 100% accuracy. He said that he wants 18 out of 20 correct and I think I've fulfilled that because when I tested on about 40 random videos and images, I just got two incorrect classifications. But he jumps on top of me even if he finds out there is a photo which didn't get correctly classified. I've tried to make him understand that its just one out of many he might've checked, for that very moment it seems like he understands and says "I need more time to verify", and the same story again.
And now the scenario is, he says he doesn't even get 10 out of 20 correct. But when I asked for the files that are getting misclassified, he sent some (not all) files but all are getting classified correctly on my system as well as google colab with the same code. I think either there might be some other issues with his environment or he doesn't want to pay.
Is there anything I can do? I don't want to get into heated conversation as it will not result in anything other than he ruining my rating, plus there is no reason to fight unnecessarily. With each day, I'm really starting to feel restless and he comes up again with a photo or video that got misclassified. And as a result I'm really getting distracted and unable to focus on other proposals/contracts.
Please suggest what can be done.
Clients don't always know what can't be done. So, if you take a gig to do X, they assume that you can and will accomplish X. In your case, even though you tried your best, you aren't able to accomplish X. Now, it may be that this is because accomplishing X is impossible. But, if that is true, then you should have probably not taken the gig. 😞
Your recourse now is to end the contract. You can explain the value you've delivered by saying something like, "I wasn't able to accomplish X, but I did fix A, B and C" or just issue a refund. The impact on your JSS will depend on how unhappy the client is (which will depend on how well you explain the outcomes and why you are ending the contract.)
You are right, though. Fighting with the client will never end well.