Before you can build a defensible proposal for any client, you need a foundation: a written record of your hourly rates, complexity categories, and risk buffer percentages. Most freelancers skip this step and wing it per-project, which leads to wildly inconsistent pricing, forgotten costs, and scope creep that eats your margin. This stage takes 30–45 minutes the first time and requires no tools beyond a spreadsheet or text file.
A rate and risk schema is a single source of truth for how much you charge, what kinds of work you do, and how much uncertainty to bake into your estimates. Without it, you:
A written schema solves all four. It also makes your subsequent scoping prompts (Stages 1–6) work: they reference your variables to produce estimates that are internally consistent across every client.
Your schema needs four sections:
1. Hourly Rates by Skill Level
Define your base hourly rate for each type of work you do. Common categories: frontend development, backend development, DevOps, design, project management, QA. If you work solo, you may have one rate. If you're building a small team or agency, you may have junior, mid, and senior rates. Write the number down. Be honest about what clients actually pay for your market and experience, not what you wish they'd pay.
2. Work Categories and Complexity Levels
You will score tasks by complexity: simple, moderate, complex, or very complex. For each, write a brief definition. Example: "Simple" = routine CRUD forms, template edits, config changes. "Complex" = multi-step integrations, API design, database schema changes. This becomes your rubric in Stage 2 (task decomposition). Without it, you'll score the same type of work differently each time.
3. Risk Buffer Percentage
This is how much extra time you add to your raw estimate to account for unknown unknowns: client delays, scope clarification, bugs discovered late, browser incompatibilities. Typical buffers are 15–35%. Choose based on your risk tolerance. Nervous clients and unclear briefs justify 30–35%. Repeat clients with clear specs, 15–20%. Write the number in your schema. You'll apply it the same way in every estimate.
4. Non-Billable Overhead
Some freelancers add a markup for time not charged directly: invoicing, email, meeting notes, admin. Others don't. Decide once and record it. Example: "5% of billable hours reserved for admin" or "None—I eat it." Consistency matters more than the number you pick.
Setting rates too low out of fear. You will live with these numbers for months. Underpricing yourself feeds resentment and binds you to low-margin work. If you don't know your market rate, spend an hour reading freelancer rate surveys or asking peers in private Slack groups. Then pick a rate you can defend, even if it's higher than your gut says.
Creating too many complexity buckets. Seven categories of work sound precise but become noise when you're trying to estimate under time pressure. Stick to 3–4. You can always refine later.
Setting a risk buffer that is too small. Especially as a solo freelancer, you cannot account for every interruption. A 15% buffer sounds safe but often isn't. Start at 25% and only drop it after two or three projects where you actually tracked hours and found you were overestimating.
Forgetting to include scope boundaries. Write down what is and isn't included in your rates. Example: "Backend rate includes API endpoints, database schema, and unit tests. Does not include DevOps deployment, monitoring, or load testing." This prevents clients from expanding scope without noticing.
Once you've drafted it, run this check:
Once written, your schema is stable. Update it only when:
Everything else—scope, client communication, proposal tone—changes per-project. This does not.
Store your schema in a place you can reference it during scoping (not buried in old emails). A simple Google Doc, a Markdown file in your project folder, or even a pinned message in your own Slack workspace works. Include the date you wrote it and the date you last updated it. When you move to Stage 1 and begin a new scope, you'll reference these exact variables to keep your estimates consistent.