The Number, and Why It Matters More Than Reviews
Reviews measure how a client felt at the end of a project. Repeat contracts measure something harder: whether they trusted you enough to spend money on you again. Over ten years on Upwork I have completed 133 contracts, and 71% of them came from repeat clients. Eighteen clients hired me two or more times. One platform company came back 21 separate times; another client, 20. My longest client relationship ran from 2019 to 2025, 21 contracts on one platform.
None of that happened because of talent alone. It happened because of a small set of delivery habits applied on every contract, boring ones, repeated without exception. Here they are.
1. Scope in Writing Before Money Moves
Every engagement starts with a short written scope: what will exist when we are done, what is explicitly out, and what I need from the client to start. Not a legal document: a one-page shared understanding. Half of all freelance disputes are two people who remember the same call differently. A written scope makes the memory shared.
2. Decide, Then Document the Decision
Ambiguity shows up mid-project on every real contract, usually when the client is asleep in another timezone. The habit that keeps projects moving: make the smallest reversible decision that unblocks the work, write down what was decided and why, and flag it in the next update. Clients do not expect you to read their minds. They expect to never be surprised.
3. Updates Before They Are Asked For
A client who has to ask "how is it going?" is already slightly worried. I send progress notes at natural checkpoints (something works, something is blocked, something changed) not on a timer. The note is three lines: what moved, what is next, what I need. Ten years of clients have told me this is the single habit they remember.
4. Leave Every Codebase Continuable
Platform companies hired me 21 times because the engineer after me could pick up where I left off: migrations that run, READMEs that match reality, no clever code that only its author can maintain. The test I apply before closing any contract: could a competent stranger continue this tomorrow without messaging me? If not, the contract is not done.
5. Say No to Work You Cannot Do Well
The fastest way to lose a repeat client is to accept a project outside your competence and deliver something mediocre. I turn down work regularly: wrong stack, wrong timeline, wrong budget for the quality bar. Clients remember the honest no. Several of my longest relationships started with one.
What This Looks Like From the Client Side
A client who came back six times for the same media pipeline never wonders whether it is maintained. A platform company with 21 contracts never re-explains their standards. That is what they are buying the second time: not code, but the absence of management overhead. The 71% is just that absence, measured.