1. Paste your hours and offers
2. The plan
Accept
| Project | Fee | Hours | Due week | Per hour |
|---|
Decline, or counter at the break-even fee
| Project | Fee | Hours | Why not | Earns its place at |
|---|
Plan against the usual shortcuts
| Rule | Fees accepted |
|---|
Prefer a CLI?
Same logic, zero dependencies, one command — reads a file or stdin:
node cli.mjs plan projects.csv --buffer 20 cat projects.csv | node cli.mjs plan - --json
Get cli.mjs and engine.mjs — Node 18+, nothing to install, no network call. More: Which freelance project should you take? The hours math.
What's recognised
| Input | Handling |
|---|
The plan is exact for the numbers you type (dynamic programming over deadlines). Projects are treated as splittable across weeks and starting any week; start dates, dependencies between projects, payment timing, taxes and the chance an offer falls through are not modelled.
Common questions
Does it upload my projects?
No. The browser page works on the text you paste, in your own browser, and never sends it anywhere. The CLI reads a local file or stdin and makes no network call.
Why not just take the highest-paying project, or the best hourly rate?
Hours are shared across deadlines. The biggest fee can use hours that two smaller projects would have paid more for, and the best hourly rate can be a small job that leaves hours nothing else fills. The plan compares every deliverable combination exactly.
How does it know a set of projects is deliverable?
Hours can be split across weeks, so a set works exactly when, for every deadline week, the hours due by that week fit the hours you have by that week. The tool checks that for you and finds the highest-fee set that passes.
What is the break-even fee for a declined project?
The fee at which that project would earn a place in the plan, given your other offers. Use it as the number to counter with, or as the rate below which you say no.
Is the plan guaranteed to be best?
It is the exact best answer for the numbers you typed, checked against trying every combination in the tests. Hours estimates are usually optimistic, so use the scope-creep buffer; the result is a decision aid, not a forecast.