How to succeed on Upwork

My Upwork agency is extremely successful. In fact, it’s as successful as any Upwork agency could possibly be. Our job success score is 100%, which means every single client has been totally, 100% satisfied with our work. Over the past year, I’ve made as much using Upwork as I did the previous year working at a top market research firm in Washington, D.C.

I mentioned my success on Upwork to a fellow freelancer the other day. He was surprised I found any clients at all. He said he’s been on the platform for a year, applying here and there, but never found a single client.

That’s when I realized just how much I’ve learned about Upwork over the past year, and how much knowledge I have to impart to others. So here’s some tips on how to use Upwork successfully, whether full-time or on the side.

  1. Undersell yourself (at first). An inherent feature of online freelancing is that your client really doesn’t know you. He sees your picture and profile and maybe some nice testimonials from other people he or she doesn’t know, but at the end of the day, you’re a total stranger. That said, you absolutely must discount your hourly rate to account for the risk your client is assuming. At the beginning, you won’t have any testimonials, which increases your potential clients’ risk. Start by working for half of what you’d normally work for, then slowly raise your rate as you gain more testimonials, hours worked, and a higher Upwork score.
  2. Always ask clients if they have more work for you. It can’t hurt to ask, and I’ve found the answer is usually yes. But be sure to keep this work on Upwork—it’s against their rules to work around their platform, and I promise you that Upwork’s fees are worth paying for the exposure they give you for doing good work. I get unsolicited invitations to interview for Upwork jobs almost every day.
  3. Respond to all invitations to interview as soon as possible. Upwork considers this when scoring your profile. I’m frankly not sure why it matters, but Upwork has its reasons. That said, leaving a request to interview hanging hurts you in many ways. If you’re going on vacation and don’t want to deal with unsolicited interviews, change your profile’s availability setting accordingly—then you won’t get invitations during your vacation.
  4. Explain your thinking to your clients. They should know your progress at all times, and should have a good sense of what’s going through your mind as you work on their stuff. And before you’re even hired, be open about your thoughts on how this job might be challenging, how you’re super busy, and how you are going to make time for this project if you do accept the offer. Again, this all has to do with the risk your client is taking on by hiring you. The more they can see into your mind, the more comfortable they will be hiring you.
  5. Partner with others. Don’t pass on a job opportunity on Upwork just because you can’t do all the work needed. If you need to use a friend or colleague’s help for parts of a job, say so. Be honest and upfront with your client about this. Of course, don’t skirt the rules* and misrepresent yourself, or pass off work entirely while pretending like you did it all yourself (not only is this against the rules, but it will come back to haunt you when the client has questions and you know little about how the work was done). But it’s fine to have a friend take a look at some code or trouble-shoot an error or give a second opinion and make tweaks to your design. Or better yet, engage another Upwork freelancer for help with particularly tough issues. Clients will appreciate the fact that you are taking their work seriously enough to engage another professional. Just be sure to handle any revenue-sharing on your end—don’t burden the client with paying little fees to others who help you here and there.

These might seem like simple rules, but simple rules are, after all, the hardest ones to follow.

One final rule is to use a good profile picture! This is something you should do on all your social profiles. I’ve hired on Upwork several times, and the picture is the first thing I see at when evaluating a proposal—both by nature and by Upwork’s design. So smile genuinely, clean background, camera at eye-level, and be sure your face fills most of, but not the entire, photo.

*Here’s Upwork’s rules. That’s a lot of text, but control+F to search for specific keywords and issues that interest you.

Defining “entrepreneur”

Entrepreneurship is the pursuit of opportunity without regard to resources currently controlled.

I love that definition. “Entrepreneur” is an overused term, but there really is nothing else that encapsulates the idea. And I’ve found no definition like the one above that so succinctly explains what it means to be an entrepreneur.

Since starting my own business almost one year ago, I find myself thinking differently. I think ahead—far ahead—and rarely think about the past. I think about my success in terms of not how many clients I have, or how much money I’m making, but what portion of the possible I’m turning into something real. And what is and isn’t possible means something very different than it did, for me, just a few years ago.

That’s what entrepreneurship is about, and that’s what this definition explains so well. What is possible and impossible is not an objective, set-in-stone list of things. Possible is an relative term. Entrepreneurs simply understand this more than do most other people.

I like to use the following illustration: Go back to an ancient Roman city. Survey the town members on the question: “Is it possible to talk with someone on the other side of the world?” I’ll bet the answer is a resounding no. But today, of course, we do this daily with our phones. It is possible, and it was never actually impossible. It was just beyond the limits of ancient people’s imagination. And probably those who did imagine such an ability, or such a technology, were considered insane.

Thank God for entrepreneurs, like Alexander Graham Bell (inventor of the telephone), who saw nothing impossible about their ambitions to change the world—who pursued an opportunity without regard to resources currently controlled or available.

For those who care, that definition was coined by Harvard Business School’s Howard Stevenson.

True failure counts

“Develop success from failures. Discouragement and failure are two of the surest stepping stones to success.”

I love that phrase. I really believe it, and it gets me through tough times.

But please, please remember this: When you’re failing—actually, 100%, totally failing—it doesn’t feel good. You don’t believe that you’ll learn from it. You don’t believe you’ll ever get out of it. You may even believe that no one has ever failed as badly as you are failing.

That’s how true failure feels. But that’s also the only type of failure that teaches you to be better.

So when you feel like your world is literally ending, or that nobody has ever failed as badly as you’re failing, that’s when it matters. That’s true failure—the feeling you must (and will) learn to overcome. That’s when you learn. And that’s when you absolutely must make the decision to keep going.

You’ll get over it, I promise. In a few months, you’ll wonder how you ever believed this was going to end your world. You’ll be fine, and you’ll be a more powerful person than you were before. And in so many ways, this present feeling of failure is the surest sign you’re doing something

So press on!

“Don, walking through walls, it isn’t hard for me now; it is impossible.”

“Do you think that maybe if you say impossible over and over again a thousand times that suddenly hard things will come easy for you?”

-Richard Bach, Illusions: The Adventures of a Reluctant Messiah

A tip on debating healthcare

The debate over repealing Obamacare is not so simple as free markets vs. human lives.

The market principles here are simply fact. Health care is a scarce good – this is why we have a problem in the first place. People can’t get as much as they want. We need a balanced economic solution, not mere demands that “healthcare is a right or people will die.” That gets us nowhere. It does nothing to solve the problem of scarcity, cost and sustainable rationing.

The health care debate ought to be about tradeoffs and maximizing utility beneath an equitable regulatory framework. Not a discussion of moral absolutes (i.e., “By repealing the ACA, you just voted to kill people!”). That’s unhelpful and immature and, frankly, exhibits a gross misunderstanding of how almost anything in life works.

Health care is a scarce good. The laws of economics should confine our thinking about moral absolutes with regard to who “deserves” health care. It’s simply unhelpful to demand healthcare for all without first deciding exactly how that is going to be possible.

How to auto-generate unique Typeform links

I faced a challenge with Google Sheets last week. Took me two hours to resolve and ended up being the simplest solution I could imagine. Thought I’d share here to save other people some time.

The problem

I’m trying to append values to a URL. This is for a client who wants to automatically generate unique links to use in marketing emails to his customers. On the other side of these links is a Typeform survey, and he’d like to be able to match survey responses to names and email addresses while keeping the whole operation in MailChimp (versus, for example, using SurveyGizmo’s built-in mailer). This is possible with Typeform by using Hidden Values.

The solution

To accomplish this, I’m using Zapier to push all new MailChimp subscribers to a Google Sheet (Sheet 1). That’s STEP ONE.

STEP TWO is to push the first four columns (A through D) on Sheet 1 to another Sheet (Sheet 2). I did this by placing the following formula in cell A1:


Easy enough.

STEP THREE is to write a formula in the first blank column on Sheet 2 (column E) that appends values from Sheet 2’s four columns (A through D) onto the end of the Typeform survey URL.

Now, I didn’t want to have to manually drag whatever formula I wrote for one row down to all other rows in that column. In fact, I wanted the appending to be both automatic and to only run if there was data in column A. If column A was empty, then that entire row was empty (just a feature of my particular dataset) and I didn’t want any output into column D. I have particular reasons as to why, but this is a good general rule for keeping spreadsheets clean—especially if you are pushing that data to another application.

To accomplish what I just described, I used the arrayformula function. This function, also explained well here, expands whatever formula follows to all cells in the same column below where you enter the arrayformula operator. For example:


…placed in cell D2 will put B2+C2 in D2, B3+C3 in D3, and so on. This essentially automates the process of clicking-and-dragging cell D2 down to the bottom of your sheets, which just isn’t a smart way to set up such a process on a dynamic sheet.

That’s arrayformula, and it’s easy enough. But I ran into issues when trying to combine arrayformula with with concatenate. And I (thought I) needed to use concatenate to append values to the end of my Typeform URL.

I tried this at first, which did not work:


The catch

The problem here was that mixing concatenate with arrayformula placed all cells in column A2:A into E2 (the cell where I entered this formula). The text in the cell looked  like this:

The same exact text populated in cell E3. I think you can see the problem: It was taking all values in column A, from every filled row, and putting them all into my URL and repeating that same exact URL onto every row in column E.

That’s not what I wanted. I wanted one URL per row that contained information only for the email subscriber in that row. I wanted this:

Anything else would not help me connect survey responses to the relevant email subscriber.

Ultimately, I discovered that concatenate just doesn’t work with arrayformula like I’d expect it to work. Some bug, maybe. Anyways, I Googled for two hours and discovered by accident that the ampersand (&) operator works like a charm! I’d always thought ampersand was just a longwinded way to do what concatenate does, but in Google Sheets, at least, ampersand is slightly more flexible than concatenate.

The formula that finally worked:


With the unique links being created automatically, I now use Zapier to push data from Sheet 2 back to MailChimp, where it automatically updates all records with the new appended URL.