Specifically with regard to your cover letter, it talks extensively about you and how you are a good fit. Sorry, but this is a no-no. Nobody cares. We've all heard the advice to tell your story and provide evidence that you are up to the task. But as someone who has hired off ODesk/Elance (prior to Upwork), that's all secondary.
First and foremost, I have a problem. That's why I'm looking for someone to hire. My goal is not hire the most experienced person or the person with most certification. My goal is to solve my problem, within the problem and time constraints I have. Experience and past roles are evidence that you are lower risk, but they do not indicate that you understand the problem I have, how to solve it, or that you have any interest in it.
Kill two birds with one stone: 1) write a better cover letter that 2) doesn't lie. Address the problem, ask questions about it, and explain how you're going to help the hiring manager solve their problem.