zerodumb@ethics-journal:~/posts$

Red Flags in Client Work: A Field Guide for Freelance Devs

· 6 min read
ethicsfreelanceclientsred-flags

“It started as a small project. It ended with me wondering if I needed a lawyer.”
— Every freelance dev, eventually


Freelancing feels like freedom… right up until it doesn’t.

Whether you’re automating workflows, building SaaS MVPs, or configuring scrapers for clients who swear it’s all “totally public data,” there are moments when your gut mumbles: “This feels… off.”

Here’s a field guide — based on real events — for spotting red flags before your terminal ends up subpoenaed.


☠️ The Red Flags

1. “Can you copy their database? It’s all public anyway.”

🚩 Scraping someone else’s platform and reusing their data is not always illegal… but it’s rarely ethical, and almost never clean.

Ask: Who owns this data? Is there a public API? What’s the ToS?

A client once asked me this. Nearly word-for-word. Even when I explained that I was happy to help him gather the details manually — the ethical and legal way — his exact response was:

But it’s just sitting there on a public directory. What do you mean, ethical and legal?

One thing I’m learning fast: when someone knows (or assumes) you can build tools they can’t Google, they start asking for things that cross the line.

Web scraping itself isn’t inherently shady — it’s used all the time by perfectly legit services. Think Scale SERP ↗ for Google data, or PhantomBuster ↗ for LinkedIn automation. Companies gather public data all the time.

But this request? It wasn’t about scraping — it was about intent. My gut went off for a few reasons:

  1. The target site had hundreds of subdomains — clearly a large, structured system.
  2. It included both free and paid content gateways.
  3. The platform was well-established. Time and money clearly went into building it.
  4. The client was an active, paying member of that site — meaning this was no outsider scrape.
  5. When I said no, he got weird. Dodgy. Almost belligerent.

2. “Don’t worry about the contract, I trust you.”

🚩 Translation: “There’s no paper trail when I ghost you later.”

Fix: Use basic scopes of work, even if it’s just a signed Google Doc. A contract is a dev’s fire extinguisher.

Contracts are so hard to enforce in the first place, BUT, they are impossible to enforce if you don’t even get one to begin with.

If a client refuses to agree to or sign an engagement with me, I do not begin. I have had too many instances of people, yes even “friends”, go full ghost mode on me once a project was complete. I have been promised a percent of the income from funnel build outs, a revenue share each quarter from full platform builds, bonuses for faster completion, and on and on and on.

Contracts may not be iron clad, but, they are better than whispers of sweet nothings.


3. “I need this fast, and cheap.”

🚩 This is the opposite of “reliable and secure.”

Reframe: If it’s rushed, say so in writing. If it’s underpaid, walk. You’re not an LLM on a free trial.

You can have only have two of three.

  1. Good
  2. Fast
  3. Cheap

You can only ever have two, it doesn’t matter who or what or how you bend this. If it’s good and fast, it won’t be cheap, if it’s fast and cheap, it won’t be good, if it’s cheap and good, it won’t be fast.

Not all clients are good for business, and most of them will take every thing you allow them to. It is up to you to lay clear up front boundaries and clearly defined deliverables, or some clients will take, take, take, and then charge-back the account on the way out.


4. “You’re not recording this Zoom, right?”

🚩 Sir, why are you sweating?

Tip: Always record your Zooms (ethically and with consent). Not for clients. For you.

“Yes, I’m recording this call.” No, you can’t have the recording. No, I won’t turn it off. If it can’t be recorded, I’m not sending you a pay link.

This isn’t recess. I’m not your parent, and I’m definitely not Jiminy Cricket. You already know the rules.

For me, if I can’t clearly point to:

  • what I built,
  • who asked for it,
  • when it was requested,
  • and whether they had the right to request it… then I don’t build it. I don’t even start.

The money just isn’t worth it.

I’d rather be broke and free, than rich and in jail or living paranoid.

Besides, just because Bon Jovi said “It’s my life” doesn’t mean some black suit won’t come impound your hard drive homie.


5. “I tried to call, but your number’s disconnected.”

🚩 Gaslighting to fish for a reply. Bonus points if they email the same minute.

Response: Stay professional, but don’t cave to pressure. You’re a developer, not a digital concierge.

When a client starts trying to set some false flag stage like you’re ghosting them, or otherwise dropping the ball on your end, it is time to bail. Period. They won’t stop, don’t try to figure it out. Just assume it is over and back out. Don’t accept any more money, don’t waste more time building, don’t deliver any further work.

Clarification, if you’re a flake, then don’t be dumb, and respond to the client. I am referring to a very specific type of client, and they are trouble, and they will cost you time and money and reputation.

Do not pass go, do not collect $200, find the off-ramp, and bow out.


💡 How to Handle the Sketchy Vibe

  • Trust the weird feeling. If you’re Googling “Is this legal,” you probably already know.
  • Refund when you must. Sometimes, peace of mind costs a partial invoice.
  • Write the email before the blog post. But hey, the blog post helps too.
  • Don’t bend your compass for a paycheck It almost never plays out well.

✅ Closing Thoughts

Ethical freelancing isn’t just about code quality — it’s about boundaries.
You don’t need to be perfect. You just need to not be the reason the next dev ends up cleaning up after you.

And if you’re not sure what to build? Start with this:
Don’t build what you wouldn’t want launched on your name.

Stay sharp. Stay grounded. Stay curious. Stay loud.


💬 Got a Client Horror Story?

I’m building a wall of red flags — anonymized, curated, and unhinged.

If you’ve been there, send yours to zero@zerodumb.dev.
I might feature it in a future post. Don’t worry, Bob won’t read it.


Related: