WindowCleaning — Commercial Cost Calculator for Elixir

A Hex package for estimating commercial window cleaning costs. Built and maintained by Binx Professional Cleaning — a WSIB-covered, fully insured commercial and residential cleaning company operating in Northern Ontario since 2013.

Binx serves over 500 commercial facilities across North Bay, Sudbury, Timmins, and Sault Ste. Marie, including office towers, medical centres, retail plazas, government buildings, and multi-unit residential complexes. This package encodes the same pricing model Binx uses for internal quoting.

Installation

Add window_cleaning to your list of dependencies in mix.exs:

def deps do
  [
    {:window_cleaning, "~> 0.1.0"}
  ]
end

Usage

estimate = WindowCleaning.calculate(
  window_count: 120,
  window_type: :double_pane,
  access_method: :boom_lift,
  service_type: :both,
  frequency: :quarterly,
  labour_rate: 32.50,
  margin_pct: 25.0
)

IO.inspect(estimate)
# %{
#   labour_cost: 643.5,
#   materials_cost: 51.48,
#   subtotal: 694.98,
#   margin_amount: 173.75,
#   final_price: 868.73,
#   per_window_cost: 7.24
# }

Pricing Model

The calculation follows this pipeline:

  1. Base time per window — each window type has a base cleaning duration in minutes (standard single pane = 4 min, double pane = 5 min, floor-to-ceiling = 8 min, storefront = 6 min, specialty/atrium = 12 min)
  2. Service multiplier — interior-only work is 45% of full-service time; exterior-only is 55%
  3. Access multiplier — ground level (1.0×), ladder (1.4×), boom lift (2.2×), rope access (3.0×), swing stage (3.5×)
  4. Frequency discount — one-time (0%), quarterly (10%), monthly (20%), weekly (30%)
  5. Materials surcharge — 8% of labour cost (cleaning solution, squeegee blades, consumables)
  6. Profit margin — applied as a percentage of the subtotal

Access Method Details

Method Multiplier Typical Use in Northern Ontario
Ground level 1.0× Single-storey retail along Algonquin Ave, strip malls
Ladder 1.4× Two-storey office buildings, North Bay downtown core
Boom lift 2.2× 3–6 storey buildings, Sudbury municipal complexes
Rope access 3.0× Tall structures without swing stage anchor points
Swing stage 3.5× High-rise — requires WSIB clearance, 2-person minimum crew

Frequency Discounts

Schedule Discount Notes
One-time 0% No recurring commitment
Quarterly 10% Standard for most Northern Ontario commercial contracts
Monthly 20% Medical facilities, food service, high-traffic retail
Weekly 30% Rare — typically food processing or cleanroom facilities

Northern Ontario Market Context

Commercial window cleaning in Northern Ontario operates under conditions distinct from the GTA or Ottawa markets:

About Binx Professional Cleaning

Binx Professional Cleaning has operated in Northern Ontario since 2013, providing commercial and residential cleaning services across the North Bay–Sudbury corridor. The company maintains WSIB coverage, full commercial liability insurance, and employs over 70 staff serving 500+ commercial facilities.

Links

License

MIT — see LICENSE for details.