Bee-Clean Building Maintenance

.bmc18-nav–item {
display: block;
font-family: sans-serif;
line-height: 1em;
.bmc18-nav {
margin-bottom: 1em;
.bmc18-banner–main {
display: block;
width: 100%;
border-bottom: solid 0.25em #fff;
.bmc18-nav–item {
text-align: center;
padding: 0.5em;
font-weight: bold;
text-decoration: none;
background-color: #ec3b9a;
color: #fff;
border-bottom: solid 0.25em #fff;
transition-property: background-color;
transition-duration: 0.2s;
.bmc18-nav–item:hover {
background-color: #39b54a;
color: #fff;
@media screen and (min-width: 480px) {
.bmc18-nav {
display: table;
width: 100%;
table-layout: fixed;
.bmc18-banner–main {
/*border-bottom: solid 0.5em #fff;*/
.bmc18-nav–row {
display: table-row;
.bmc18-nav–item {
display: table-cell;
vertical-align: middle;
border: solid 0.5em #fff;
.bmc18-nav–row > .bmc18-nav–item:first-child {
border-left: 0;
.bmc18-nav–row > .bmc18-nav–item:last-child {
border-right: 0;

Bee-Clean’s biggest clients include airports, hospitals and universities (Photograph by Christie Vuong)

Not many executives can say they started from the ground up and mean it literally, but Rob Gingras of Bee-Clean Building Maintenance in Edmonton is one of them. “I started mopping floors as a custodian in junior high wherever they could find a spot for me,” he says of the janitorial service company co-founded by his father, Brian. “Those summer gigs ended up being a huge asset for me.”

His route to becoming Bee-Clean’s president of Western Canada wasn’t a straight line. Instead, Gingras zigzagged from a veterinary degree to a small equine practice in Saskatoon. Then, seeking a break from the round-the-clock demands of veterinary medicine, he returned to Bee-Clean in a “get your feet wet” position that would allow him to contemplate his next move. That was 2003. Gingras stayed on and worked his way up—and at Bee-Clean, Canada’s largest janitorial service provider, that’s the norm. “Many of our employees have been here since the beginning,” he says. “It’s amazing how many people have moved up the ranks, starting out as cleaners and now working as supervisors or directors. We believe in promoting from within.”

Building maintenance and cleaning is a tough, physical business. Equipment breaks down. Government regulations change. Clients’ economic downturns mean layoffs. So having executives who understand employees’ potential pressures and roadblocks is key—and Gingras believes it’s a big part of Bee-Clean’s ability to attract and keep staff. “When we ask our people to clean a building during a storm in minus 40 degrees, we understand the challenge because many of us have done it ourselves,” he says.

But Edmonton’s extreme cold weather isn’t the only kind of storm Bee-Clean has weathered. The company started out as a franchise model more than 45 years ago. Under the leadership of Rob’s father, Brian, the business soon moved to a corporate structure; today, it’s a custodial empire with services that range from cleaning and maintenance to restoring properties after fires, floods or vandalism. With 30 locations across the country, from St. John’s to Victoria, Bee-Clean counts airports, hospitals and universities among its biggest contracts—and that can be both a blessing and a curse, depending on what’s happening in each region.

Changes to provincial models often force Bee-Clean to search for creative solutions. While business in Ontario and British Columbia may be booming, government cuts to infrastructure and funding in Alberta and Saskatchewan mean vacancies in office towers and cutbacks for post-secondary schools and oil sands companies. “Our labour in the oil sands industry was scaled back by about 20 per cent,” says Gingras. “It was ugly for a while there, and we had to look at layoffs on the front lines, but it’s starting to level off. We had good-faith dialogues and found ways to make things work within our clients’ budgets.”

Keeping ears and minds open has allowed Bee-Clean to adapt to fluctuating markets. In 2007, it became the first cleaning company in Canada to receive the Cleaning Industry Management Standard Green Building certification. Bee-Clean also introduced a “Bee-Green” program, helping clients achieve LEED (Leadership in Energy and Environmental Design) certification and reduce chemical use, relying on ionized water instead. “We were very early adopters of green chemistry,” says Gingras. “It was the right thing to do and it really moved the dial for us; most of our clients were receptive.”

The company has also forged partnerships with First Nations communities in areas like Fort McMurray, Cold Lake and Thunder Bay, expanding its reach while creating jobs. “If we’re involved in an area, we want to invest in the people. That’s very important to us. As second-generation management, my mission is to continue that direction.”

On the subject of new directions, Bee-Clean seeks to expand beyond Canada, exploring U.S. and Asian markets. “We’ve been working on China for the last three or four years and landed a contract for a significant building tower that began in January of this year,” Gingras explains. “You’re either green and growing, or ripe and rotting. We’re not content with just coasting.”

a.bmc18-actionlink {
display: block;
text-align: center;
padding: .8em;
font-size: 1.2em;
font-family: sans-serif;
color: #fff;
background-color: #EC3B9A;
font-weight: 700;
text-decoration: none;
border-radius: 4px;
transition-property: background-color;
transition-duration: .2s

a.bmc18-actionlink:hover {
background-color: #39b54a

Even more of Canada’s Best Managed Companies »

// API calls for recent posts to the ‘best-managed-companies’ tag. Grabs five of the given posts at random. NOTE: Post IDs are hard-coded below in `eligiblePosts`
‘use strict’;
var bodyClass = document.getElementsByTagName(‘body’)[0].getAttribute(‘class’);
var container = document.querySelector(‘#dynamicPosts’);
// tag id for ‘best-managed-companies’
// var tagID = 351657;
var postCount = 5;
var exclude = parseInt(( bodyClass.indexOf(‘postid’) >= 0 ? isolateID(bodyClass)[1] : 0));
var eligiblePosts = [1079843,1079845,1079849,1079851,1079853,1079855,1079857,1079859,1079861,1079863,1079865,1079867,1079869,1079873,1079875,1079877,1079879,1079881,1079885,1079887,1079889,1079891,1079893,1079895,1079897,1079899,1079901,1079903,1079905,1079907,1079909,1079911,1079913,1079915,1079917,1079919,1079921,1079925,1079923,1079927,1079929,1079931,1079933,1079935];
var chosenPosts = arrayRandomSubset(eligiblePosts, postCount, exclude); // subset of eligiblePosts, see function below
var endpoint = ‘’;
endpoint += ‘include=’ + chosenPosts.join(‘,’);
endpoint += ‘&_embed’;

fetch ( endpoint )
return response.json();
.then( function(data){
.catch(function( err ){

function postsRender(data){

// Define Post Elements
// post container
var thePost = document.createElement(‘div’);
// visual holder
var theVisual = document.createElement(‘div’);
// visual link
var theImgLink = document.createElement(‘a’);
// text holder
var theText = document.createElement(‘div’);
// the image
var theImage = document.createElement(‘img’);
theImage.setAttribute(‘src’, post._embedded[‘wp:featuredmedia’][0].source_url);
theImage.setAttribute(‘alt’, post._embedded[‘wp:featuredmedia’][0].alt_text);
// the headline
var theHed = document.createElement(‘h1’);
theHed.innerHTML = ‘‘ + post.title.rendered + ‘‘;
// the dek
var theDek = document.createElement(‘div’);
theDek.innerHTML = post.excerpt.rendered;
// the spacer
var theDivider = document.createElement(‘hr’);
//tack it all together

// return the wordpress postID from the body class
function isolateID( string ){
var pattern = /postid-(d+)?/;
return string.match(pattern);

* From a given array, provide a subset
* @param arr — the array from which to read the values
* @param n — the number of results required
* @param excl — a value to exclude from the results

function arrayRandomSubset(arr, n, excl){
let out = [];
// for the specified count, loop over the given array, select values randomly, and add them to the output array, but only if they aren’t already included.
// NOTE: we temporarily increase the length of the loop to output an array of length n + 1. This is so that if there is an `excl` value provided
for ( var i = 0; i < n + 1; i++ ){
// select a random position in the array
let r = parseInt( Math.random() * arr.length );
// if the value at position `r` isn’t already in the output, add it
if ( out.indexOf(arr[r]) < 0 ) {
// if the value IS already in the output, decrement the loop to try again.
} else {
// if the excluded value is not in the output, just trim to `n` results
if ( out.indexOf(excl) < 0 ) {
return out.splice(0, n);
// if it IS in the output, remove it.
} else {
let e = out.splice(out.indexOf(excl), 1);
return out;

The post Bee-Clean Building Maintenance appeared first on Canadian Business – Your Source For Business News.


Please enter your comment!
Please enter your name here