Wendeson Gomes
← Back to blogCareer

How I scope a React freelance proposal

Sep 30, 20265 min readby Wendeson Gomes

This site's budget section isn't just decoration — it's literally the form I use to understand a project before the first call. Four questions — project type, whether a design already exists, anything extra needed, and timeline — already get me 80% of what I need to put a number on it.

I prefer fixed price over hourly, whenever I can. Hourly billing puts all the risk of scope overrun on the client, and that creates a tension that helps no one. A fixed price forces me to scope things properly before starting — which, in the end, protects me too.

The written scope explicitly separates what's in from what's out. "User login" doesn't include SMS password recovery unless it's written down. That avoids the awkward conversation mid-project, not because the client is wrong, but because nobody remembers what was agreed three weeks ago.

50% to start, the rest on delivery (or split across milestones on bigger projects) is the model I've used for two years. It works well for 2-to-8-week projects — for bigger ones, I'd rather break it into smaller deliveries with payment per milestone, because nobody likes going 3 months without seeing anything finished.

Next up
Lenis + Motion: building my site's smooth scroll
→