Rockwood Custom Homes


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

If there’s a glass ceiling in the residential home construction market in Calgary, Allison Grafton has never felt it. In fact, being a woman in this male-dominated field has worked in her favour. “Who I am—a woman, businessperson, wife and mother—all combines to give me a lot of advantages,” says the founder and president of Rockwood Custom Homes. “I’m a fabulous multi-tasker and a really great delegator.” At any given time, Grafton is doing both to oversee every aspect of the architectural process, construction and interior design of 20 people’s dream homes—both the physical walls and floors, of course, but also the warm vibes. “A home is a spiritual place; we raise our families here,” she says. “Everything needs to be deeply thought through and energetically positive.”

For anyone who’s survived a reno, that the experience could and should be positive, or even pleasurable, might feel entirely novel. Many people assume every project will inevitably take longer and cost more than planned, and they’re not all wrong. “Rarely was a home delivered on time and on budget,” noticed Grafton of her early years in home renovation. By day, she was an investment banker, but on the side of her full-time day job and a busy life with three kids, Grafton’s passion was homes. With her husband, Grafton built from scratch or fully renovated 16 houses. But the longer she dabbled in the industry, the more she realized the industry itself was due for a makeover. “It was all an unsophisticated process that lacked financial stewardship. The client was vulnerable, all the time, whether they knew it or not.”

Using Grafton’s financial savvy from her banking career, Rockwood Custom Homes would take that risk entirely off the customer. “I’m integrated in and accountable for 100% of every single aspect of the build. I’m in the trenches with my team every day and I don’t sit at a desk. If anything goes wrong, I will and want to take the blame,” says Grafton. Luckily, her team of 35 employees helps her avoid that fate. In its 10 years of business, Rockwood has never missed a move-in date. Seriously.

Though Rockwood mostly does residential houses, one-off bespoke projects include the recently completed—delivered on time, of course—multi-family Residences of King Edward beside the arts hub and innovation centre cSPACE in Calgary. No pressure, of course, but Grafton’s brand-new creation had to both intrigue the patrons at cSPACE and fit seamlessly into the historic downtown. “It’s a condo, but it’s like no condo you’ve ever seen,” she says. Eighteen oversized flats are entirely unique and custom-designed to their owner.

Some clients have a clear and long-held vision of their dream home, while others are starting from scratch and need to be gently walked through the process one step at a time. Neither is easier than the other, and Rockwood carefully chooses its clients. “We pick our clients just like they pick us,” says Grafton. “We have to give our time, our hearts, to them.”

Grafton’s passion is infectious, so it makes sense that, aside from a little bit of background in business, passion is the only real prerequisite for a Rockwood hire. Employees are personally hand-picked by Grafton to be all-in on a challenging gig, but it comes with some major perks: “Every year, I take my entire team on a retreat,” she says. Last year it was to NYC, next might be to Europe, and the Rockwood team’s just back from a working getaway in Hawaii. “We connect, we build friendships and we work,” she says. “Since we’re doing some new homes now that are inspired by nature, we went to Maui and toured nature and architecture to be inspired,” she says. Her competitors might scoff at time and money spent on a so-called vacation, she adds, “but I believe I’m investing in my team and showing them I’m committed. Plus the alternative is I just keep it in the bank, so no.” No wonder her employees stick around.

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 Rockwood Custom Homes appeared first on Canadian Business – Your Source For Business News.


Please enter your comment!
Please enter your name here