PHPackages                             davecook/window-cleaning-2026 - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. davecook/window-cleaning-2026

ActiveLibrary

davecook/window-cleaning-2026
=============================

Commercial window cleaning cost calculator for facility managers. Models labour, access difficulty, frequency discounts, and margins. Multi-engine: PHP, Python, Rust, Java, Ruby, Elixir.

00Jupyter Notebook

Since Apr 4Pushed todayCompare

[ Source](https://github.com/DaveCookVectorLabs/window-cleaning-2026)[ Packagist](https://packagist.org/packages/davecook/window-cleaning-2026)[ RSS](/packages/davecook-window-cleaning-2026/feed)WikiDiscussions main Synced today

READMEChangelogDependenciesVersions (1)Used By (0)

Window Cleaning Cost Calculator
===============================

[](#window-cleaning-cost-calculator)

[![PyPI version](https://camo.githubusercontent.com/0debe47c4c24fa4de747ac4433551bbb3e8d16266d35fcd8d48229e943f79503/68747470733a2f2f62616467652e667572792e696f2f70792f77696e646f772d636c65616e696e672d323032362e737667)](https://badge.fury.io/py/window-cleaning-2026)[![npm version](https://camo.githubusercontent.com/600bb4eff4acc4224eb5bced19cea241190d99220a4eaadc44659f80177e59e1/68747470733a2f2f62616467652e667572792e696f2f6a732f25343064617665636f6f6b25324677696e646f772d636c65616e696e672d323032362e737667)](https://badge.fury.io/js/%40davecook%2Fwindow-cleaning-2026)[![Crates.io](https://camo.githubusercontent.com/670ec46f4f32853ee5463a4ac5e56ee508294523614ef8e4c2b01b8f558d6c60/68747470733a2f2f696d672e736869656c64732e696f2f6372617465732f762f77696e646f772d636c65616e696e672d656e67696e652e737667)](https://crates.io/crates/window-cleaning-engine)[![Gem Version](https://camo.githubusercontent.com/531a7a591d68ae72c42cf0115c3c8b734223452b622c381a56127e2a62979caf/68747470733a2f2f62616467652e667572792e696f2f72622f77696e646f775f636c65616e696e675f323032362e737667)](https://badge.fury.io/rb/window_cleaning_2026)[![Hex.pm](https://camo.githubusercontent.com/03169ffceaf0382c5621674bb64728eeabecc1035cbe97b85177a7be0e73d603/68747470733a2f2f696d672e736869656c64732e696f2f686578706d2f762f77696e646f775f636c65616e696e672e737667)](https://hex.pm/packages/window_cleaning)[![Maven Central](https://camo.githubusercontent.com/2b5acb486cf7707effb61dc3c572001ce1429d29539ea6697331b903e0fa52b6/68747470733a2f2f696d672e736869656c64732e696f2f6d6176656e2d63656e7472616c2f762f696f2e6769746875622e64617665636f6f6b766563746f726c6162732f77696e646f772d636c65616e696e672d656e67696e652e737667)](https://central.sonatype.com/artifact/io.github.davecookvectorlabs/window-cleaning-engine)[![Docker Hub](https://camo.githubusercontent.com/09edc4f37c950baf6f77903a8496ea7245c57c2e9e726356c4ab09f2902c0fd2/68747470733a2f2f696d672e736869656c64732e696f2f646f636b65722f762f64617665636f6f6b313938352f77696e646f772d636c65616e696e672d323032363f6c6162656c3d646f636b6572)](https://hub.docker.com/r/davecook1985/window-cleaning-2026)[![Documentation](https://camo.githubusercontent.com/d86c3298baec51e391dd313f6de0702568d32529abec1ea432879f48bbb0fb54/68747470733a2f2f72656164746865646f63732e6f72672f70726f6a656374732f77696e646f772d636c65616e696e672d323032362f62616467652f3f76657273696f6e3d6c6174657374)](https://window-cleaning-2026.readthedocs.io/)[![DOI](https://camo.githubusercontent.com/40e115549b1cc6923055bc51607fb707116521d363656d409ffdbeb9609dffb7/68747470733a2f2f7a656e6f646f2e6f72672f62616467652f444f492f31302e353238312f7a656e6f646f2e31393337333432372e737667)](https://doi.org/10.5281/zenodo.19373427)[![License: MIT](https://camo.githubusercontent.com/fdf2982b9f5d7489dcf44570e714e3a15fce6253e0cc6b5aa61a075aac2ff71b/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c6963656e73652d4d49542d79656c6c6f772e737667)](https://opensource.org/licenses/MIT)

A 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.

This 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, Rust, Java, Ruby, and Elixir.

---

Why This Exists
---------------

[](#why-this-exists)

Commercial 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.

This 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.

Binx 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.

---

Features
--------

[](#features)

- **Per-window and per-pane cost modeling** — supports both interior-only, exterior-only, and full-service (interior + exterior) pricing
- **Labour cost integration** — input your local prevailing wage or use regional defaults for Northern Ontario
- **Access difficulty multipliers** — ground level, second storey ladder access, boom lift, rope access, and swing stage each carry different cost factors
- **Frequency discounting** — models the cost difference between one-time, quarterly, monthly, and weekly cleaning schedules
- **Profit margin transparency** — see exactly how margin affects the final per-window and total price
- **Dual backend engines** — identical calculation logic implemented in both Python and Rust, selectable at runtime
- **No accounts, no tracking, no data collection** — runs entirely client-side after the initial page load

---

How It Works
------------

[](#how-it-works)

The PHP frontend presents a simple form. You enter:

1. **Number of windows** — total window count for the building or zone
2. **Window type** — standard single pane, double pane, floor-to-ceiling, storefront, or specialty (skylights, atriums)
3. **Access method** — ground level, ladder, boom lift, rope access, or swing stage
4. **Service type** — interior only, exterior only, or both
5. **Cleaning frequency** — one-time, quarterly, monthly, or weekly
6. **Labour rate** — hourly wage for the cleaning technician (defaults to Northern Ontario average)
7. **Target profit margin** — percentage margin applied to the total labour and materials cost

The 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.

---

Installation
------------

[](#installation)

### Requirements

[](#requirements)

- PHP 8.1+ with a web server (Apache or Nginx)
- Python 3.10+ (for the Python engine)
- Rust 1.70+ and Cargo (for the Rust engine)

### Quick Start

[](#quick-start)

```
git clone https://github.com/user/window-cleaning-calculator.git
cd window-cleaning-calculator

# Start the PHP frontend
php -S localhost:8000 -t public/

# Run the Python engine
cd engines/python
pip install -r requirements.txt
python engine.py --port 8001

# Or build and run the Rust engine
cd engines/rust
cargo build --release
./target/release/window-calc-engine --port 8001
```

Open `http://localhost:8000` in your browser.

---

Commercial Window Cleaning — What Facility Managers Should Know
---------------------------------------------------------------

[](#commercial-window-cleaning--what-facility-managers-should-know)

### Scheduling and Frequency

[](#scheduling-and-frequency)

Most commercial buildings in Northern Ontario operate on a quarterly or monthly exterior window cleaning schedule. Interior cleaning frequency depends on the facility type:

- **Office buildings** — quarterly interior, monthly exterior in high-traffic urban locations
- **Medical and dental clinics** — monthly interior and exterior to meet infection prevention standards (IPAC protocols)
- **Retail storefronts** — monthly or bi-weekly exterior to maintain customer-facing appearance
- **Industrial and warehouse facilities** — semi-annual or annual, focused on skylights and clerestory windows
- **Multi-unit residential (condos, apartments)** — semi-annual full-building exterior, interior by unit on request

Frequency 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.

### Access Methods and Cost Impact

[](#access-methods-and-cost-impact)

Access 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:

- **Ground level / extension pole** — 1.0x base rate
- **Ladder access (second storey)** — 1.3x to 1.5x base rate
- **Boom lift / aerial platform** — 2.0x to 2.5x base rate (plus equipment rental)
- **Rope access (SPRAT/IRATA certified)** — 2.5x to 3.5x base rate
- **Swing stage** — 3.0x to 4.0x base rate (plus rigging and setup time)

### Seasonal Considerations in Northern Ontario

[](#seasonal-considerations-in-northern-ontario)

Northern 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).

Interior 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.

### Insurance and Compliance

[](#insurance-and-compliance)

Any commercial window cleaning contractor working on your building should carry:

- **WSIB coverage** — mandatory in Ontario for any company with employees performing cleaning work
- **Commercial general liability insurance** — minimum $2M, preferably $5M for multi-storey work
- **Proof of training** for high-access methods (Working at Heights certification is mandatory in Ontario under O. Reg. 213/91)

Binx 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.

---

Guides and Resources
--------------------

[](#guides-and-resources)

These free PDF guides are published by Binx Professional Cleaning for facility managers and property owners:

- [Commercial Window &amp; 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
- [Exterior Property Maintenance: Pressure Washing, Gutters &amp; 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

---

About Binx Professional Cleaning
--------------------------------

[](#about-binx-professional-cleaning)

[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.

### North Bay Office

[](#north-bay-office)

1315 Hammond Street North Bay, Ontario P1B 2J2 Phone: (705) 845-0998 Service area: [North Bay and surrounding communities](https://www.binx.ca/north-bay/)

### Sudbury Office

[](#sudbury-office)

767 Barry Downe Road, Unit 203M Sudbury, Ontario P3A 3T6 Phone: (249) 239-1225 Service area: [Greater Sudbury and surrounding communities](https://www.binx.ca/sudbury/)

### Commercial Window Cleaning Services

[](#commercial-window-cleaning-services)

- [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
- [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

Our 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.

---

Project Structure
-----------------

[](#project-structure)

```
window-cleaning-calculator/
├── public/
│   ├── index.php              # Main calculator form
│   ├── calculate.php          # API endpoint — routes to selected engine
│   └── assets/
│       ├── style.css
│       └── calculator.js
├── engines/
│   ├── python/
│   │   ├── engine.py          # Python calculation engine
│   │   ├── models.py          # Data models and multiplier tables
│   │   ├── requirements.txt
│   │   └── tests/
│   │       └── test_engine.py
│   └── rust/
│       ├── src/
│       │   ├── main.rs         # HTTP server entry point
│       │   ├── engine.rs       # Calculation logic
│       │   └── models.rs       # Data models and multiplier tables
│       ├── Cargo.toml
│       └── tests/
│           └── engine_test.rs
├── README.md                   # This file (facility managers)
├── README-homeowners.md        # Homeowner-focused guide
├── LICENSE
└── CONTRIBUTING.md

```

---

Contributing
------------

[](#contributing)

Contributions 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.

---

License
-------

[](#license)

MIT License. See [LICENSE](LICENSE) for details.

Built and maintained by [Binx Professional Cleaning](https://www.binx.ca/) — North Bay and Sudbury, Ontario.

###  Health Score

20

—

LowBetter than 15% of packages

Maintenance65

Regular maintenance activity

Popularity0

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity11

Early-stage or recently created project

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

### Community

Maintainers

![](https://www.gravatar.com/avatar/dd835051bc63bd26f7ce0558ef339a45045e09d8306b7c6ca7d53a4ccd5828e0?d=identicon)[Dave Cook](/maintainers/Dave%20Cook)

---

Top Contributors

[![Binkmaster](https://avatars.githubusercontent.com/u/12659793?v=4)](https://github.com/Binkmaster "Binkmaster (10 commits)")

### Embed Badge

![Health badge](/badges/davecook-window-cleaning-2026/health.svg)

```
[![Health](https://phpackages.com/badges/davecook-window-cleaning-2026/health.svg)](https://phpackages.com/packages/davecook-window-cleaning-2026)
```

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
