Back to blog
Opinion

Scope: the most important skill for freelance devs

By Flávio Emanuel · · 8 min read

Scope is the skill that separates freelancers making R$100/hour from those making R$300/hour. It’s not about code. It’s about communication.

I learned this lesson the hard way. Did a project I thought would take 40 hours. It took 120. No clear culprit. Just scope that started small and swelled every week.

After that, I invested in being good at defining scope. Changed my life as a freelancer.

Why scope matters

Without clear scope, two things happen.

You do more work than the price covers. Client is happy (they paid cheap), you’re miserable (you worked too much). Next client knows you’re cheap, you do more bad projects for less.

Or you refuse, client gets mad because “it’s just a small adjustment”, bad references, your name gets hurt. Losing a client is worse than doing it cheap.

Clear scope protects both sides. Client knows what they’re paying for. You know what you’re delivering. No surprises.

Scope conversation: the questions you need to ask

Before writing a spec, understand what the client wants. Most clients don’t know exactly.

Your first conversation isn’t “how much do you want to spend”. It’s understanding the business.

For a dental clinic client, I ask:

“How many patients do you get per month?” “What’s the most common appointment pattern?” “Do you use WhatsApp for reminders or want it in the system?” “Does the dentist need to access from phone or just desktop?” “Do you have a website now? Does the new site integrate with the current one?”

These questions make you understand scope. A scheduling system for 100 patients/month is different from 2000.

Want WhatsApp integration? API integration with Twilio is different scope from a system that just sends manual links.

The Spec Document: your written agreement

After the conversation, you write the spec. Spec is like a contract, but in clear language.

Format that works:

Section 1: What will be delivered

  • Appointment booking page
  • Dentist dashboard with calendar
  • SMS reminder 24h before
  • Google Calendar integration for patient

Section 2: What will NOT be done

  • Integration with billing software (too complex)
  • Mobile app (will be responsive web)
  • Advanced billing reports
  • Integration with all existing systems automatically

Section 3: Technology used

  • React frontend
  • Supabase for database
  • Twilio for SMS
  • Vercel hosting

Section 4: Timeline

  • Week 1: Database setup, authentication
  • Week 2: Basic booking page
  • Week 3: Dentist dashboard
  • Week 4: SMS, testing, deploy

Section 5: Price and terms

  • R$18,000 total
  • R$6,000 upfront (setup)
  • R$6,000 at beta review
  • R$6,000 at final delivery
  • Hosting and domain paid separately by client

Section 6: Out-of-scope changes

  • Any change beyond what’s described is scope creep
  • Small changes (colors, text): included in review
  • Medium changes (new notification type, new report): additional R$2k
  • Large changes: new conversation about price

This is the spec you send to the client. They sign it. Done. You both know what’s happening.

Scope creep: the silent enemy

Scope creep is when the project slowly grows. Client asks for “a small adjustment” every week. Three months later, you’ve built an entire unexpected project.

Examples I see:

“Hey, can we change the button color from blue to green?” “Doesn’t your system sync with WhatsApp automatically?” “Can three dentists access it at the same time?”

Alone, none is big. Together, they add 20 hours.

The defense: reference back to the spec.

Client: “Can you add a report of missed appointments?” You: “That wasn’t in the original scope. According to the spec, medium changes are R$2k. Do you want to add this?”

You’re not being difficult. You’re being professional. Client gets it. Can say no. Can say yes and pay. But it’s not a surprise.

What to include / What to exclude

Scope decisions:

Include:

  • Core product functionality
  • Integration with 1 or 2 services (Twilio, Stripe)
  • Responsive design (mobile + desktop)
  • Basic tests
  • Initial deploy
  • Basic documentation

Exclude:

  • Permanent 24/7 support (offer as add-on)
  • Integration with 5+ services
  • Mobile app (responsive web covers it)
  • Super custom, complex reports
  • Extensive training (sell as extra hours)
  • Absurd performance optimization (Lighthouse green is enough)

The trick is knowing when you become a consultant instead of a dev. Consultant costs more.

“I want the system to decide which dentist sees which patient based on specialty, availability, and patient preference” = Consulting. You design the logic. Then develop. R$25k, not R$15k.

Continuous communication

Scope isn’t a static document. Projects change. Context changes. Clients learn new things.

Every week start, I send the client a status. “This week we’ll do: X, Y, Z. Delivery timeline stays on track.”

When I discover something impacting scope, I communicate immediately. “Google Calendar integration is more complex than we thought. Needs OAuth setup. Will add 1 week. Want to do it or remove from scope?”

Client sees this as professionalism. Because it is.

Freelancer vs Agency

If you’re starting out, the fear of saying no is real. You think “if I say no to scope, client gets mad”. Sometimes true. But that client who gets mad at professionalism is a bad client.

Solo freelancer wants clients who pay fair and respect time. These scope conversations naturally filter out bad clients.

Agency can afford more flexibility. Has a team. Can absorb scope creep (or charge more). You, solo, can’t.

Checklist for next project

  • Have deep conversation before quoting
  • Write clear spec with what will/won’t be done
  • Set price in tranches (don’t get paid all at end)
  • Make clear what counts as scope creep
  • Do weekly progress updates
  • Communicate scope changes same day
  • Be patient if client doesn’t understand at first
  • Be willing to reject project if scope gets bad

The difference between stressed freelancer and happy freelancer is scope. Period.

Estimation: how not to guess

Estimating is hard. But techniques that work exist:

Planning Poker: if you have a team, use it. Each dev estimates in points. If estimates diverge, discuss why. The final estimate comes out better.

Personal history: keep data from your last 10 projects. How much you estimated vs how long it took. Clinic site: estimated 40h, took 55h. Next time start with 55h, not 40h.

Always add buffer: never propose the bare estimate. If you calculated 40 hours, propose 50. If 10, propose 13. Bugs appear, client changes mind, integration is more complex.

Decompose: don’t estimate “entire site”. Estimate section by section. Homepage: 8h. Services page: 6h. Booking: 20h. Dashboard: 15h. Total: 49h. With buffer: 60h. Way more reliable than guessing.

Testing: testing doubles implementation time. If you don’t include it in estimation, you’ll be short. Quick code is cheap. Tested, reliable code is expensive (and worth it).

When scope changes (and it will)

Scope will change. Not pessimism, just reality. Client learns things, market shifts, you discover something’s more complex.

Here’s your defense: clear reference to the original spec.

Client wants new feature in week 3? You pull the spec: “This wasn’t here. Scope creep. Per contract, medium changes are R$2k. Want it?”

Not being difficult. Being professional. Client gets it. Some say yes, some say no. Important thing: no surprises.

My tip: keep a simple spreadsheet. “Original scope”, “approved changes”, “pending changes”. Show client every Friday. Full transparency.

Wrong estimation is worse than honesty

Better to estimate 80 hours honest and deliver in 70, than estimate 40 and take 90. One client is happy because you beat the estimate. Other is furious because they got lied to.

Always err on the side of honesty.

What to include vs exclude

ItemInclude?Reason
Core functionalityYesThat’s why they hire you
Integration with 1-2 servicesYesAdds little time
Responsive designYesMinimum expectation
Basic testsYesSaves time later
Initial deployYesPart of the project
Permanent 24/7 supportNoBecomes a full-time job
Integration with 5+ servicesNoBecomes consulting, charge separate
Native mobile appNoResponsive web covers 95%
Super custom reportsNoClient will ask for more
Extensive trainingNoBecomes consulting
Performance obsessionNoLighthouse green is enough

Read also: What to charge for small tweaks | How to brief a web project | Client onboarding process

Next step

Need a dev who truly delivers?

Whether it's a one-time project, team reinforcement, or a long-term partnership. Let's talk.

Chat on WhatsApp

I reply within 2 hours during business hours.