Alberta · Cleaning Services

Cleaning Business Insurance in Alberta.

Coverage built for Alberta cleaning businesses, from the risks of the work to the exposures Alberta businesses face.

Licensed Alberta brokerage · IBAA member · most cleaning businesses bound in a few business days

Get your Alberta cleaning business insurance quote

How do you prefer to work through your insurance?

Cleaning insurance is built for residential and office cleaners. It brings together general liability for the slip-and-fall that is the trade’s most common claim, coverage for the client property and finishes you damage, crime coverage for theft by an employee inside a client’s home or office, and coverage for your supplies, equipment and vehicles. Cleaning happens inside other people’s spaces, often when no one is there, with your team holding keys and alarm codes around expensive floors and electronics. Velocity builds these programs for cleaning businesses across Alberta, with the paperwork an office client may ask to see.

Most cleaning programs are built around general liability for the slip-and-fall claim and care, custody and control coverage for the client property you damage. Crime coverage deals with employee theft, and the rest looks after your supplies, equipment and vehicles.

Risks Alberta cleaning businesses face.

These exposures come with the work, and in Alberta the local risks sit on top. A generic small-business policy rarely covers all of them.

01

Slip and fall claims from wet floors

Mopping a kitchen or an office corridor, a freshly washed tile floor, a missed wet-floor sign. Slip-and-fall liability is the single most common claim against cleaners, and an office client will expect to see proof of coverage before you start.

02

Damage to client property and finishes

The wrong product on a stone countertop. A vacuum that scratches a hardwood floor, or a cleaner that strips finish off a custom desk. The item you were hired to clean is exactly the kind of property a standard liability policy leaves out, so it needs specific coverage.

03

Theft by an employee in a client’s home or office

Your team has access to jewellery, cash, electronics and personal records. Even with careful hiring, employee theft happens, and the client expects to be made whole when it does.

04

Chemical spills and stored cleaning products

The cleaning chemicals you store and carry are pollutants. A spill, a mixed cleaner that releases a harmful gas, or a residue left behind can mean a cleanup bill and a claim. Both the storage of these products and the cost to clean up a spill are real exposures your program should address, so it is worth reviewing where your coverage sits.

05

Lost keys, codes, and security exposures

A misplaced house key or a shared alarm code can leave a client paying to rekey their home or building, and you on the hook for the bill.

06

Damage or theft on the way to and from jobs

The vehicles, vacuums and supplies that move between homes and offices are exposed to accidents, break-ins and weather, and replacing them mid-schedule comes straight off your margin.

07

Hail and severe summer storms

Alberta is the most hail-exposed province in Canada, and the corridor running from Calgary through Red Deer to Edmonton sees damaging storms most summers. Roofs, signage, siding, stock, and vehicles are the usual losses, which is why replacement-cost property and comprehensive auto coverage matter here.

08

Wildfire and smoke

Communities across northern and western Alberta live with a real wildfire season, and even businesses well away from the fire line lose income to evacuation orders, closures, and smoke. Property coverage pays for the damage, and business interruption covers the weeks you cannot open.

How Pricing Works

What drives your premium

  • Homes, offices, or bothRoutine house cleaning and light office cleaning price lower than higher-risk work like post-construction cleanup or anything involving harsh chemicals, so the mix of work you take on is the biggest driver of price.
  • Revenue & payrollHigher annual revenue and a larger payroll mean more jobs, more hours and more chances for something to go wrong, which raises the premium.
  • Staff & subcontractorsMore team members and any subcontractors you use add exposure. Subcontractors should carry their own coverage, or they get counted under yours.
  • Client access & keysHolding keys and alarm codes and cleaning empty homes and offices raises the theft, care-of-property and security exposure a policy has to account for.
  • Equipment & chemicalsVacuums, floor machines, vehicles and stored cleaning chemicals add value to insure and hazards to manage, both of which factor into the premium.
  • Claims historyA clean record lowers your price, while past slip-and-fall, property-damage or theft claims raise it.
  • Coverage limits & deductiblesThe limits your contracts require and the deductibles you choose move the price. Buying a higher limit costs more, and taking a higher deductible saves premium at the price of a bigger bill when you claim.
  • Your Alberta locationYour neighbourhood, the building you occupy, and the local exposures Alberta sees factor into the property side of your premium.

Common Questions

Questions ownersreally ask.

How can I get a quote for cleaning business insurance in Alberta?

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

- **Janitorial Intake** (its full interview is below; also at https://www.velocityinsurance.ca/ai-intake/janitorial-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: Janitorial Intake -->

# Janitorial 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: `471ccdab-7c26-4073-b302-e6e93cb19578`

## 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 to paste into 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. **Your first message does three things and nothing else:**
   - 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" (anything you remembered is a proposal until I confirm it);
   - a short bulleted list asking me to share these, in this order, saying in a few words that each one saves me questions (PDFs, photos or screenshots are all fine):
     - **my business's website address**, if it has one
     - **my accounts or bookkeeping** (about 2 answers on this form)
     - anything else written down about my business that this form asks about
   - an offer to skip the documents and either write everything down in one go or just be interviewed instead.

4. **Read what I share before asking anything else.** If you can browse, you may read my website, for what it actually says about my business. Read every answer you can off the website and any documents I give you, then send one message listing what you took, one line each, by the plain question and where it came from, like "Employees: 14 (2025 financial statements)". Ask me to correct anything wrong, and ask no new question in that message. Anything read off a document or my website is a proposal until I confirm it, and never guess at anything hard to read. If I share nothing, say so in one line and start the topics.

5. Work through the 7 topics below in order, **one topic per message**, starting each message with where we are, like "Topic 2 of 7". 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.

6. **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. 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.

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

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

9. Skip what my answers make irrelevant, and say you are skipping it.

10. **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 7 · 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.

11. **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.

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

13. 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.**

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

15. **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.

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

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

18. **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".

19. 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. **Contact information** (14 questions)

> Tell me about **Contact information** in your own words: things like full legal name of the business, operating or trade name, if different, and is the business a corporation or a sole proprietorship.

### 3. **Business details** (6 questions)

> Tell me about **Business details** in your own words: things like years of cleaning experience do you have, briefly describe your cleaning experience, and whether you have had business insurance before.

### 4. **Operations** (22 questions)

> Tell me about **Operations** in your own words: things like describe your operations, homes, apartments and condo units (%), and offices (%).

### 5. **Coverage needs** (9 questions)

> Tell me about **Coverage needs** in your own words: things like estimated revenue for your first 12 months, tick everything that applies., and employees.

### 6. **Other coverage to consider** (6 questions)

> Tell me about **Other coverage to consider** in your own words: things like tick everything that applies., how often will they use their own vehicles for your work, and would you like us to include employee dishonesty coverage in your quote.

### 7. **How you found us** (3 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 anything else we should know.

**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. Contact information

14. `legal_name` Full legal name of the business
15. `trade_name` Operating or trade name, if different
16. `business_structure` Is the business a corporation or a sole proprietorship? — one of · corporation=Corporation | partnership=Partnership | sole_proprietorship=Sole proprietorship | not_yet_registered=Not registered yet | other=Other
17. `business_started` When did the business start? — date
18. `owner_names` Who owns the business?
19. `mailing_address` Street address or PO box
20. `mailing_city` City or town
21. `mailing_province` Province — one of · AB=Alberta | BC=British Columbia | MB=Manitoba | NB=New Brunswick | NL=Newfoundland and Labrador | NS=Nova Scotia | NT=Northwest Territories | NU=Nunavut | ON=Ontario | PE=Prince Edward Island | QC=Quebec | SK=Saskatchewan | YT=Yukon
22. `mailing_postal_code` Postal code
23. `website` Website or social media page
24. `contact_name` Your name
25. `contact_phone` Phone number — phone
26. `contact_email` Email address — email
27. `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. Business details

28. `experience_years` How many years of cleaning experience do you have? — number · min 0
29. `experience_description` Briefly describe your cleaning experience — long text
30. `had_business_insurance` Have you had business insurance before? — one of · yes=Yes | no=No
31. `prior_insurer` Which insurance company was it with?
32. `prior_claims` Were there any claims in the last five years? — one of · yes=Yes | no=No
33. `prior_claims_detail` Tell us about each claim — long text

### 4. Operations

34. `operations_description` Describe your operations — long text
35. `mix_residential_pct` Homes, apartments and condo units (%) — number · min 0, max 100
36. `mix_office_pct` Offices (%) — number · min 0, max 100
37. `mix_retail_hospitality_pct` Stores, restaurants and hotels (%) — number · min 0, max 100
38. `mix_industrial_pct` Warehouses, plants and other industrial sites (%) — number · min 0, max 100
39. `mix_institutional_pct` Schools, daycares, hospitals and government buildings (%) — number · min 0, max 100
40. `mix_other_desc` Any other type of space
41. `mix_other_pct` That other space (%) — number · min 0, max 100
42. `healthcare_childcare` For office cleaning, will you work in any medical, dental, healthcare or childcare spaces? — one of · yes=Yes | no=No
43. `healthcare_detail` Tell us which spaces and how often you clean them — long text
44. `special_services` Tick everything that applies, even work you only do now and then. — any of · window_above_ground=Window cleaning above the ground floor | exterior_pressure_washing=Exterior or pressure washing | floor_stripping_waxing=Floor stripping and waxing | carpet_cleaning=Carpet cleaning | mould_flood_fire=Mould, flood or fire cleanup | none=None of these
45. `share_window_pct` Window cleaning above the ground floor (%) — number · min 0, max 100
46. `share_exterior_pct` Exterior or pressure washing (%) — number · min 0, max 100
47. `share_floor_pct` Floor stripping and waxing (%) — number · min 0, max 100
48. `share_carpet_pct` Carpet cleaning (%) — number · min 0, max 100
49. `share_mould_flood_fire_pct` Mould, flood or fire cleanup (%) — number · min 0, max 100
50. `window_max_storeys` How many storeys up is the highest window you clean? — number · min 0
51. `holds_keys` Will you hold keys, alarm codes or lock box codes for client properties? — one of · yes=Yes | no=No
52. `mixes_chemicals` Will you mix any of your own cleaning chemicals? — one of · yes=Yes | no=No
53. `chemicals_detail` Tell us what you mix — long text
54. `outside_alberta` Will you do any work outside Alberta? — one of · yes=Yes | no=No
55. `outside_alberta_detail` Where, and roughly how much of your work will it be? — long text

### 5. Coverage needs

56. `revenue_first_12_months` Estimated revenue for your first 12 months — doc:accounts
57. `staffing_plans` Tick everything that applies. — any of · hire_employees=Yes, I plan to hire employees | use_subcontractors=Yes, I plan to use subcontractors | neither=No, the owners will do all of the work
58. `employee_count` How many employees? — number · min 0
59. `estimated_payroll` Estimated payroll for your employees over the next 12 months — doc:accounts
60. `subcontract_share_pct` Roughly what share of your work will subcontractors do? (%) — number · min 0, max 100
61. `equipment_coverage` Would you like coverage for your own equipment and supplies, for example vacuums? — one of · yes=Yes | no=No
62. `equipment_value` About what is the total value?
63. `client_requirements` Do any of your clients ask for specific insurance limits, or ask to be named on your policy? — one of · yes=Yes | no=No
64. `client_requirements_detail` Tell us what they ask for — long text

### 6. Other coverage to consider

65. `vehicle_use` Tick everything that applies. — any of · workers_own_vehicles=Employees or subcontractors drive their own vehicles | own_vehicle=I drive a vehicle I own or lease personally | business_vehicle=I drive a vehicle the business owns or leases | no_driving=No one drives to jobs
66. `workers_vehicle_frequency` How often will they use their own vehicles for your work? — one of · now_and_then=Now and then | regularly=Regularly, for most jobs
67. `employee_dishonesty` Would you like us to include employee dishonesty coverage in your quote? — one of · yes=Yes | no=No | not_sure=Not sure
68. `payment_methods` Tick everything that applies. — any of · cash=Cash | cheque=Cheque | etransfer=E-transfer | card=Credit or debit card | online_invoice=Online invoice or payment link | direct_deposit=Direct deposit or bank transfer | other=Other
69. `stores_client_info` Do you keep client information on a phone, computer or app? — one of · yes=Yes | no=No | not_sure=Not sure
70. `cyber_liability` Would you like us to include cyber liability coverage in your quote? — one of · yes=Yes | no=No | not_sure=Not sure

### 7. How you found us

71. `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 or other business partner | social_media=Social media | website=Velocity website | other=Other
72. `referral_detail` Any detail you can add — long text
73. `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": "471ccdab-7c26-4073-b302-e6e93cb19578",
  "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,
    "legal_name": null,
    "trade_name": null,
    "business_structure": null,
    "business_started": null,
    "owner_names": null,
    "mailing_address": null,
    "mailing_city": null,
    "mailing_province": null,
    "mailing_postal_code": null,
    "website": null,
    "contact_name": null,
    "contact_phone": null,
    "contact_email": null,
    "preferred_contact": null,
    "experience_years": null,
    "experience_description": null,
    "had_business_insurance": null,
    "prior_insurer": null,
    "prior_claims": null,
    "prior_claims_detail": null,
    "operations_description": null,
    "mix_residential_pct": null,
    "mix_office_pct": null,
    "mix_retail_hospitality_pct": null,
    "mix_industrial_pct": null,
    "mix_institutional_pct": null,
    "mix_other_desc": null,
    "mix_other_pct": null,
    "healthcare_childcare": null,
    "healthcare_detail": null,
    "special_services": null,
    "share_window_pct": null,
    "share_exterior_pct": null,
    "share_floor_pct": null,
    "share_carpet_pct": null,
    "share_mould_flood_fire_pct": null,
    "window_max_storeys": null,
    "holds_keys": null,
    "mixes_chemicals": null,
    "chemicals_detail": null,
    "outside_alberta": null,
    "outside_alberta_detail": null,
    "revenue_first_12_months": null,
    "staffing_plans": null,
    "employee_count": null,
    "estimated_payroll": null,
    "subcontract_share_pct": null,
    "equipment_coverage": null,
    "equipment_value": null,
    "client_requirements": null,
    "client_requirements_detail": null,
    "vehicle_use": null,
    "workers_vehicle_frequency": null,
    "employee_dishonesty": null,
    "payment_methods": null,
    "stores_client_info": null,
    "cyber_liability": null,
    "referral_source": null,
    "referral_detail": 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 cleaning business insurance quote in Alberta?

Yes. ChatGPT, Claude or another AI assistant can interview you for your cleaning business 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.

How it works in ChatGPT, Claude or Gemini

Do I need a business licence to run a cleaning company in Alberta?

In most Alberta cities, yes. Edmonton, for example, requires a municipal business licence and licenses cleaning under its Construction, Contracting, and Labour Service category. The exact category and rules vary by municipality, so check with the city or cities where you work.

What happens if one of my employees steals from a client?

Crime coverage exists for exactly this. It responds to theft committed by your own employees, including money and property taken from a client’s home or office while your team is working there. This is basic employee crime coverage, which is not the same as being bonded. We make sure it is in place before you take on work that puts your team inside a client’s space.

Aren’t cleaners supposed to be “bonded”? Do you offer that?

You will often hear “bonded and insured,” but a bond is a specific surety product that Velocity is not licensed to provide. What most cleaning clients are really worried about is theft by staff, and that is covered by employee crime coverage, which we do arrange. We will explain the difference so you can answer a client’s question honestly.

If my cleaner damages something they were cleaning, is that covered?

Only with care, custody and control coverage. A standard liability policy leaves out damage to property in your care, and the item you were hired to clean is by definition in your care. This coverage fills that gap, and for cleaners working around stone, hardwood and electronics it is essential.

I store and carry cleaning chemicals. Is a spill or the storage covered?

Chemical spill cleanup and the storage of pollutants are real exposures for a cleaning business, and they are not automatically part of a basic policy. WHMIS also requires you to store and handle these products safely. We review where your coverage sits and deal with the spill and storage exposure, so a chemical incident does not become an uninsured cleanup bill.

My office client’s contract lists insurance requirements I don’t recognise, additional insured, non-owned auto. What are these?

These are standard in office cleaning contracts. Adding the client as an “additional insured” extends your liability policy to protect them for claims arising from your work, and “non-owned auto” covers vehicles your business uses but does not own. We read the contract and issue coverage that matches it, so you are not guessing.

How much does cleaning business insurance cost in Alberta?

There is no flat rate. Your premium depends on the work you do, your revenue, your Alberta 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 cleaning businesses go from first conversation to bound coverage within a few business days.

Do you write business insurance outside Edmonton and Calgary?

Yes. Velocity is an Alberta brokerage and we write commercial coverage anywhere in the province, including small towns, rural operations, and remote work sites. We work primarily by phone, email, and video, so where you are based does not change the service you get.

What coverage do most Alberta businesses need?

Most start with commercial property for the building, stock, and equipment, and commercial general liability for third-party injury and property damage. Vehicles add commercial auto, contractors add tools and equipment coverage, property owners add loss of rental income, and service and professional businesses add professional liability. We build the mix around your operation.

Is hail damage covered?

Hail is generally covered under a commercial property policy, and hail damage to vehicles falls under comprehensive auto coverage. What matters is whether your building is insured to replacement cost and what your deductible looks like, because in Alberta hail is a when, not an if. We confirm both before you need to claim.

Protect your Alberta cleaning business.

Tell us how your cleaning business operates and we'll build coverage around the work you do and the risks Alberta sees. Most cleaning businesses are bound within a few business days.

Not ready to switch? Book a 15-minute coverage review instead