Skip to content
Lab / Building OkayFlow / 01
FreelancingClient workBuild in public

"Looks good" is the most expensive sentence in freelancing

"Looks good" feels like a green light, but it isn't an approval. Here's why fuzzy sign-off costs freelancers late payments and unpaid revisions — and what a real approval needs.

Jul 18, 2026Daniel4 min readOkayFlow

There's a two-word message every freelancer has celebrated at least once: "Looks good."

It arrives in Slack, or as a reply three levels deep in an email thread, or as a thumbs-up on a Figma frame. You read it as done. You move on, maybe start invoicing, maybe pull the next task forward. And most of the time, nothing goes wrong.

The problem is the times it does. Because "looks good" is not an approval. It's a feeling the client had, on a phone, at a moment you can't reconstruct later — and when a project goes sideways, that difference turns out to be expensive.

What "looks good" is actually missing

Line up "looks good" against what a real approval needs, and the gaps are obvious once you look.

It isn't pinned to a version. The client said "looks good" — to what, exactly? The homepage they saw Tuesday, or the one you shipped Thursday after the last round of edits? Two weeks later, nobody remembers. If the footer changed in between, "looks good" now covers a version that no longer exists, and you're the one who has to prove which one they meant.

It isn't dated to anything that survives. A Slack "yes" is real until it's buried under 400 messages and a workspace retention policy.

An approval you can't find is an approval you don't have.

And it doesn't close anything. "Looks good" doesn't say this is finished and I won't ask for more. So round four arrives — "just one tiny thing" — and because nothing was ever marked complete, you have no clean place to say the project is done and the revisions are extra.

None of this is the client being difficult. It's that the medium — chat, email, a comment thread — was never built to hold a decision. It's built to hold a conversation, and a conversation is exactly the thing you're trying to end.

The two numbers that make this concrete

We're wary of the stat-soup you see in freelancing blog posts, so we'll only use the two figures we'd actually defend.

The first: an analysis of three years of freelance invoicing data from Bonsai (hellobonsai.com) found that roughly 29% of freelance invoices are paid at least a day late. Late payment has many causes, but a disputed or unclear approval is a reliable one — it's hard to send an invoice with confidence when "approved" lives in a feeling.

The second: PMI's Pulse of the Profession puts scope creep at around 52% of projects. Plenty of freelancer-specific surveys quote much scarier dollar figures on top of that; we'd treat those as directional at best. But you don't need the scary numbers. You've lived the unpaid fifth round. You know the cost is real even when the statistic is shaky.

Both problems — late pay and unpaid revisions — trace back to the same root. Approval was never made explicit, so it can't do any of the work you needed it to do.

What a real approval looks like

A sign-off you can rely on has three properties, and they're not complicated.

  1. Explicit — a deliberate action ("I approve this"), not a message you have to interpret.
  2. Dated — a timestamp that outlives the chat scrollback, ideally to the second.
  3. Version-pinned — attached to the exact thing the client saw, so it can't quietly drift onto a later version.

That's the whole list. Get those three and the downstream conversations change. Invoicing stops being a negotiation, because "you approved v3 on the 14th" is a fact, not an argument. Scope conversations get a natural boundary, because there's a clear line between "the approved work" and "the new request." You stop reconstructing decisions from memory, because the decision is written down in a form that survives the project.

The part that's on us, not the client

Here's the uncomfortable half. Clients aren't going to start signing formal approvals out of nowhere — not if it means a new account, a new tool, a new thing to learn. The moment sign-off feels like homework, they'll retreat to "looks good," and you'll be back where you started.

So the real design problem isn't get proof. It's get proof without making the client's life harder than replying to an email. If capturing approval costs the client more than a thumbs-up did, it won't happen, no matter how much you'd benefit from it. That constraint is doing most of the work in how you should think about this.

The reason we ended up building a tool for it — OkayFlow — is that "do it consistently" is the part that quietly fails. You mean to send the approval email, the project's moving fast, the client says "looks good," and you let it slide because chasing a formal yes feels like being the difficult freelancer. OkayFlow makes the explicit, dated, version-pinned version the easy path — one link, two buttons for the client, a timestamped receipt for you — so the good habit doesn't depend on you being disciplined at the end of a long project. But the email trick above will get you most of the way regardless.

Either way, the takeaway is the same: stop treating "looks good" as the finish line. It's a nice thing to hear, but it can't hold weight. The next time a client sends it, send back the one-line approval that can — and keep the reply.