When I started freelancing, I thought the hard part would be the code. It wasn't. The hard part was everything around the code — scoping the work, setting expectations, and figuring out how to work with a client instead of just for one.

Here are a few things I wish someone had told me earlier.

A proposal is not just a price tag

My first instinct was to think of a proposal as "here's what I'll build, here's what it costs." Once I started writing real client proposals — website builds, booking systems, registration platforms — I realized a good proposal is really a shared understanding of scope: what's included, what isn't, what the timeline looks like phase by phase, and what "done" actually means.

Breaking a project into phases (design, backend, frontend, integration, deployment) with rough day-by-day estimates does two things: it forces you to think through the real work before you commit to a price, and it gives the client something concrete to agree to — so "can you also add X?" becomes an easy conversation instead of an awkward one.