Four branches, nothing buried
Services, areas, guides and the conversion pages. Every page on the site is one or two clicks from the home page, which is as deep as a contractor site ever needs to be.

The identity, the rules that keep it consistent, and the plan to make Prime Air the first answer a Calgary homeowner gets, on every surface they search.
Strategy is not a mood board. It is a small set of decisions that make the next hundred small decisions easy.
Prime Air is the Calgary HVAC contractor that answers the phone at 2am, tells you the price before touching anything, and does the work properly enough to put its name on the permit.
Calgary has no shortage of HVAC companies. It has a shortage of ones that answer at night, quote in writing, and pull the permit.
Primary: a furnace has failed and they are deciding in under ten minutes, on a phone. Secondary: the planner replacing equipment before it fails. Third: small commercial operators with refrigeration on the line.
One promise, kept every time, beats five that are only mostly kept. It runs through the website, the email, the phone call and the invoice.
Each one is a thing a competitor would have to change their business to match, not a thing they could change their website to match.
Not an answering service. The phone reaches someone who can actually tell you whether it can wait until morning.
The number is agreed before work starts. No discovery pricing, no surprises when the invoice arrives.
Calgary requires a permit on every furnace replacement. Prime Air pulls it. Most of the cheap quotes in this city do not.
Gas pressure, flame signal, temperature rise, static pressure. Numbers handed over, not a sticker on the cabinet.
Write the way a good tradesperson talks to a worried homeowner. Short sentences, real numbers, no industry word without a translation beside it.
The left column is what goes on the site. The right column is what most of the first page of Google says, and every line of it is either unprovable, unenforceable, or both.
Free estimate is a claim about cost. Written pricing is a claim about process, and process is what reassures someone standing in a cold house.
Under the Competition Act a performance claim needs an adequate and proper test made before the claim. Availability is a fact you can simply keep.
Attribute the rating and link it. Never self-declare a ranking, and never mark up your own aggregateRating.
Most is defensible. Always is a guarantee, and one missed call in February breaks it.
Match the plural to reality. Every review on the profile names one person.
Specific and checkable beats a phrase every competitor on the first page also uses.
Canada's Competition Act, section 74.01(1)(b), requires that a performance claim be based on an adequate and proper test made before the claim is made. That is the reason the left column is written the way it is, and it is a commercial advantage rather than a restriction: a claim you can prove is a claim a competitor cannot copy.
One mark, three lockups, and a reversal for every surface. These are the actual production files, shown against the backgrounds each one is approved for. Which you use is decided by the space and the contrast, never by preference.
The rule is contrast, not preference. Pick the version that keeps the mark legible against whatever is behind it, and never recolour one to make it fit.
Prime Air Blue is the brand. Everything else exists to make it readable, and red exists for one job only.
Alert Red appears on the emergency booking option, the gas safety notice, and the call button in a no-heat notification email. It does not appear on a sale, a promotion, or a heading someone wants to stand out. The moment it is used decoratively it stops working as a signal, and the signal is the whole point.
Prime Air Blue on white is used for links and large text. For small blue text on white, use Deep Blue, which carries the contrast. White on Prime Air Blue is used for buttons at 16px and above with a semibold weight. Ink 3 never goes below 13px. Never place Prime Air Blue on Blue Tint for text.
Apple's system typeface, called through the system font stack so it renders as real SF Pro on your phone and on every Mac, and falls back cleanly everywhere else.
-apple-system, BlinkMacSystemFont, "SF Pro Display", "SF Pro Text", "SF Pro", "Helvetica Neue", Helvetica, Arial, sans-serif
The logo uses the same typeface. The wordmark is SF Pro Bold with hand-corrected kerning. One typeface across the mark, the site, the email and the paperwork, with nothing extra to install on a new machine.
This is deliberate rather than a web font. It does not need to be one: on Apple hardware the system already has it, and on Windows and Android the fallback is a neutral grotesque that carries the same proportions. It also loads instantly, which is a real ranking and conversion input on a phone in a cold house.
Apple's rule, and the reason the type feels right rather than merely large. The bigger the type, the tighter the tracking. Display sits at -0.032em, body near zero, and only small caps labels get positive tracking.
Every size is a clamp token that interpolates from a 360px phone to a 1440px monitor. There is not a single font-size media query in the entire site. To retune the system, you change one token.
Headlines are written as sentences, not shouted in title case. The only capitals in the system are the small tracked labels, which are doing a structural job rather than an emphatic one.
Buttons are fully round. Cards and images are softly rounded, never square. Shadows are wide and faint rather than tight and dark. Get these four habits right and anything new made for Prime Air will look like it belongs.
border-radius:980px. Primary is brand blue with a soft blue shadow, secondary is white with a hairline border, alert red is reserved for the emergency call and nothing else. They lift 1px on hover.
object-fit:cover, a hairline border so a light photograph still has an edge on a white page.cubic-bezier(.22,1,.36,1) at 0.55s to 0.8s. Everything decelerates into place. Nothing bounces, nothing snaps, nothing moves fast enough to be noticed on purpose.There are no breakpoints where the layout
jumps. Gutters, section rhythm and grid gaps are all clamp() values
that interpolate from a 360px phone to a 1440px monitor, so the page is
proportioned correctly at every width in between rather than at four of them.
| Token | Value | Job |
|---|---|---|
| --px | clamp(18px, 3.4vw, 32px) | Page gutter |
| --sec-y | clamp(60px, 7.4vw, 110px) | Space between sections |
| --gap | clamp(14px, 1.6vw, 22px) | Grid gap |
| --max | 1120px | Content width |
The truck is the highest-value piece of brand real estate Prime Air owns. It sits in a driveway for two hours, in the most targeted possible location, in front of exactly the neighbours who need the service next. Every surface below carries the real logo file, not a redraw.
Sixty-one files across three folders. Whatever a printer, a sign shop, a wrap installer, an embroiderer or a platform asks for, it is already in the package and you never have to come back and ask for it.
Vector. Infinitely scalable, no pixels, no background. This is the one a wrap installer, a sign shop and an embroiderer all want first.
Vector, print ready. What a commercial printer opens without asking a single question, with the artwork intact rather than flattened.
Raster with a transparent background, 1081px to 1921px. The everyday format for anything on a screen.
Five assets, each in four colourways. That combination covers every background and every printing method you will ever hand it to, which is the entire reason a logo ships as a set rather than as a single file.
| Asset | Colourways | Use |
|---|---|---|
| Horizontal combination mark | Full colour, black, all white, reversed | Nav, headers, truck door, wide spaces |
| Vertical combination mark | Full colour, black, all white, reversed | Footers, avatars, signage, square spaces |
| Mark alone | Full colour, black, white, outline | Favicon, stamp, embroidery, small sizes |
| Wordmark alone | Full colour, black, white, reversed | Where the mark already appears nearby |
| App icon | Blue tile, white tile, black | Favicon, home screen, social avatar |
Thirty-eight pages, each targeting a distinct intent. No two pages compete with each other, which is the mistake that quietly caps most contractor sites.
Someone is cold right now. Highest conversion rate on the site, shortest decision window, and the reason the phone number is above the fold on every single page.
The bread and butter of local search. Seven services multiplied by ten areas, each with genuinely local content so the set is not read as doorway pages.
Cost, comparison, and how-it-works questions. Lower immediate conversion, far higher volume, and the single best source of AI citations and featured snippets.
| Target query | Intent | Page that owns it | Priority |
|---|---|---|---|
| furnace repair calgary | Emergency | Furnace repair service page | Tier 1 |
| emergency furnace repair calgary | Emergency | Home page, emergency band | Tier 1 |
| no heat calgary 24 hour | Emergency | Home page and every area page | Tier 1 |
| furnace blowing cold air | Emergency, diagnostic | Guide, six checks | Tier 1 |
| furnace repair airdrie and nine more towns | Local | One area page each | Tier 2 |
| furnace installation calgary | Commercial | Furnace installation service page | Tier 2 |
| air conditioning calgary | Commercial, seasonal | Air conditioning service page | Tier 2 |
| heat pump calgary | Commercial, growing | Heat pumps service page | Tier 2 |
| commercial refrigeration calgary | Commercial B2B | Refrigeration service page | Tier 2 |
| furnace repair cost calgary | Research, high intent | Guide, repair costs with table | Tier 3 |
| new furnace cost calgary | Research, high intent | Guide, replacement cost | Tier 3 |
| do i need a permit to replace a furnace calgary | Research, trust | Guide, permits | Uncontested |
| heat pump rebate alberta 2026 | Research | Guide, rebates | Uncontested |
| why is my gas bill so high calgary | Research | Guide, gas bill | Uncontested |
| chinook furnace problems | Research, hyper local | Guide, chinooks | Uncontested |
| furnace vents frozen snow | Emergency, hyper local | Guide, frozen vents | Uncontested |
| what size furnace do i need | Research | Guide, sizing | Tier 3 |
| hvac jobs calgary | Recruitment | Careers page, to be built | Uncontested |
Every HVAC company in Calgary is fighting over "furnace repair calgary". Almost none of them have written a correct, sourced answer to "do I need a permit to replace a furnace in Calgary", or "is there a heat pump rebate in Alberta in 2026". Those queries have lower volume and close to zero competition, they attract exactly the homeowner who is about to spend money, and they are the ones an answer engine will cite because there is nothing else credible to cite.
Search volumes. Anyone quoting you exact monthly volumes for a Calgary HVAC term before the site has data is reading a tool that is estimating. The honest sequence is: launch, connect Search Console, and once enough data has landed the actual query report tells us which of these assumptions were right. The strategy above is built on intent and competition, which are observable now.
A URL is a promise about what is on the page. Google reads it, an answer engine reads it, and so does the person deciding whether to tap. These are the rules the whole site is built on.
Services, areas, guides and the conversion pages. Every page on the site is one or two clicks from the home page, which is as deep as a contractor site ever needs to be.
Service, then place. Lowercase, hyphens, no dates, no ID numbers, no folders that mean nothing.
Two pages chasing the same query split the signal and both lose. Every query on the plan routes to exactly one page.
Every page listed with a priority that reflects what it is worth. robots.txt then names the AI crawlers explicitly rather than leaving them to a wildcard, because being findable is the whole point.
A cost guide ranks, then hands the reader to the service page. Every guide links out to three related pages with descriptive anchor text, so authority collects where the booking form is.
Renaming a page throws away every link and every ranking it earned. If one truly has to move, it moves with a 301.
Crawl budget is real on a small site, and so is patience. A page four folders deep gets visited less by a crawler and reached less by a person. Flat beats clever.
People search the service first and qualify it with a place second. The URL should read in the same order as the thought, which also keeps the service word closer to the front where it carries more weight.
A dated URL is stale the moment the year turns, and a cost guide gets refreshed every year. Undated URLs let the page be updated forever without losing anything it has earned.
Thirty-eight pages are live. Twenty more are mapped and ready to build, each one aimed at a search someone is already making. Open a folder to see what sits inside it, or search for a page by name.
Priority is the number in the sitemap file. It is a hint to a crawler about what matters most on the site, not an instruction, and a sitemap where everything is 1.0 tells a crawler nothing at all.
Six more services, six more areas and six more guides is not padding. Each one targets a search that exists today and that nobody local is answering properly. The two that will pay fastest are careers, because every trade in the city is hiring and almost none of them have a page for it, and book, because every ad, every van decal and every business card should land on a page whose only job is to take the booking.
Build them in that order. Conversion pages first, because they lift everything already ranking. Then areas, because they are the cheapest new rankings on the list. Then services, then guides.
People no longer just search. They ask. The site is built so the same page wins a blue link, a featured snippet, an AI Overview and a citation inside ChatGPT, without doing four different jobs.
Crawlable static HTML, entity clarity, genuinely local content, and a Google Business Profile that matches the site character for character.
Every heading is a real question. Every answer is complete in one paragraph, placed directly under it, quotable without context.
Passage-level extractability. Short-answer blocks above the fold, tables for anything comparative, numbers with their units and their scope.
Self-contained chunks, clear entities, sourced claims, and AI crawlers explicitly welcomed in robots.txt rather than left to a wildcard.
Every one of these crawlers is named and allowed in robots.txt. Marks are the property of their owners and appear here to show where the site is built to surface, not to imply any partnership.
In practice that means never writing "it usually runs between $150 and $300". It means writing "a flame sensor clean or replacement in Calgary usually runs between $150 and $300". The second one survives extraction. That is the entire game, and almost nobody in this trade is playing it.
The site is the asset. The profile and the reviews are what make it rank. Both need to move together.
Rankings are a vanity metric for a contractor. Four numbers matter: calls from the website, booking form submissions, direction requests on the profile, and the share of those that turn into paid work.
Track AI referrals separately, from chatgpt.com, perplexity.ai, claude.ai and gemini.google.com. The volume is small next to organic today. It is growing, it converts well because the visitor arrives already convinced, and being early is the whole advantage.