Install
openclaw skills install @voronindenis5/freelance-rate-calculatorCalculate a sustainable freelance or contract hourly rate that survives taxes, unpaid non-billable time, bench months, self-funded benefits, and overhead — then price fixed-bid projects safely. Use when the user is going freelance, quoting an hourly rate or project price, evaluating whether a client's offered rate pays enough, deciding between freelance and a salaried job, or raising existing rates.
openclaw skills install @voronindenis5/freelance-rate-calculatorFreelancers systematically underprice. They anchor on salary ÷ 2080, forget that only ~60% of hours are billable, that both halves of payroll tax land on them, that vacation and health insurance are self-funded, and that contracts end. The result is being broke while busy. This skill runs the real math: target take-home → sustainable hourly rate → safe fixed-bid quotes.
scripts/freelance_rate.py (offline, stdlib-only) answers four questions that keep freelancers up at night:
rate — "I need $70k take-home: what's my hourly rate?" Full breakdown: tax gross-up, overhead, benefits load, billable ratio, bench cushion → hourly / day / weekly ratessalary — "I'm leaving a $95k job: what rate replaces it?" (Spoiler: not $45.67/h. It's ~2.4× that once benefits and taxes are honest.)check — "A client offers $60/h — what does that actually pay?" Reverse-engineers the offered rate into annual/monthly net and equivalent salaried pay, and flags shortfalls against your minimumproject — "This looks like 60 hours: what do I quote fixed-bid?" Hours × rate × risk buffer (+ rush premium), with effective-rate exposure if scope creepsEvery assumption (billable ratio 60%, 46 workweeks, SE tax 15.3%, income tax 18%, 1 bench month) is documented and overridable per flag.
Don't use for: salaried offer negotiation (that's salary-negotiator territory — different tax/overhead shape), or formal tax filing (estimates only; a CPA does the real numbers).
keep_ratio = 1 − income_tax − SE_tax × 0.9235 (SECA deduction folded in). Revenue must be net ÷ keep_ratio before personal take-home.# The rate that nets you $70k with honest costs
python3 scripts/freelance_rate.py rate --target-net 70000 \
--overhead 4000 --benefits 9600
# Leaving a $95k job? The replacement rate
python3 scripts/freelance_rate.py salary --salary 95000 --benefits 9600
# Is $60/h enough? (checks against $70k minimum)
python3 scripts/freelance_rate.py check --rate 60 --min-net 70000 --benefits 9600
# Fixed-bid quote for a ~60h project
python3 scripts/freelance_rate.py project --hours 60 --rate 115 --rush
python3 scripts/freelance_rate.py demo
rate (or salary). Sanity-check the billable ratio — new freelancers sell less (0.50); established ones with repeat clients bill more (0.70).check with --min-net to see the shortfall and the rate actually needed.project — never quote estimate × rate without the buffer.rate with the new target; communicate increases 30 days ahead, grandfathering current clients one quarter.FREELANCE RATE CALCULATOR
==================================================================
Target take-home: $70,000/yr
Tax keep-ratio: 67.9% of revenue is yours
Gross needed (taxes): $103,138
Overhead + benefits: $13,600/yr
Revenue needed: $116,738
Working year: 46w × 40h = 1,840h total
Billable ratio: 60% → 1,012h billable
Bench cushion: 1.0 months folded in
══ HOURLY RATE: $115.35/h ══
Day rate (8h): $923
Weekly rate: $2,768
salary ÷ 2080. A $95k job is $45.67/h — but that number comes with health insurance, 7% employer payroll, paid leave, and zero sales admin. The honest replacement is ~2.4× naive. salary computes it.--billable-ratio, but don't override reality.--bench-months (default 1.0).project adds it (and +25% for rush jobs).--benefits makes the rate honest.check --min-net before accepting"First freelance gig, recruiter asks my rate tomorrow"
python3 scripts/freelance_rate.py salary --salary 85000 --benefits 9000
# → quote the computed number, rounded up to nearest $5
"Client says their budget is $75/h; I need $80k net"
python3 scripts/freelance_rate.py check --rate 75 --min-net 80000
# → see the shortfall; counter at the computed needed rate or trim scope
"Scope agreed: ~80 hours of work, they want fixed price"
python3 scripts/freelance_rate.py project --hours 80 --rate 110 --buffer 0.20
# → quote with 20% buffer; keep the change-order script ready
references/rate-theory.md — the economics: billable ratio benchmarks, tax gross-up math, value vs hourly pricing, negotiation scripts