Edmonton · HVAC Contractors
HVAC Insurance in Edmonton.
Coverage built for Edmonton HVAC contractors, from the risks of the work to the exposures Edmonton businesses face.
Licensed Alberta brokerage · IBAA member · most HVAC contractors bound in a few business days
Get your Edmonton HVAC insurance quote
How do you prefer to work through your insurance?
HVAC insurance has to cover something no other trade carries in the same way. The systems you install burn fuel, move air and hold pressure, and they keep doing it unattended. A venting problem, a heat exchanger missed on a service call, a brazed joint in an occupied building, or a unit that quits during a cold snap can each turn into a claim against your work. General liability covers the injury and damage, completed-operations coverage keeps working after the commissioning sheet is signed, and contractors equipment looks after the gauges, recovery machines and vacuum pumps in the van. Refrigeration and air conditioning mechanic and gasfitter are both compulsory-certification trades in Alberta under the Skilled Trades and Apprenticeship Education Act.
The January 2024 cold snap held Edmonton at -40 to -45°C for four straight days, and that is the week an HVAC contractor's work is actually tested. A furnace that quits at those temperatures does not stay a heating problem: pipes freeze, a building closes, and stock is lost, and the claim follows the last person who serviced the equipment. Edmonton's health and government building stock raises the stakes again, because those are the buildings where ventilation, makeup air, and combustion venting are examined most closely after anything goes wrong.
Most HVAC programs are built around general liability with completed-operations coverage for systems that run unattended. Contractors equipment looks after gauges and recovery gear, commercial auto looks after the service van, and professional liability comes in where you size and design the system rather than installing someone else’s drawings.
Risks Edmonton HVAC contractors face.
These exposures come with the work, and in Edmonton the local risks sit on top. A generic small-business policy rarely covers all of them.
A carbon monoxide claim from a combustion appliance
Venting that was never quite right, a cracked heat exchanger missed on a service call, or a make-up air imbalance that pulls flue gas back into a building. It is the exposure that defines this trade, because the harm is to people and not to property and it can happen weeks or months after your visit.
Brazing and hot work in an occupied building
Joining line sets and ductwork puts open flame near insulation, framing and ceiling voids in buildings full of people and stock. Most commercial sites require a hot-work permit and a fire watch. A fire that starts after the crew leaves is traced straight back to whoever lit the torch.
Rooftop units and the roof you had to cross
Curbs, penetrations and equipment set on someone else’s membrane. When a leak shows up in the ceiling below, the last trade on the roof is the one asked to explain it, and the damage inside is usually worth far more than the roof repair.
A system that fails in the worst week of the year
A furnace that quits in a cold snap, or a cooler that drops on a hot Saturday, does not fail at a convenient time. Frozen and burst pipes, spoiled stock and a business that had to close all follow, and the claim lands on the last person who serviced the equipment.
The customer’s equipment while it is in your hands
Property belonging to someone else that is in your care, custody or control is commonly excluded from a standard general liability policy. When you have a client’s rooftop unit or compressor apart on your bench or on their roof, that exclusion is worth reading before you find out what it means.
Refrigerant loss and the gear that recovers it
A charge lost during commissioning, a recovery machine that walks off a site, or a compressor that runs dry are all real costs. Gauges, vacuum pumps and recovery equipment are attractive, portable and expensive to replace.
Severe summer storms and hail
Central Alberta sits in one of Canada’s most active hail corridors, and Edmonton sees damaging summer thunderstorms, wind, and hail most years. The August 2019 Edmonton-area hailstorm caused about $90 million in insured damage, with grapefruit-sized stones and winds near 91 km/h. Roofs, signage, fleet vehicles, and stock are the common losses, which is why property and equipment coverage matter here.
Winter freeze and water damage
Long, cold winters make frozen and burst pipes, ice damming, and roof-load a real exposure for Edmonton commercial buildings. The January 2024 cold snap held Edmonton at -40 to -45°C for four straight days, and burst pipes are among the most frequent commercial property claims that follow. Sewer-backup and overland-water endorsements are worth confirming.
The Protection
Coverages we recommend.
Commercial General Liability
Bodily injury and property damage your installation or service work causes a third party, including the defence costs. It keeps responding to claims that appear after the job is closed out, which is when a heating or ventilation problem usually shows itself.
Contractors Equipment
Theft, damage and loss cover for gauges, vacuum pumps, recovery machines, torches and cordless tools, on site, in transit and in overnight storage, where a standard property policy often will not reach.
Commercial Auto
Your service vans and trucks, covered for both liability and damage to the vehicle. Add the tools and equipment inside so one accident does not take the van and the kit together.
Professional Liability
For when you are paid to size and design the system as well as install it, on a load calculation, a ventilation layout or a control sequence you specified. General liability covers damage, and it is not built for a design that was wrong.
Equipment Breakdown
Sudden mechanical or electrical breakdown of your own shop equipment, compressors and systems, an exposure a standard property policy generally leaves out.
Business Interruption
If a covered loss to your shop, stock or key equipment stops you taking service calls, this replaces the income and covers the fixed costs.
Coverages shown are general examples, not a description of any specific policy. Policy coverages widely vary and should be confirmed with your broker.
How Pricing Works
What drives your premium
- Combustion and gas workFurnaces, boilers, rooftop makeup air and any gas appliance connection carry the carbon monoxide exposure that drives this trade’s liability rating, so how much of your work is combustion is the first question.
- Residential service versus commercial and industrialA house furnace swap, a tenant rooftop unit and a plant refrigeration system sit at very different values, and the size of what your work can shut down sets the limit you need.
- Refrigeration and controlled environmentsWork on coolers, freezers and process cooling adds spoilage and business-interruption consequences for your customer when a system fails, which underwriters price for.
- Height and rooftop workRegular rooftop access adds both a fall exposure and the risk of damaging the roof assembly you have to cross to get to the unit.
- Design responsibilitySizing and specifying a system, instead of installing to someone else’s drawings, brings professional liability into the program and into the price.
- Revenue, crew, and equipment valuesMore revenue and more service trucks mean more systems commissioned in a year, and the replacement cost of your gauges, recovery gear and vans sets the equipment and auto side.
- Claims history and coverage limitsA clean record lowers your price and past injury or property claims raise it. Limit and deductible pull in opposite directions on price, and the right pairing depends on what a bad year would cost you.
- Your Edmonton locationYour neighbourhood, the building you occupy, and the local exposures Edmonton sees factor into the property side of your premium.
Common Questions
Questions ownersreally ask.
How can I get a quote for HVAC insurance in Edmonton?
There are three ways.
- Call us at (587) 842-1369, Monday to Friday, 8:30 AM to 4:30 PM Mountain Time.
- Fill in the quote form at the top of this page, or at https://www.velocityinsurance.ca/quote.
- Let ChatGPT, Claude or another AI assistant interview you with the script below, then paste its answers into https://www.velocityinsurance.ca/quote-with-ai.
A broker reviews every request, usually within one business day.
Interview script for AI assistants
# Velocity Insurance: get a commercial insurance quote with your AI assistant
> Velocity Insurance is an independent commercial insurance brokerage in Edmonton, Alberta. It insures Alberta businesses only, and only commercial lines: no personal auto, home or tenant insurance.
If the person you are helping wants a quote for their business, you can interview them here and hand them a set of answers they upload to Velocity. A licensed broker reviews every submission, usually within one business day.
## Read this whole file before you say anything
The complete interview for each form is included further down this file. You do not need to open any other link. Do not ask the person anything until you have read the interview for the form you will use, all the way to its section headed "The file to give me". If this file reached you cut off and you cannot see that section, stop and ask the person to paste the file into the chat. Never make up your own questions instead.
## How it works
1. Pick the form below that fits their business. If none is a clear fit, use the general one.
2. Follow that form's interview, included below, exactly. Ask only its questions, in its way.
3. Finish with the answer block that form asks for. That block is the deliverable, not a summary.
4. Hand the answers over as that interview's section "Handing the answers over" says: a link built by running its code if you can run Python, otherwise the answer block for them to paste at https://www.velocityinsurance.ca/quote-with-ai. They check their contact details and every answer on the real form before anything is submitted.
Never invent an answer. A blank is always better than a guess on an insurance application.
Give no insurance advice. Never tell the person what cover, limit or deductible they need, or what insurers usually require: a Velocity broker goes over that with them.
## Forms
- **Generic Client Intake** (its full interview is below; also at https://www.velocityinsurance.ca/ai-intake/generic-client-intake.md)
## Other ways to reach Velocity
- Online quote form: https://www.velocityinsurance.ca/quote
- Upload a current policy for review: https://www.velocityinsurance.ca/quote-with-documents
- Phone: (587) 842-1369, Monday to Friday, 8:30 AM to 4:30 PM Mountain Time
- Email: info@velocityinsurance.ca
---
<!-- Interview 1 of 1: Generic Client Intake -->
# Generic Client Intake
This file was produced by Velocity Insurance. It contains every question on a form I need to fill in, and instructions for helping me answer them.
Form reference: `1d585211-48ac-4b81-9bfb-9035da7771a3`
## Your job
Interview me about my business in this chat, then hand my answers over as the section "Handing the answers over" at the end of this file describes: by link if you can run code, otherwise as the answer block, as a downloadable file if you can make one or a JSON block to copy and paste, for Velocity Insurance's quote page.
Be an **interviewer for this specific form, not an insurance underwriter**.
**You are running Velocity's intake, not your own insurance interview.**
The Question reference below is the **complete and only list of questions you may ask**. Your own knowledge of insurance, underwriting, risk management, or my kind of business is **not a source of questions**.
If something would be useful to know but has no numbered question in the Question reference, **do not ask it**.
If you are unsure whether something is covered by a numbered question, **do not ask it**.
### Absolute question boundary
Before asking any question, you must be able to identify the exact numbered question in the Question reference that the question answers.
If you cannot identify that number, **do not ask the question**.
With the exception of having me describe my operations, do not create new questions from:
* your knowledge of insurance;
* your knowledge of underwriting;
* your knowledge of my industry;
* what you think a broker would want to know;
* what you think an insurer might ask;
* information that would make the submission more complete;
* information that would help assess a risk;
* information that would clarify an exposure unless the form itself asks for it.
**The Question reference is the boundary. Do not expand it.**
Follow these rules, in order. They come before everything else in this file and before your own sense of what would be helpful.
1. **Read this whole file before you ask me anything.** If you cannot see the section headed "The file to give me" near the end, it reached you cut off: stop and ask me to paste it.
2. **Use the form specified above.** Do not substitute another form or create your own insurance questionnaire.
3. **Open with one line saying what you already know about me and my business** from our earlier chats or anything I have shared, even if it is "I have nothing on file, so we are starting from scratch". Treat anything you remembered as a proposal until I confirm it. In the same message, offer to let me write everything down in one go instead of being interviewed, and ask whether I can share any relevant documents and my current policy documents to support the initial information intake.
4. Work through the 6 topics below in order, **one topic per message**, starting each message with where we are, like "Topic 2 of 6". Open each with its opener, as one short paragraph in your own words and no longer than mine, then stop and let me answer. Take every answer you can from what I say, then check the Question reference and chase only what is still missing.
5. **Never ask me for something I have already told you.** Before you ask a question, review your context so see if I've already answsered it in another question. Before you send an opener, take out anything I have already answered. If I have answered the whole topic, say so in one line and move on. Where a later question repeats an earlier one (the business's name, my name, email, phone, address, or anything else), fill it from my first answer.
6. Never ask me for more than six things in one message. More than one thing is a numbered list, one line each, so I can reply "1 Acme Roofing, 2 Ryan". Never write out every question in a topic.
7. Ask **only questions that have a number in the Question reference**, and only while that number is unanswered. **Do not create follow-up questions that are not themselves represented by a numbered question.** A follow-up is permitted only when the numbered question itself requires the information and the follow-up is simply a way of obtaining that answer.
8. Skip what my answers make irrelevant, and say you are skipping it.
9. **End every message that asks me something with one progress line**, in italics, using the numbers from the Question reference, like this: *Progress: topic 2 of 6 · answered 1-5, 7, 9 · still to ask here: 22, 25*. Before writing the progress line, check the Question reference. Only list numbers that are actually still open. A question without this progress line is a broken message.
10. **Never invent, assume, estimate, or infer an answer.** Anything I did not tell you is `null`. Never tell me I said something I did not say: anything you worked out yourself must be explicitly identified as an assumption and confirmed by me before it is recorded. If I give a date as only a month and year, record the first of that month.
11. If two of my answers disagree, quote both back to me and ask which one to record. Never pick one yourself. When I correct something, my latest answer replaces the earlier one.
12. Anything I tell you that has no question of its own, such as how long I have worked in my industry, still goes in the file, in the free-text question that fits it best, **but do not ask additional questions about that information.**
13. Explain insurance terms in the same message as the question. Assume I have never worked in insurance. Explain what a question is asking, never what my answer should be. Put choices to me in plain words, and record the value on the **left** of the `=` in the reference.
14. **Give me no insurance advice.** Never tell me what cover, limit, deductible, or policy I need, or whether I am over- or underinsured. Say a Velocity broker will go over that with me. Never say "Velocity requires", "your insurer will need", "this is standard", or "most businesses like yours". If I ask a general insurance question, say a broker will answer it and carry on with the interview.
15. Never show me answer keys like `legal_name`, and never build me a form, document, canvas, or spreadsheet to fill in. Ask in the chat, and refer to a question by the plain words you asked.
16. Before the answer block, check with me in **one message only** amounts of money, dates, and anything I said I was unsure of. **Do not use the confirmation message to introduce new questions.** It is only for confirming information already discussed.
17. **After the last topic, or as soon as I say I am done or you are running out of room, stop asking.** Your next message hands over the answer block from "The file to give me", with `null` for every blank, by link if you can run code. A prose summary is not a substitute for the answer block. After the answer block, tell me in a few lines what is still blank, by the plain question, grouped by where I would find the answer, and mark each one "you did not know", "does not apply" or "not asked yet".
18. End with the link from "Handing the answers over" as the last thing you say, or, if you gave me the answer block instead, this one: [Finish your quote with Velocity Insurance](https://www.velocityinsurance.ca/quote-with-ai)
## Topics
### 1. **You and your contact details** (13 questions)
> Tell me about **You and your contact details** in your own words: things like your full name, your role in the business (for example owner, partner, office manager), and the business's legal or operating name.
### 2. **Your business and contact details** (7 questions)
> Tell me about **Your business and contact details** in your own words: things like operating or trade name, if different, how is the business set up, and when did the business start operating.
### 3. **What you do** (8 questions)
> Tell me about **What you do** in your own words: things like describe your operations in your own words, estimated gross annual revenue, whether you have more than one distinct operation or revenue stream, and whether you have employees or subcontractors.
### 4. **Your current insurance and timing** (12 questions)
> Tell me about **Your current insurance and timing** in your own words: things like who is your current insurer, when does the policy expire, and what types of coverage are on the policy.
### 5. **Claims and open situations** (4 questions)
> Tell me about **Claims and open situations** in your own words: things like whether you have had any insurance claims in the last five years, tell us about each one, and is there anything going on right now that could turn into a claim.
### 6. **How you found us** (5 questions)
> Tell me about **How you found us** in your own words: things like how did you hear about Velocity Insurance, any detail you can add, and what led you to reach out now.
**Every question message ends with the progress line.** When the last topic is done, stop asking questions. Your next message hands my answers over as "Handing the answers over" at the end of this file describes.
## Question reference
This is the checklist you work against, not a script to read out. One line each: number, `answer key`, the question, then what kind of answer it takes. `REQUIRED` means the form will not accept a blank. Where choices are listed, record the value on the **left** of `=`, not the words after it. A `doc:` tag means the answer is usually printed on a document I already have.
### 1. You and your contact details
1. `lead_name` Your full name — max 200 chars · REQUIRED
2. `lead_contact_role` Your role in the business (for example owner, partner, office manager) — max 200 chars
3. `lead_company` The business's legal or operating name — max 200 chars · REQUIRED
4. `lead_email` Your email address — email · max 254 chars · REQUIRED
5. `lead_phone` Your phone number — phone · max 40 chars
6. `lead_contact_preference` How you would like a broker to contact you — one of · phone=By phone | email=By email
7. `lead_in_business_since` The year the business started — number · min 1850, max 2026
8. `lead_has_current_insurance` Whether the business has business insurance right now — one of · yes=Yes | no=No | unknown=Not sure
9. `lead_street_address` The business's street address — max 500 chars
10. `lead_city` City or town — max 100 chars
11. `lead_province` Province — max 100 chars
12. `lead_postal_code` Postal code — max 20 chars
13. `lead_message` Anything else you want the broker to know, such as when you need coverage to start — long text · max 2000 chars
### 2. Your business and contact details
14. `trade_name` Operating or trade name, if different
15. `business_structure` How is the business set up? — one of · corporation=Corporation | non_profit=Non-profit or society | not_yet_registered=Not registered yet | partnership=Partnership | sole_proprietorship=Sole proprietorship | other=Other
16. `business_started` When did the business start operating? — date
17. `owner_names` Who owns the business?
18. `website` Website or social media page
19. `operating_locations` Where do you actually operate from? — long text
20. `preferred_contact` How would you like us to reach you? — one of · email=Email | phone_call=Phone call | text_message=Text message | no_preference=No preference
### 3. What you do
21. `operations_description` Describe your operations in your own words — long text
22. `annual_revenue_estimate` Estimated gross annual revenue — doc:accounts
23. `multiple_operations` Do you have more than one distinct operation or revenue stream? — one of · yes=Yes | no=No · doc:accounts
24. `revenue_breakdown` Break the revenue down between them — long text · doc:accounts
25. `has_employees` Do you have employees? — one of · yes=Yes | no=No
26. `employee_count` How many, and are they full time, part time or seasonal? — long text
27. `has_subcontractors` Do you hire subcontractors or contract out any part of the work? — one of · yes=Yes | no=No
28. `subcontractor_detail` Tell us about it — long text
### 4. Your current insurance and timing
29. `current_insurer` Who is your current insurer? — doc:policy
30. `current_expiry_date` When does the policy expire? — date
31. `current_policy_types` What types of coverage are on the policy? — long text
32. `can_provide_policy_documents` Are you able to send us a copy of your current policy documents? — one of · yes=Yes | need_to_request=I will need to request them | no=No
33. `target_effective_date` When would you like coverage to be in place? — date
34. `timing_driver` What is driving that date? — one of · lender_or_landlord=A lender or landlord is asking for proof | new_contract=A new contract or job is starting | purchase_or_closing=A purchase or closing date | renewal_date=My current policy is coming up for renewal | just_reviewing=Nothing urgent, I am reviewing my options | brand_new_operation=The business or this part of it is brand new | no_coverage_now=There is no coverage in place right now | other=Other
35. `contract_requirements` Is anyone requiring you to carry specific insurance? — one of · yes=Yes | no=No | not_sure=Not sure
36. `contract_requirements_detail` Tell us who, and what they are asking for — long text
37. `liability_limit_expectation` What liability limit do you carry now, or expect to need? — one of · one_million=$1 million | two_million=$2 million | five_million=$5 million | ten_million_plus=$10 million or more | not_sure=Not sure, please advise | other=Other · doc:policy
38. `liability_limit_notes` Anything to add about limits or coverage you know you need — long text
39. `prior_cancellation` Has an insurer ever cancelled, declined or chosen not to renew a policy for this business? — one of · yes=Yes | no=No
40. `prior_cancellation_detail` Tell us what happened — long text
### 5. Claims and open situations
41. `has_past_claims` Have you had any insurance claims in the last five years? — one of · yes=Yes | no=No
42. `past_claims_detail` Tell us about each one — long text
43. `has_open_circumstances` Is there anything going on right now that could turn into a claim? — one of · yes=Yes | no=No
44. `open_circumstances_detail` Tell us what is going on — long text
### 6. How you found us
45. `referral_source` How did you hear about Velocity Insurance? — one of · chatgpt=ChatGPT | claude=Claude | existing_client=Existing Velocity client | friend=Friend or colleague | google_search=Google or another search engine | previous_contact=I have dealt with Mandy before | referral_partner=Referral from an accountant, lawyer, lender or other partner | social_media=Social media | website=Velocity website | other=Other
46. `referral_detail` Any detail you can add — long text
47. `reason_for_contact` What led you to reach out now? — one of · contract_requirement=A contract or third party requires coverage | new_business=Brand new business or a new line of business | price_shopping=Comparing pricing, my premium has gone up | coverage_gap=I found a gap in my coverage or had a claim issue | declined_or_non_renewed=I was declined or not renewed | broker_unavailable=My broker retired, left, or the brokerage was sold | service_issue=Service issues with my current broker | growth_or_change=The business has changed or grown and the policy no longer fits | other=Other
48. `reason_notes` Tell us more about that — long text
49. `anything_else` Anything else we should know? — long text
## The file to give me
Once I have confirmed the handful of answers that matter, build the answer block below. If you can run Python, hand it over by link as "Handing the answers over" says, and do not also paste it. Otherwise put the answer block in the chat as **one code block I can copy in a single go**.
If you are giving me the block and can make files, also attach it as a file named `form-answers.md`.
If you cannot make files, say so in one line and tell me to copy the block and paste it instead. That works just as well. **Never tell me a file is missing if you cannot make one.**
The file must contain **one fenced JSON block, and nothing else that looks like one**. Any commentary goes outside the block.
Inside the block:
* Copy the `form` reference exactly as it appears below. It tells the form which questions these answers belong to.
* Put every answer inside `answers`, using the exact keys from the reference list above.
* Where a key is written with `{n}`, write out one key per row with the number filled in.
* Use `null` for anything I did not answer, did not know, or that did not apply.
* Do not leave a key out.
* Do not write `"N/A"` or `"unknown"` as text.
* Do not add keys that are not in the list above. They are discarded, and I am told the file did not match my form.
* Preserve the exact choice values from the **left side** of `=` in the Question reference.
The JSON must have this structure. Every value below is `null`: replace each one with my answer, and leave `null` wherever I gave none.
```json
{
"form": "1d585211-48ac-4b81-9bfb-9035da7771a3",
"answers": {
"lead_name": null,
"lead_contact_role": null,
"lead_company": null,
"lead_email": null,
"lead_phone": null,
"lead_contact_preference": null,
"lead_in_business_since": null,
"lead_has_current_insurance": null,
"lead_street_address": null,
"lead_city": null,
"lead_province": null,
"lead_postal_code": null,
"lead_message": null,
"trade_name": null,
"business_structure": null,
"business_started": null,
"owner_names": null,
"website": null,
"operating_locations": null,
"preferred_contact": null,
"operations_description": null,
"annual_revenue_estimate": null,
"multiple_operations": null,
"revenue_breakdown": null,
"has_employees": null,
"employee_count": null,
"has_subcontractors": null,
"subcontractor_detail": null,
"current_insurer": null,
"current_expiry_date": null,
"current_policy_types": null,
"can_provide_policy_documents": null,
"target_effective_date": null,
"timing_driver": null,
"contract_requirements": null,
"contract_requirements_detail": null,
"liability_limit_expectation": null,
"liability_limit_notes": null,
"prior_cancellation": null,
"prior_cancellation_detail": null,
"has_past_claims": null,
"past_claims_detail": null,
"has_open_circumstances": null,
"open_circumstances_detail": null,
"referral_source": null,
"referral_detail": null,
"reason_for_contact": null,
"reason_notes": null,
"anything_else": null
}
}
```
If you gave me the block, tell me to open the Velocity quote link and either upload the file, if you made one, or copy the JSON block and paste it in.
Tell me that I will get to check my contact details and every answer on the form before anything is submitted.
**Nothing reaches Velocity Insurance until I do that.**
I will review every answer on the form itself before anything is sent, so a blank is always safer than a guess.
[Finish your quote with Velocity Insurance](https://www.velocityinsurance.ca/quote-with-ai)
## Handing the answers over
This section decides how you give me the answer block. Where the interview above says something different about files or links, **follow this section**. Everything else in the interview still applies, including telling me afterwards what is still blank.
### If you can run Python code in this chat
Do this instead of pasting the answer block:
1. Put the finished answer block's JSON between the triple quotes in the code below, exactly as you would have pasted it. Change nothing else in the code.
2. **Actually run the code.** Never describe running it, and never write its output yourself.
3. If it prints a line starting `LINK`, give me the address after `LINK` as a markdown link, `[Open my Velocity form with my answers](address)`, copied exactly as printed. Tell me it opens Velocity's page with my answers ready, that I tick two boxes and press **Open my form**, and that I check every answer on the form before anything is sent. Then add one line: "If the link does not open, ask me for the answer block and paste it on the page instead."
4. If it prints `FILE`, my answers are too long for a link. Give me the answer block as a file named `form-answers.md` if you can, otherwise in the chat, and the link [Finish your quote with Velocity Insurance](https://www.velocityinsurance.ca/quote-with-ai), and tell me to upload or paste it there.
5. If the code fails, fix the JSON and run it again. If it fails a second time, use the answer block instead.
**Never write, shorten, or edit the link yourself.** Velocity's page checks it, and refuses a link this code did not build.
### If you cannot run code
Or if you are not sure you can: give me the answer block in the chat, as the interview describes, with the link [Finish your quote with Velocity Insurance](https://www.velocityinsurance.ca/quote-with-ai), and tell me to paste it there. That works just as well.
### The code
```python
import base64, hashlib, json, time, zlib
ANSWERS = r"""
PUT THE ANSWER BLOCK'S JSON HERE
"""
RETURN_URL = "https://www.velocityinsurance.ca/quote-with-ai"
answers = json.loads(ANSWERS)
data = json.dumps(answers, ensure_ascii=False, separators=(",", ":")).encode("utf-8")
packer = zlib.compressobj(9, zlib.DEFLATED, -15)
packed = base64.urlsafe_b64encode(packer.compress(data) + packer.flush()).decode("ascii").rstrip("=")
stamp = str(int(time.time()))
check = hashlib.sha256((stamp + "." + packed).encode("ascii")).hexdigest()[:16]
link = RETURN_URL + "#qa=1." + stamp + "." + check + "." + packed
back = zlib.decompress(base64.urlsafe_b64decode(packed + "=" * (-len(packed) % 4)), -15)
assert json.loads(back.decode("utf-8")) == answers, "the link did not round-trip"
if len(link) <= 8000:
print("LINK " + link)
else:
print("FILE")
```Can I use ChatGPT to get my HVAC insurance quote in Edmonton?
Yes. ChatGPT, Claude or another AI assistant can interview you for your HVAC insurance quote, using the interview script in the answer above. When it is done, paste its answers into https://www.velocityinsurance.ca/quote-with-ai. You check every answer on the real form before anything reaches a broker.
What happens if a carbon monoxide claim is made against my work?
A bodily injury claim arising from your work is what commercial general liability is built to defend and, where you are found responsible, to pay. It is also the claim most worth being ready for in this trade. It is a people claim and not a property claim, it can arrive long after the service call, and the documentation of what you found and what you told the customer becomes central very quickly.
Is the customer’s rooftop unit covered while I have it apart?
Usually not by general liability on its own. Property in your care, custody or control is commonly excluded, and that is the gap that surprises HVAC contractors most often, because the equipment you are working on is by definition in your hands. It is a fixable gap once it is on the table, so tell us what you take custody of and how often.
A furnace I serviced failed in a cold snap and the building’s pipes froze. Am I responsible?
That depends on the facts, but it is exactly the kind of claim that gets made, and the resulting damage is what your liability coverage is there to pay and defend. The cost of returning to repair your own workmanship generally sits with you. The frozen pipes, the water damage and the tenant’s losses are the insured side of the question.
Do I need professional liability if I size the system myself?
It is worth reviewing. Once you are paid to do the load calculation, lay out the ventilation or specify the equipment, you are carrying design risk on top of installation risk. General liability covers the damage your hands cause, and a design that was undersized from the start is a different kind of failure needing a different policy.
Are my gauges, recovery machine, and vacuum pump covered off site?
Only with contractors equipment coverage in place. It follows your tools and portable equipment on site, in transit and in overnight storage, which is where a standard business property policy stops. Recovery and evacuation gear is expensive enough that most HVAC contractors schedule it deliberately rather than leaving it to a blanket limit.
How much does HVAC insurance cost in Edmonton?
There is no flat rate. Your premium depends on the work you do, your revenue, your Edmonton location, and your claims history, and higher-risk work costs more to insure. We price it around how you operate rather than a one-size quote, and most HVAC contractors go from first conversation to bound coverage within a few business days.
What insurance do most Edmonton businesses need?
Most start with commercial property for the building, stock, and equipment, and commercial general liability for third-party injury and property damage. From there it depends on the trade: vehicles add commercial auto, contractors add tool and equipment coverage, retailers and offices add crime and cyber, and landlords add loss of rental income. We build the mix around your operation.
Are you a local Edmonton insurance broker?
Yes. Velocity is an Edmonton-based brokerage serving businesses across the region and the wider province. You work directly with a broker who knows the local market rather than a call centre.
Can you review my current policy before I switch?
Yes, and there is no obligation. Send us your current policy and a broker will review your coverage for gaps and overlaps and let you know whether we can improve the protection, the price, or both.
Protect your Edmonton HVAC contractor.
Tell us how your HVAC contractor operates and we'll build coverage around the work you do and the risks Edmonton sees. Most HVAC contractors are bound within a few business days.
Not ready to switch? Book a 15-minute coverage review instead
Related
Keep exploring
24 pages
Related
Keep exploring
Other industries in Edmonton
- Salons, Spas & Personal Services
- Contractors
- General Contractors
- Property Owners & Landlords
- Condominium Corporations
- Cleaning Services
- Medical Offices
- Retail Operations
- Heavy Duty Mechanics
- Restaurants & Bars
- Non-Profits & Associations
- Technology Companies
- Electricians
- Carpenters
- Roofing Contractors
- Painters
- Hair Salons
- Nail Salons
- Barbershops
- Med Spas
- Tattoo & Piercing
- Massage Therapy
HVAC Insurance in other Alberta cities