{"_id":"@davecook/window-cleaning-2026","name":"@davecook/window-cleaning-2026","dist-tags":{"latest":"0.1.0"},"versions":{"0.1.0":{"name":"@davecook/window-cleaning-2026","version":"0.1.0","description":"A free, open-source window cleaning cost calculator for commercial facility managers, property managers, and building operations teams.","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/DaveCookVectorLabs/window-cleaning-2026.git"},"keywords":["window-cleaning","cost-calculator","facility-management","commercial-cleaning","estimator"],"author":{"name":"Binx Professional Cleaning"},"license":"MIT","bugs":{"url":"https://github.com/DaveCookVectorLabs/window-cleaning-2026/issues"},"homepage":"https://github.com/DaveCookVectorLabs/window-cleaning-2026#readme","gitHead":"6ad7da11cc9caaeaa4886ebf4712b055f0073e7a","_id":"@davecook/window-cleaning-2026@0.1.0","_nodeVersion":"20.18.1","_npmVersion":"9.2.0","dist":{"integrity":"sha512-LkL5H3Ddc3sTcndrrOXlXN6i4XZTej29/9QL1CF30uFSYO4uJkv53cs/aLLS1jk+mxVHaQF37AwrZftwlvJ6ng==","shasum":"6df9de04503aac489f725b2b71414583418318b9","tarball":"https://registry.npmjs.org/@davecook/window-cleaning-2026/-/window-cleaning-2026-0.1.0.tgz","fileCount":29,"unpackedSize":94193,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDjuSz/CP/f8tMC3HFKc7z621NbXdbK0y1nPC0P8yH63AIhAIlafBD6GCOSGoy1evLVL5jhbh0TL1Xfh9J1Fw9uN1iS"}]},"_npmUser":{"name":"davecook","email":"dave.vectorlabs@proton.me"},"directories":{},"maintainers":[{"name":"davecook","email":"dave.vectorlabs@proton.me"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/window-cleaning-2026_0.1.0_1775062045917_0.4785975209304607"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-01T16:47:25.805Z","0.1.0":"2026-04-01T16:47:26.111Z","modified":"2026-04-01T16:47:26.349Z"},"maintainers":[{"name":"davecook","email":"dave.vectorlabs@proton.me"}],"description":"A free, open-source window cleaning cost calculator for commercial facility managers, property managers, and building operations teams.","homepage":"https://github.com/DaveCookVectorLabs/window-cleaning-2026#readme","keywords":["window-cleaning","cost-calculator","facility-management","commercial-cleaning","estimator"],"repository":{"type":"git","url":"git+https://github.com/DaveCookVectorLabs/window-cleaning-2026.git"},"author":{"name":"Binx Professional Cleaning"},"bugs":{"url":"https://github.com/DaveCookVectorLabs/window-cleaning-2026/issues"},"license":"MIT","readme":"# Window Cleaning Cost Calculator\n\nA free, open-source window cleaning cost calculator for commercial facility managers, property managers, and building operations teams. Built and maintained by [Binx Professional Cleaning](https://www.binx.ca/) — a WSIB-covered, fully insured commercial and residential cleaning company operating in Northern Ontario since 2013.\n\nThis tool helps facility managers estimate window cleaning costs for commercial buildings, office towers, retail storefronts, medical facilities, and multi-unit residential properties. It runs as a lightweight web form backed by interchangeable calculation engines written in Python and Rust.\n\n---\n\n## Why This Exists\n\nCommercial window cleaning pricing is opaque. Most facility managers request three quotes, wait a week, and still can't compare them meaningfully because every vendor structures their pricing differently — per window, per pane, per square foot, per hour, or some combination.\n\nThis calculator gives facility managers a baseline estimate they can use internally before going to market. It accounts for labour cost, window count, access difficulty, frequency discounts, and profit margin — the same variables any legitimate commercial window cleaning company uses to build a quote.\n\nBinx Professional Cleaning built this tool because transparent pricing benefits everyone. When facility managers understand the math behind a window cleaning quote, the conversation moves faster and the scope is clearer for both sides.\n\n---\n\n## Features\n\n- **Per-window and per-pane cost modeling** — supports both interior-only, exterior-only, and full-service (interior + exterior) pricing\n- **Labour cost integration** — input your local prevailing wage or use regional defaults for Northern Ontario\n- **Access difficulty multipliers** — ground level, second storey ladder access, boom lift, rope access, and swing stage each carry different cost factors\n- **Frequency discounting** — models the cost difference between one-time, quarterly, monthly, and weekly cleaning schedules\n- **Profit margin transparency** — see exactly how margin affects the final per-window and total price\n- **Dual backend engines** — identical calculation logic implemented in both Python and Rust, selectable at runtime\n- **No accounts, no tracking, no data collection** — runs entirely client-side after the initial page load\n\n---\n\n## How It Works\n\nThe PHP frontend presents a simple form. You enter:\n\n1. **Number of windows** — total window count for the building or zone\n2. **Window type** — standard single pane, double pane, floor-to-ceiling, storefront, or specialty (skylights, atriums)\n3. **Access method** — ground level, ladder, boom lift, rope access, or swing stage\n4. **Service type** — interior only, exterior only, or both\n5. **Cleaning frequency** — one-time, quarterly, monthly, or weekly\n6. **Labour rate** — hourly wage for the cleaning technician (defaults to Northern Ontario average)\n7. **Target profit margin** — percentage margin applied to the total labour and materials cost\n\nThe backend engine (Python or Rust, your choice) runs the calculation and returns a detailed cost breakdown: per-window cost, total labour, materials estimate, margin amount, and final quoted price.\n\n---\n\n## Installation\n\n### Requirements\n\n- PHP 8.1+ with a web server (Apache or Nginx)\n- Python 3.10+ (for the Python engine)\n- Rust 1.70+ and Cargo (for the Rust engine)\n\n### Quick Start\n\n```bash\ngit clone https://github.com/user/window-cleaning-calculator.git\ncd window-cleaning-calculator\n\n# Start the PHP frontend\nphp -S localhost:8000 -t public/\n\n# Run the Python engine\ncd engines/python\npip install -r requirements.txt\npython engine.py --port 8001\n\n# Or build and run the Rust engine\ncd engines/rust\ncargo build --release\n./target/release/window-calc-engine --port 8001\n```\n\nOpen `http://localhost:8000` in your browser.\n\n---\n\n## Commercial Window Cleaning — What Facility Managers Should Know\n\n### Scheduling and Frequency\n\nMost commercial buildings in Northern Ontario operate on a quarterly or monthly exterior window cleaning schedule. Interior cleaning frequency depends on the facility type:\n\n- **Office buildings** — quarterly interior, monthly exterior in high-traffic urban locations\n- **Medical and dental clinics** — monthly interior and exterior to meet infection prevention standards (IPAC protocols)\n- **Retail storefronts** — monthly or bi-weekly exterior to maintain customer-facing appearance\n- **Industrial and warehouse facilities** — semi-annual or annual, focused on skylights and clerestory windows\n- **Multi-unit residential (condos, apartments)** — semi-annual full-building exterior, interior by unit on request\n\nFrequency directly affects per-cleaning cost. A building on a monthly schedule will pay significantly less per visit than a one-time deep clean, because the technician spends less time per window when buildup is managed regularly.\n\n### Access Methods and Cost Impact\n\nAccess method is the single largest variable in commercial window cleaning pricing after window count. Ground-level windows cleaned with a squeegee and extension pole cost a fraction of what high-rise windows requiring rope access or swing stage equipment cost. The access difficulty multipliers built into this calculator reflect real-world pricing from commercial cleaning operations in Northern Ontario:\n\n- **Ground level / extension pole** — 1.0x base rate\n- **Ladder access (second storey)** — 1.3x to 1.5x base rate\n- **Boom lift / aerial platform** — 2.0x to 2.5x base rate (plus equipment rental)\n- **Rope access (SPRAT/IRATA certified)** — 2.5x to 3.5x base rate\n- **Swing stage** — 3.0x to 4.0x base rate (plus rigging and setup time)\n\n### Seasonal Considerations in Northern Ontario\n\nNorthern Ontario's climate imposes hard constraints on exterior window cleaning schedules. Exterior work is generally limited to April through November. Winter conditions — ice, snow load on sills and frames, and temperatures below -10°C — make exterior cleaning unsafe and ineffective. Most facility managers in North Bay, Sudbury, Timmins, and Sault Ste. Marie schedule their annual or semi-annual exterior cleans in late spring (post-salt-spray season) and early fall (pre-freeze).\n\nInterior window cleaning can continue year-round. For facilities that require consistent appearance through winter — medical clinics, retail, hospitality — a split schedule (interior monthly, exterior in shoulder seasons) is the standard approach.\n\n### Insurance and Compliance\n\nAny commercial window cleaning contractor working on your building should carry:\n\n- **WSIB coverage** — mandatory in Ontario for any company with employees performing cleaning work\n- **Commercial general liability insurance** — minimum $2M, preferably $5M for multi-storey work\n- **Proof of training** for high-access methods (Working at Heights certification is mandatory in Ontario under O. Reg. 213/91)\n\nBinx Professional Cleaning carries $5M in commercial general liability, full WSIB coverage, and all required Working at Heights certifications for our technicians. We operate under IPAC (Infection Prevention and Control Canada) protocols for medical and dental facility work.\n\n---\n\n## Guides and Resources\n\nThese free PDF guides are published by Binx Professional Cleaning for facility managers and property owners:\n\n- [Commercial Window & Glass Maintenance Planning Guide (PDF)](https://www.binx.ca/guides/commercial-window-glass-maintenance-planning-guide.pdf) — covers scheduling frameworks, glass type considerations, maintenance planning for commercial buildings, and budgeting templates for annual window care programs\n- [Exterior Property Maintenance: Pressure Washing, Gutters & Siding Guide (PDF)](https://www.binx.ca/guides/exterior-property-maintenance-pressure-washing-gutters-siding.pdf) — companion guide covering the exterior maintenance tasks that typically accompany window cleaning contracts\n\n---\n\n## About Binx Professional Cleaning\n\n[Binx Professional Cleaning](https://www.binx.ca/) has provided commercial and residential cleaning services across Northern Ontario since 2013. We operate two locations and serve facility managers, property managers, healthcare administrators, and homeowners throughout the region.\n\n### North Bay Office\n\n1315 Hammond Street\nNorth Bay, Ontario P1B 2J2\nPhone: [(705) 845-0998](tel:7058450998)\nService area: [North Bay and surrounding communities](https://www.binx.ca/north-bay/)\n\n### Sudbury Office\n\n767 Barry Downe Road, Unit 203M\nSudbury, Ontario P3A 3T6\nPhone: [(249) 239-1225](tel:2492391225)\nService area: [Greater Sudbury and surrounding communities](https://www.binx.ca/sudbury/)\n\n### Commercial Window Cleaning Services\n\n- [Commercial Window Cleaning](https://www.binx.ca/commercial-window-cleaning.php) — scheduled and one-time exterior and interior window cleaning for office buildings, retail, medical facilities, and industrial properties\n- [Residential Window Cleaning](https://www.binx.ca/residential-windows.php) — interior and exterior window cleaning for homes, including screens, tracks, sills, and high-access second-storey windows\n\nOur commercial cleaning division serves over 70 staff members across both locations, holds WSIB coverage, $5M liability insurance, uses Green Certified cleaning products, and follows IPAC Canada infection prevention protocols for healthcare facility work.\n\n---\n\n## Project Structure\n\n```\nwindow-cleaning-calculator/\n├── public/\n│   ├── index.php              # Main calculator form\n│   ├── calculate.php          # API endpoint — routes to selected engine\n│   └── assets/\n│       ├── style.css\n│       └── calculator.js\n├── engines/\n│   ├── python/\n│   │   ├── engine.py          # Python calculation engine\n│   │   ├── models.py          # Data models and multiplier tables\n│   │   ├── requirements.txt\n│   │   └── tests/\n│   │       └── test_engine.py\n│   └── rust/\n│       ├── src/\n│       │   ├── main.rs         # HTTP server entry point\n│       │   ├── engine.rs       # Calculation logic\n│       │   └── models.rs       # Data models and multiplier tables\n│       ├── Cargo.toml\n│       └── tests/\n│           └── engine_test.rs\n├── README.md                   # This file (facility managers)\n├── README-homeowners.md        # Homeowner-focused guide\n├── LICENSE\n└── CONTRIBUTING.md\n```\n\n---\n\n## Contributing\n\nContributions are welcome. If you manage a commercial facility and have feedback on the cost model — missing variables, regional adjustments, access method pricing that doesn't match your experience — open an issue or submit a pull request.\n\n---\n\n## License\n\nMIT License. See [LICENSE](LICENSE) for details.\n\nBuilt and maintained by [Binx Professional Cleaning](https://www.binx.ca/) — North Bay and Sudbury, Ontario.\n","readmeFilename":"README.md","_rev":"1-863955f07c505bee228a8d4a1c694014"}