
Risk Tips
A certificate of insurance
One page, usually issued the same day, that a job site will not let you start without. It proves your coverage exists. It does not give anybody any, and that gap is where the arguments happen.
Roofing Contractors
The hardest trade in Alberta to place, and the one where the market matters as much as the price.
Alberta-licensed brokerage · IBAA member · certificates issued the day they are asked for
How do you prefer to work through your insurance?
Roofing insurance is harder to arrange than any other trade in this province, and it is worth knowing why before you shop it. You work at height, you use open flame on the one surface protecting the building, and for part of every job that surface is not there at all. Insurers price all three at once, and fewer of them will write the class. That makes the market you are placed in matter as much as the premium. General liability covers the damage and injury the work causes, completed-operations coverage picks up the leak that appears three seasons later, and contractors equipment looks after the kettles, compressors and safety gear that go up with the crew.
The Exposure
Height, open flame, and a building temporarily without its roof. Three severe exposures in one trade, and fewer insurers will write it as a result.
This is the signature roofing claim. A deck stripped in the afternoon, a storm overnight, and water runs through insulation, ceilings, drywall, flooring and the contents of every room below. The roof itself is the small part of that invoice, and how well the opening was protected becomes the whole argument.
Membrane and built-up work puts open flame and hot bitumen directly on the building envelope, often over an occupied space. Fires can smoulder inside a deck assembly for hours after the crew has gone home, and hot-work permits and a fire watch after the flame is out are standard requirements on commercial sites for that reason.
Height is the constant. Beyond injury to your own crew, a bundle, a tool or a sheet of tear-off coming off the edge onto a person, a car or a neighbouring property is a third-party claim your general liability has to cover.
A dropped bundle through a skylight, a fastener into a rooftop unit or a solar array, a chute that takes out landscaping, siding or a fence. Tear-off is destructive by design, and the collateral damage around the building is routinely more expensive than the roof.
Alberta hail seasons create more work than any established crew can absorb, and the pressure to staff up fast is real. A subcontracted crew’s mistake becomes your claim. Proof of their own insurance, collected before they set foot on a roof, keeps their problem from becoming yours.
Roofs are tested by every freeze-thaw cycle and every wind event after you leave. Claims arriving years after the work is finished are normal in this trade, and coverage for claims that surface after the job is done is what picks them up.
The Protection
The water damage, fire and bodily injury your work causes a third party, together with the legal defence, and it keeps responding to claims that appear after the job is complete. It is the coverage every general contractor and property manager asks to see before you go up.
Theft, damage and loss cover for kettles, compressors, nailers, hoists, ladders and fall-protection gear, on the job site, in transit and in overnight storage, where a standard property policy often will not reach.
Your trucks, dump trailers and equipment trailers, covered for both liability and damage to the vehicle. Add the gear inside so one accident does not take the truck and the kit together.
Your yard, shop and material stock, protected against fire, theft and water damage, whether you own the space or lease it.
If a covered loss to your yard, stock or equipment stops you taking on work, 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.
Roofing is written by a narrower set of insurers than any other trade we place, and that changes how you should approach it. A cheap quote from a market that exits the class, or that non-renews you after one claim, is worth less than a stable placement that will still be there after a hail year. It also means underwriting questions are asked in more detail, covering how much hot work you do, how many storeys you go up, how much work you pass to subcontracted crews, and what your claims history looks like. Getting those questions answered well, with documentation behind them, is most of the job. Start the conversation before you need the certificate, because roofing placements take longer than other trades.
We do not treat roofing as a class to avoid. We prepare the submission properly, put your safety practices, hot-work procedure, and subcontractor controls in front of the underwriter rather than leaving them to be assumed, and we tell you honestly where the market sits before you have made promises to a customer. In a class this tightly underwritten, that preparation is what changes the answer.
How Pricing Works
Common Questions
There are three ways.
A broker reviews every request, usually within one business day.
# 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")
```Yes. ChatGPT, Claude or another AI assistant can interview you for your roofing 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.
Three high-severity exposures sit in one trade, namely work at height, open flame, and a building left temporarily without its roof. Fewer insurers are willing to write the class as a result, and the ones that do underwrite it closely, asking about hot work, storeys, subcontracted crews and claims history. That is why the market you are placed in matters as much as the number on the quote, and it is the part a broker is for.
It can be, and it is also the claim most likely to be argued, so it deserves a straight answer. Coverage turns on the wording and on what you did to protect the opening. Whether the deck was tarped, how the forecast was handled, and what the contract said about protecting the building all come into it. This is worth reviewing against your specific policy before the season starts rather than after a storm.
Yes, and it is not only an insurance requirement. Commercial sites commonly require a hot-work permit and a fire watch maintained for a set period after the flame goes out. Meeting those conditions keeps a fire claim from turning into a dispute about whether you complied with terms you had already agreed to, and your own policy may carry conditions about hot work as well.
It has to be disclosed, because subcontracted labour changes how the policy is rated. Collect proof of insurance from every crew before they start and before you pay them. An uninsured crew’s mistake becomes your liability claim, and in a surge year that is the exposure most likely to catch an otherwise well-run roofing company out.
Only with contractors equipment coverage in place. It follows your tools and portable equipment on the job site, in transit and in overnight storage, which is where a standard business property policy stops. Roofing gear is heavy, visible and often left staged overnight, so the limit is worth setting against what you would have to replace mid-season.
There is no flat rate, and roofing carries a higher base cost than finishing trades for the reasons above. Price follows your mix of steep-slope and membrane work, how much hot work you do, the buildings you roof, your use of subcontracted crews, your claims history, and the limits your contracts require. Because the market is narrower, roofing placements can take longer than other trades. Start the conversation before you need the certificate rather than the week a job is due to begin.
Tell us your mix of steep-slope and membrane work, how much hot work you do, and how you staff a hail season, and we will take it to the markets that will write it.
Not ready to switch? Book a 15-minute coverage review instead
Related
Other trades we cover
Roofing Insurance by city