Project
Freelance Project Cost Estimator
COCOMO-inspired estimator for freelance web and software projects, available as an offline browser calculator and CLI tools (Node.js + Python) for proposal-ready three-point and calibrated estimates.
Designed to produce defensible effort and cost ranges using Complexity Points, a variable exponent, an Effort Adjustment Factor, and PERT three-point math; includes an offline UI (calculator.html), a Node CLI (estimate.js) and a Python CLI (estimate.py) backed by a shared model in model.js that supports calibration, export, and proposal markdown output. Current scope: browser + Node + Python CLIs, calibration CSV support, and export to ~/freelance-estimates/; roadmap items are documented calibration and external spec links in the README.
Project README
Freelance Project Cost Estimator
COCOMO-inspired cost estimator for freelance web & software development. No AI required.
Tools
| Tool | How to run |
|---|---|
| calculator.html | Open in any browser — works offline |
| estimate.js | node estimate.js |
| estimate.py | python3 estimate.py |
Quick start
Browser calculator (recommended)
- Download
calculator.html - Open in Chrome or Edge
- Fill in the form, click Compute Estimate
Node.js CLI
node estimate.js
node estimate.js --export # also saves to ~/freelance-estimates/
node estimate.js --calibrate # log actual hours after delivery
Python CLI
python3 estimate.py
python3 estimate.py --export
How the model works
- Complexity Points (CP): Score project scope from the base CP table + feature additions
- Variable exponent (COEFF_A × CP^EXP_B): Effort scales super-linearly — larger projects cost disproportionately more. EXP_B adjusts based on how familiar the project type is to you
- Effort Adjustment Factor (EAF): Three risk multipliers (requirements clarity, timeline pressure, revision rounds) compound to adjust the base estimate
- PERT three-point range: Optimistic (×0.75), most likely (×1.0), pessimistic (×1.60) scenarios produce E ± SD hours
- Cost: E range × your rate (125/hr). Fixed-price quote = worst-case × 1.15
Calibration
After delivering a project, log actual hours to improve future estimates:
node estimate.js --calibrate
# enter: project name, CP used, EXP_B, EAF, actual hours
After 5+ projects, COEFF_A is updated from the default 5.0 to your personal calibrated value.
Copy data/calibration.csv to ~/.agents/skills/new-project/calibration.csv to sync with the Claude Code skill.
Rates
Configured for: $50/hr (min) — $125/hr (max).
To change: edit MIN_RATE / MAX_RATE in lib/model.js and the <script> block in calculator.html.
Spec
Full model documentation in docs/superpowers/specs/ of the devinmarshall.info repo.
Project Gallery
This album acts as a gallery for my Freelance Project Cost Estimator.


