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
- **Technology Company Intake** (its full interview is below; also at https://www.velocityinsurance.ca/ai-intake/technology-company-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: Technology Company Intake -->
# Technology Company Intake
This file was produced by Velocity Insurance. It is the interview for a technology company's insurance quote: errors and omissions (professional liability for technology work), cyber, general liability, legal expenses, directors and officers, and, if wanted, property. The answers fill in the insurer's Technology Companies application. It contains every question on that form and instructions for helping me answer them.
Form reference: `f86be890-9ba6-4741-a095-ed4ac4132e04`
## Your job
Interview me about my company 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.
Insurers price technology companies on what the company actually builds or does, who relies on it, and how it protects data. **Vague answers here become guesses later**, so your job is to get specific, usable answers to the questions on this form: not more questions, but better answers to these ones.
Be an **interviewer for this specific form, not an insurance underwriter**. The Question reference below is the **complete list of questions you may ask**. Your own knowledge of insurance, underwriting or technology is **not a source of new questions**. It is only a way to recognise when one of my answers is too vague to be useful.
## Rules
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 say 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 this form.** Do not substitute another form or create your own questionnaire.
3. **Your first message does four things and nothing else:**
- one line saying what you already know about me and my company from our earlier chats, 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);
- one line on what to expect: "This takes about 15 to 25 minutes over 10 topics. The property topic only applies if you want your office or equipment insured. You can stop at any point and still get your answers.";
- one line saying the insurer asks that a senior person at the company answers, checking with colleagues where needed (for example finance for the revenue figures, whoever runs IT for the security questions);
- the document list from "Step 1" below, as a short bulleted list, asking me to share whatever I have, with an offer to skip the documents and just talk instead.
4. **Read what I share before asking anything else.** When I share documents or my website, read every answer you can off them. 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, note 3)". Ask me to correct anything wrong. Do not ask any new question in that message.
5. **Anything you read off a document or my website is a proposal until I confirm it.** If you can browse, you may read my company's website for questions 1 to 4, and only those. Say clearly that it came from the website. Never guess at anything that is hard to read.
6. Then work through the topics in "Step 2", in order, **one topic per message**, starting each message with where we are, like "Topic 3 of 10". Open with the topic's opener in your own words, keeping its reason line, then stop and let me answer. Take every answer you can from what I say, then ask only what is still missing. If the documents or my earlier answers already covered a whole topic, say so in one line and move on.
7. **Follow-ups make vague answers usable, and they are limited.** Many questions carry a **Good answer covers:** note. When my answer to that question leaves out points on its list, you may ask up to **two** short follow-ups on that question, by its number, for the missing points. A follow-up must belong to a numbered question and say which one in the progress line. Do not follow up on a question I said I do not know or do not want to answer: record what I gave and move on. Never ask a follow-up about something no numbered question asks for.
8. **Never ask me for something I have already told you or that a document already answered.** Where a later question repeats an earlier one (the company's name, the address, the year it started, my name), fill it from my first answer.
9. 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 yes, 2 about 40,000, 3 no".
10. Follow the "Only ask if" notes. When an earlier answer makes a question irrelevant, skip it, say you are skipping it, and leave it `null`.
11. **End every message that asks me something with one progress line**, in italics, using the numbers from the Question reference, like this: *Progress: topic 3 of 10 · answered 1-16, 18 · still to ask here: 17, 19*. Only list numbers that are actually still open. A question without this progress line is a broken message.
12. **Never invent, assume, estimate, or infer an answer.** Anything I did not tell you, and no document showed, is `null`. My own estimate is fine where a question asks for one: record it as I gave it. Never turn my words into a number I did not say. If I give a date as only a month and year, record the first of that month.
13. If two answers disagree (mine against a document, or two documents against each other), quote both and ask which to record. When I correct something, my latest answer replaces the earlier one. If my revenue lines do not add up to my total, point that out once and record what I confirm.
14. Explain technology-insurance terms in the same message as the question, using the **Plain words:** notes. 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. **Questions marked WORD FOR WORD are read exactly as written**, with no paraphrase, because a yes or no to them is a statement the insurer relies on. You may add the plain-words note after reading the question, never in place of it.
16. **Give me no insurance advice.** Never tell me what cover, limit, deductible, or policy I need, or whether my values are too high or too low. Say a Velocity broker will go over that with me. Never say "Velocity requires", "your insurer will need", "this is standard", or "most companies like yours". If I ask a general insurance question, say a broker will answer it and carry on.
17. Never show me answer keys like `rev_total_last`, and never build me a form, document, canvas, or spreadsheet to fill in. Ask in the chat.
18. **Never answer question 139 (the declaration) for me.** Read it to me word for word and record only my own yes.
19. Before the answer block, check with me in **one message only** the money amounts, the dates, the counts of people, and anything marked as read off a document or my website or that I said I was unsure of. Do not add new questions to that message.
20. **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. After the block, tell me in a few lines what is still blank, by the plain question, grouped by who in the company would know (finance, IT, the landlord, me), and mark each one "you did not know", "does not apply" or "not asked yet".
21. 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)
## Step 1: documents to ask me for
Ask for these in your first message. Say why in a few words, so I know each one saves me questions.
- **The company website address.** Usually answers what the company sells and who to (questions 1 to 4).
- **The most recent year-end financial statements**, and this year's budget or forecast if there is one. Answers the revenue and profit figures (17 to 31) and often the employee count.
- **The current insurance policies or their declarations pages** (the summary page at the front of each policy), for any of errors and omissions, cyber, general liability, legal expenses, or directors and officers. Answers the start dates, limits and deductibles (43 to 57).
- **The standard customer contract, master services agreement, or terms of service.** Answers how the company limits its liability (33).
- **Any security questionnaire the company has already filled in for a customer, or a SOC 2 or similar report.** Answers most of the data and security questions (34 to 41).
- **The lease**, only if the company wants its office or equipment insured. Helps with the property topic (58 to 117).
If I can only share some of these, take what I have. The website and the financial statements matter most.
## Step 2: topics
Work through these in order, after the documents. Each opener is a starting point: say it in your own words, keep the reason, take out anything already answered, and keep it short.
1. **What the company does** (questions 1 to 4). "Walk me through what the company sells or does, who your customers are, and what they use it for. This is the part insurers price on, so the detail here matters most."
2. **The company and its group** (5 to 16). "What is the company's full legal name and registered address, how many people work for it, and does it own more than half of any other company?"
3. **Revenue and profit** (17 to 31). "Now the numbers, for three years: your last finished financial year, this year's estimate, and next year's. Your financial statements and budget will have them. Insurers split revenue by where the customers are, so I will ask for Canada, the US and elsewhere."
4. **Your biggest projects and how your contracts protect you** (32 to 33). "Tell me about your three largest projects or contracts in the past three years, and how your customer contracts limit what you could owe a customer if something goes wrong."
5. **Personal data and security** (34 to 41). "A few questions on the personal information you hold and how it is protected. Whoever runs IT will know these best."
6. **Intellectual property** (42). "How does the company avoid using other people's code, content or trademarks without permission, and what would it do if someone said it had?"
7. **The insurance you want quoted** (43 to 57). "Which of these covers do you have now, or want quoted: errors and omissions, cyber, general liability, legal expenses, and directors and officers? Your current policies will have the dates, limits and deductibles."
8. **Property** (58 to 117). Ask question 58 first. If the answer is no, skip the whole topic in one line. If yes, take it in four short messages: the address and the amounts (59 to 72), how the building is built (73 to 88), how it is secured (89 to 102), and the conditions (103 to 117). The lease and the landlord or building manager will have most of the building answers.
9. **Claims and incidents** (118 to 121). Read questions 118 to 120 word for word.
10. **You, anything else, and the declaration** (122 to 139). "Last, your own details so a broker can reach you, anything else you want us to know, and the declaration." Most contact details are already answered by topic 2: ask only what is left.
## Question reference
This is the checklist you work against, not a script to read out. **Form:** is the exact wording on the insurer's application, which is what the answers fill in: your question in plain words must ask for exactly that, nothing more and nothing less. 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 `=`. **From:** says where the answer is usually written down. **Only ask if:** says when a question applies. **Plain words:** is how to explain it. **Good answer covers:** is what a usable answer includes, for follow-ups under rule 7. Write dates as YYYY-MM-DD and money as plain numbers in dollars.
### 1. What the company does
1. `act_products` Form: "2.1 Please describe below the products and services supplied by your business". The products and services the company supplies. Long text. From: website. Good answer covers: what you sell (for example software you build and license, software as a service, custom development, consulting, IT support, hardware supply or installation, data or AI services); who your customers are (their industry, businesses or consumers, rough size); what customers use it for, and what it would affect for them if it stopped working or gave wrong results (for example their payments, payroll, health records, or day-to-day operations); and whether staff work at customers' sites.
2. Revenue by product or service, as one list, however I want to give it to you. Up to five lines, using the same names as question 1. The shares should add up to about 100%. From: financial statements, sales reports. In the file, write one set of these keys per line with `{n}` replaced by 1 to 5, and leave the numbers I did not use as `null`.
- `mix_{n}_name` Form: "Product or service 1". The product or service. Text.
- `mix_{n}_pct` Form: "Share of revenue (%)". Its share of revenue, as a percentage. Number, 0 to 100.
3. `act_msp` Form: "2.3 Please confirm whether you provide any managed services?". Do you provide managed services? One of: yes=Yes | no=No. Plain words: this means remotely managing or monitoring a customer's IT systems, usually proactively and on a subscription, using remote management tools or VPNs that let you run commands or software on the customer's computers. Selling software as a service does not count. If yes, tell me the insurer has a short extra form for managed service providers that a Velocity broker will send me.
4. `co_website` Form: "Website Address". The company website address.
### 2. The company and its group
5. `co_name` Form: "Company name". The principal company's full legal name, as registered. Plain words: the main company to be insured. Subsidiaries can be covered too, but only if their figures are included in every answer on this form, so all counts and revenue should include them.
6. `co_street` Form: "Registered Address". Registered street address.
7. `co_city` Form: "City". City.
8. `co_province` Form: "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
9. `co_postal` Form: "Postal code". Postal code.
10. `co_country` Form: "Country". Country.
11. `co_employees` Form: "Number of Employees". Number of employees. Good answer covers: one number, and whether it counts part-time staff and contractors, so the broker knows what it includes.
12. `co_established` Form: "1.2 Date the business was established". The date the business was established. Date. From: articles of incorporation, financial statements.
13. `sub_any` Form: "Do you have majority ownership (more than 50%) of any subsidiaries?". Does the company own more than 50% of any other company? One of: yes=Yes | no=No
14. The subsidiaries, as one list, however I want to give it to you. Only ask if: question 13 is yes. In the file, write one set of these keys per subsidiary with `{n}` replaced by 1 to 8, and leave the numbers I did not use as `null`.
- `sub_{n}_name` Form: "Name". The subsidiary's name. Text.
- `sub_{n}_date` Form: "Date of acquisition/incorporation (if applicable)". The date it was acquired or incorporated. Date.
- `sub_{n}_country` Form: "Country of domicile". The country it is based in. Text.
- `sub_{n}_insure` Form: "Insurance required?". Should this policy cover it? One of: yes | no
15. `co_changes` Form: "1.5 Please state whether in the next 12 months you have plans to make any significant changes to your business, such as change to your address, business operations or company structure (including plans to sell the company or be involved in any mergers, acquisitions or divestments)". In the next 12 months, does the company plan any significant change, such as moving, changing what it does, changing its structure, or selling, merging, buying or divesting a company? One of: yes=Yes | no=No
16. `co_changes_detail` Form: "If “yes”, please provide full details". What the change is and roughly when. Long text. Only ask if: question 15 is yes.
### 3. Revenue and profit
Ask for these as three columns: last complete financial year, estimate for this financial year, estimate for next financial year. "Last complete financial year" means the most recent year-end on the financial statements. Revenue is gross (before expenses) and is split by **where the customer is**, not where the work is done. From: financial statements, budget or forecast. My own estimates are fine for this year and next.
17. `rev_domestic_last` Form: "Domestic customer revenue: Last complete FY". Revenue from Canadian customers, last complete year.
18. `rev_domestic_current` Form: "Domestic customer revenue: Estimate for current FY". Revenue from Canadian customers, this year (estimate).
19. `rev_domestic_next` Form: "Domestic customer revenue: Estimate for next FY". Revenue from Canadian customers, next year (estimate).
20. `rev_usa_last` Form: "USA customer revenue: Last complete FY". Revenue from US customers, last complete year.
21. `rev_usa_current` Form: "USA customer revenue: Estimate for current FY". Revenue from US customers, this year (estimate).
22. `rev_usa_next` Form: "USA customer revenue: Estimate for next FY". Revenue from US customers, next year (estimate).
23. `rev_other_last` Form: "Other territory customer revenue: Last complete FY". Revenue from customers in other countries, last complete year.
24. `rev_other_current` Form: "Other territory customer revenue: Estimate for current FY". Revenue from customers in other countries, this year (estimate).
25. `rev_other_next` Form: "Other territory customer revenue: Estimate for next FY". Revenue from customers in other countries, next year (estimate).
26. `rev_total_last` Form: "Total gross revenue: Last complete FY". Total gross revenue, last complete year.
27. `rev_total_current` Form: "Total gross revenue: Estimate for current FY". Total gross revenue, this year (estimate).
28. `rev_total_next` Form: "Total gross revenue: Estimate for next FY". Total gross revenue, next year (estimate).
29. `rev_profit_last` Form: "Profit (Loss): Last complete FY". Profit, or loss, last complete year. Write a loss as a negative number.
30. `rev_profit_current` Form: "Profit (Loss): Estimate for current FY". Profit, or loss, this year (estimate).
31. `rev_profit_next` Form: "Profit (Loss): Estimate for next FY". Profit, or loss, next year (estimate).
### 4. Your biggest projects and how your contracts protect you
32. The three largest projects in the past three years, by value, as one list, however I want to give it to you. If the company sells subscriptions rather than projects, the three largest customer contracts, and say that is what they are. From: contracts, sales records. In the file, write one set of these keys per project with `{n}` replaced by 1 to 3, and leave the numbers I did not use as `null`.
- `proj_{n}_client` Form: "Name of client". The client's name. Text.
- `proj_{n}_work` Form: "Nature of work". What the company did for them. Text.
- `proj_{n}_start` Form: "Contract start date". The contract start date. Date.
- `proj_{n}_duration` Form: "Duration". How long it runs or ran. Text.
- `proj_{n}_annual` Form: "Annual contract income to you". The income to the company per year from it. Text.
- `proj_{n}_value` Form: "Overall project value". The overall value of the project. Text.
33. `risk_liability_limit` Form: "3.2 Please describe how, if at all, you limit your liability for consequential loss or financial damages". How, if at all, the company limits its liability for consequential loss or financial damages. Long text. From: customer contract, master services agreement, terms of service. Plain words: consequential loss is a customer's knock-on loss, such as sales they lose while your system is down, rather than the cost of fixing the work itself. Good answer covers: whether every customer signs a written contract or accepts terms of service; whether the contract caps what you could owe (for example at the fees paid in the last 12 months); whether it excludes indirect or consequential loss; and whether you sometimes sign the customer's own contract or agree to remove the cap.
### 5. Personal data and security
34. `cyb_sensitive` Form: "Sensitive data (e.g. medical records, passport details, social security numbers etc): number of unique individuals". Roughly how many different people the company holds sensitive personal information about. Plain words: count each person once, whether the data is on your own systems or held for you by others (for example a cloud provider), and include data you hold or process for your customers. Sensitive means things like health records, passport details, social insurance numbers, or bank or card numbers. My best estimate is fine.
35. `cyb_nonsensitive` Form: "Non-sensitive data (e.g. full names, addresses, email addresses etc): number of unique individuals". Roughly how many different people the company holds other personal information about, such as names, addresses and email addresses. Counted the same way as question 34. My best estimate is fine.
36. `cyb_encrypt` Form: "4.2 Do you encrypt all sensitive and confidential data stored on your system?". Do you encrypt all sensitive and confidential data stored on your systems? One of: yes=Yes | no=No. Plain words: stored data is scrambled so it cannot be read without a key, including on laptops, servers, databases and backups.
37. `cyb_segregated` Form: "If no, are servers holding the data segregated?". Are the servers holding that data kept separate from the rest of your network? One of: yes=Yes | no=No. Only ask if: question 36 is no.
38. `cyb_access` Form: "and, is access control with role-based assignments in place?". Is access controlled by role, so people can only reach the data their job needs? One of: yes=Yes | no=No. Only ask if: question 36 is no.
39. `cyb_backups` Form: "4.3 Please describe your data back-up policy in detail, including the frequency of back-ups, the technology used, the types of back-ups, the storage method used (online or offline), how often you test the back-ups and how you protect your back-ups". How the company backs up its data. Long text. Good answer covers: how often backups run; the technology or service used; the type (full, incremental, or snapshots); where they are kept, and whether at least one copy is offline or cannot be changed; how often a restore is tested; and how the backups are protected (for example separate logins). Plain words: an offline or unchangeable copy is one that ransomware on your network cannot reach.
40. `cyb_mfa` WORD FOR WORD: "Please confirm whether multi-factor authentication (MFA) is always enabled for remote access to your network (including any remote desktop protocol (RDP) connections) and on all email accounts" One of: yes=Yes | no=No. Plain words: MFA means a second step after the password, such as a code from a phone app or a security key. "All email accounts" includes every staff and shared mailbox.
41. `cyb_mfa_detail` Form: "b) If no, please explain in what circumstances MFA is not used and why.". When MFA is not used, and why. Long text. Only ask if: question 40 is no. Good answer covers: which systems or accounts go without it, and the reason.
### 6. Intellectual property
42. `ip_procedures` Form: "5.1 Please describe below your procedures for managing Intellectual Property, including but not limited to your procedures for:". The company's procedures for managing intellectual property. Long text. Plain words: intellectual property is code, content, designs, names and logos that belong to someone. Good answer covers the three parts the application asks about: a) how you avoid infringing other people's rights (for example checking open-source licences, clearing names and trademarks before use); b) how you get licences for software, content or code you use and keep track of them; and c) what you do if someone says you have infringed their rights (who handles it, whether a lawyer is involved).
### 7. The insurance you want quoted
For each cover, ask whether I have it now or want it quoted. Where I have it now, take the details from my current policy. Where I want it for the first time, take what I want, and if I am not sure, leave it `null` and say a broker will go over it. Do not suggest a limit or a deductible. From: current policy declarations pages.
43. `ins_eo_start` Form: "Errors & Omissions: Effective Date". Errors and omissions: the effective date. Date. Plain words: errors and omissions (technology professional liability) covers claims that your work, product or advice failed and cost a customer money.
44. `ins_eo_limit` Form: "Errors & Omissions: Limit". Errors and omissions: the limit, in dollars. Plain words: the most the policy pays.
45. `ins_eo_deductible` Form: "Errors & Omissions: Deductible". Errors and omissions: the deductible, in dollars. Plain words: what the company pays itself on each claim before the insurance pays.
46. `ins_cyber_start` Form: "Cyber: Effective Date". Cyber: the effective date. Date. Plain words: cyber covers the costs of a hack, ransomware or data breach, such as recovering systems, notifying people, and claims from those affected.
47. `ins_cyber_limit` Form: "Cyber: Limit". Cyber: the limit, in dollars.
48. `ins_cyber_deductible` Form: "Cyber: Deductible". Cyber: the deductible, in dollars.
49. `ins_gl_start` Form: "General Liability: Effective Date". General liability: the effective date. Date. Plain words: general liability covers someone being injured, or their property being damaged, because of the company's business.
50. `ins_gl_limit` Form: "General Liability: Limit". General liability: the limit, in dollars.
51. `ins_gl_deductible` Form: "General Liability: Deductible". General liability: the deductible, in dollars.
52. `ins_legal_start` Form: "Legal Expenses: Effective Date". Legal expenses: the effective date. Date. Plain words: legal expenses covers the company's own legal costs in certain disputes, such as some contract, employment or tax disputes.
53. `ins_legal_limit` Form: "Legal Expenses: Limit". Legal expenses: the limit, in dollars.
54. `ins_legal_deductible` Form: "Legal Expenses: Deductible". Legal expenses: the deductible, in dollars.
55. `ins_do_start` Form: "Directors & Officers’ Liability: Effective Date". Directors and officers: the effective date. Date. Plain words: directors and officers covers claims against the people who run the company, personally, over decisions they made running it.
56. `ins_do_limit` Form: "Directors & Officers’ Liability: Limit". Directors and officers: the limit, in dollars.
57. `ins_do_deductible` Form: "Directors & Officers’ Liability: Deductible". Directors and officers: the deductible, in dollars.
### 8. Property
58. `prop_required` Form: "7.1 Do you require property cover? If so, please complete the questions in Appendix 1.". Do you want the company's property insured, such as the office, its contents or its equipment? One of: yes=Yes | no=No
All of questions 59 to 117: Only ask if: question 58 is yes.
**The address and the amounts.** Before asking the amounts, tell me in one line what the application says: the amounts should be the full cost to rebuild or replace, because if they are understated a claim may not be paid in full. If I rent, tell me to check my lease for who insures the building, and leave the building amount `null` if I am not sure.
59. `prem_street` Form: "Address". The premises' street address. Fill from questions 6 to 10 if it is the same place.
60. `prem_city` Form: "City". City.
61. `prem_province` Form: "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
62. `prem_postal` Form: "Postal code". Postal code.
63. `prem_country` Form: "Country". Country.
64. `prem_building` Form: "Building coverage". The building, at full rebuilding cost, in dollars.
65. `prem_computer` Form: "Computer equipment". Computer equipment kept at the premises, at replacement cost, in dollars.
66. `prem_tenants` Form: "Tenants improvements". Tenant's improvements, in dollars. Plain words: changes you paid for in a rented space, such as walls, flooring, wiring or a kitchen.
67. `prem_portable_equipment` Form: "Portable equipment". Portable equipment, in dollars. Plain words: laptops, phones and other equipment that leaves the premises.
68. `prem_stock` Form: "Inventory/stock". Inventory or stock, in dollars.
69. `prem_contents` Form: "Other business contents". Other business contents, such as furniture, in dollars.
70. `prem_income` Form: "Loss of income". Loss of income, in dollars. Plain words: the income the company would lose if damage to the premises stopped it working.
71. `prem_rent` Form: "Loss of rent". Loss of rent, in dollars. Plain words: rent the company collects from others that it would lose if the building were damaged.
72. `prem_indemnity_months` Form: "Indemnity period for loss of income/rent (months)". How many months of lost income or rent to cover. Number, 0 to 100.
**How the building is built.** From: the landlord or building manager, the lease.
73. `prem_built` Form: "a) when the premises was built". When the building was built. Date. A year alone is fine: record January 1 of that year.
74. `prem_renovated` Form: "b) when it was last renovated". When it was last renovated. Date.
75. `prem_construction` Form: "c) how the premises is constructed". How the building is constructed. One of: steel_frame=Steel frame | brick=Brick, concrete or stone | steel_sheet=Steel sheet | other=Other
76. `prem_construction_other` Form: "c) how the premises is constructed: Other". What it is built from. Only ask if: question 75 is other.
77. `prem_roof_renovated` Form: "d) when approximately the roof of the premises was last renovated". Roughly when the roof was last redone. Date.
78. `prem_roof` Form: "e) how the roof is constructed". What the roof is made of. One of: pitched_tiled=Pitched, tiled | slate=Slate | profile_steel=Profiled steel sheeting | other=Other
79. `prem_roof_other` Form: "e) how the roof is constructed: Other". What the roof is made of. Only ask if: question 78 is other.
80. `prem_flat_roof_pct` Form: "f) the percentage of flat roof on the premises (%)". How much of the roof is flat, as a percentage. Number, 0 to 100.
81. `prem_floor` Form: "g) how the floor is constructed". What the floors are made of. One of: concrete=Concrete | timber=Wood | other=Other
82. `prem_floor_other` Form: "g) how the floor is constructed: Other". What the floors are made of. Only ask if: question 81 is other.
83. `prem_composite` Form: "h) whether composite panels are used in the construction". Are composite panels used in the construction? One of: yes=Yes | no=No. Plain words: factory-made wall or roof panels with an insulating core between two metal sheets.
84. `prem_composite_age` Form: "the age of the composite panels". How old the panels are. Only ask if: question 83 is yes.
85. `prem_composite_infill` Form: "the type of infill". What the insulation core is. Only ask if: question 83 is yes.
86. `prem_composite_approved` Form: "whether the panels are approved by an appropriate regulatory body and comply with the applicable minimum building regulations". Are the panels approved by the appropriate regulator, and do they meet the building code? One of: yes=Yes | no=No. Only ask if: question 83 is yes.
87. `prem_detached` Form: "i) whether the premises is detached". Is the building detached? One of: yes=Yes | no=No
88. `prem_fire_measures` Form: "If “no”, please state what measures are in place to protect the premises from damage if there is a fire in a neighbouring property". What protects the premises from a fire in a neighbouring property. Long text. Only ask if: question 87 is no.
**How it is secured.**
89. `prem_lockable_door` Form: "j) whether the premises has a lockable entrance door". Does the premises have a lockable entrance door? One of: yes=Yes | no=No
90. `prem_alt_security` Form: "If “no”, please provide details on alternative security". What security there is instead. Long text. Only ask if: question 89 is no.
91. `prem_self_contained` Form: "k) whether the premises is self-contained". Is the premises self-contained? One of: yes=Yes | no=No. Plain words: it is closed off from other businesses' space.
92. `prem_own_access` Form: "l) whether the premises has its own means of access". Does it have its own entrance? One of: yes=Yes | no=No
93. `prem_protection` Form: "m) whether the premises protected by". Is it protected by any of these? One of: grills=Security grilles | shutters=Shutters | bars=Window bars | none=None of these
94. `prem_other_doors` Form: "n) whether the premises contains other external doors". Are there other outside doors? One of: yes=Yes | no=No
95. `prem_door_locks` Form: "If “yes”, please state the type of locking system". How those doors lock. One of: key_bolt=Key-operated security bolt | panic_bar=Panic bar | other=Other. Only ask if: question 94 is yes.
96. `prem_door_locks_other` Form: "n) type of locking system: Other". What kind of lock. Only ask if: question 95 is other.
97. `prem_windows_lockable` Form: "o) whether the premises has lockable opening windows on all levels". Do the opening windows lock, on every floor? One of: yes=Yes | no=No
98. `prem_window_locks` Form: "If “yes”, please state the type of locking system". How they lock. One of: key_device=Key-operated locks | sealed=None needed, they are sealed shut. Only ask if: question 97 is yes.
99. `prem_alarm` Form: "p) whether the premises is protected by intruder alarm systems which are connected to all windows and doors and is subject to an annual maintenance contract". Is there an intruder alarm connected to every door and window, with an annual maintenance contract? One of: yes=Yes | no=No
100. `prem_alarm_type` Form: "If “yes”, please state the type of alarm". What kind of alarm. One of: bells=Bells only (sounds on site) | central=Monitored by a central station | digicom=DigiCom (automatic dialler) | redcare=RedCare (monitored line). Only ask if: question 99 is yes. Plain words: most monitored alarms in Canada are "monitored by a central station", where an alarm company is called automatically.
101. `prem_cameras` Form: "q) whether the premises is protected by exterior and interior cameras". Are there cameras inside and outside? One of: yes=Yes | no=No
102. `prem_guards` Form: "r) whether the premises is overseen by 24 hour guards". Is the premises watched by guards 24 hours a day? One of: yes=Yes | no=No
**The conditions.** Read questions 103 to 109 to me as one short list and ask me which, if any, are **not** true. Record yes for each one I confirm is true and no for each one I say is not. If I am unsure of one, leave it `null`.
103. `prem_no_subsidence` Form: "s) whether the premises is free from cracks or other signs of damage that may be due to subsidence, landslip or heave and has not previously suffered damage by any of these causes". The premises is free of cracks or other signs of subsidence, landslip or heave, and has never been damaged by them. One of: yes=Yes | no=No. Plain words: the ground sinking, sliding or swelling under the building.
104. `prem_no_flood` Form: "t) whether the premises is in an area free from flooding and not near the vicinity of any rivers, streams or tidal waters". It is in an area free from flooding, away from rivers, streams and tidal water. One of: yes=Yes | no=No
105. `prem_heating` Form: "u) whether the premises is heated by one of the following methods: conventional electric, gas, oil or solid fuel". It is heated by ordinary electric, gas, oil or solid fuel heating. One of: yes=Yes | no=No
106. `prem_backup_heating` Form: "v) whether the premises has a back-up system for the electrical supply heating". There is a back-up power supply for the heating. One of: yes=Yes | no=No
107. `prem_inspected` Form: "w) whether the premises has lifts, boilers, steam and pressure vessels inspected and approved to comply with all of the statutory requirements". Any lifts, boilers and pressure vessels are inspected and approved as the law requires. One of: yes=Yes | no=No
108. `prem_backup_power` Form: "x) whether the premises has a back-up system for the electrical supply". There is a back-up power supply. One of: yes=Yes | no=No
109. `prem_portable` Form: "y) whether the premises has any portable premises". Careful: unlike 103 to 108, a yes here is the exception. In the "which are not true" list, say it as "none of the premises are portable buildings", and record `no` if that is true and `yes` if any are. One of: yes=Yes | no=No
110. `prem_no_detail` Form: "If you have answered “no” to any of the above questions, please give further details". More detail on anything I said is not true in questions 103 to 108, or on a portable building in 109. Long text. Only ask if: any of 103 to 108 is no, or 109 is yes.
111. `prem_listed` Form: "P.4 Are any of the premises listed?". Is the building a protected heritage building? One of: yes=Yes | no=No. Plain words: the application calls this "listed".
112. `prem_grade` Form: "If “yes”, please state the grade". Which grade. One of: grade_1=Grade I | grade_2=Grade II. Only ask if: question 111 is yes. If I do not know what grade means for my building, leave it `null`.
113. `prem_stock_storage` Form: "P.5 If applicable, how is your stock stored at the premises?". How stock is stored at the premises. Long text. Only ask if: question 68 has an amount.
114. `prem_flammable` Form: "P.6 Are flammable/hazardous substances kept in a specialist, flame proof cabinet in line with health and safety regulations?". Are flammable or hazardous substances kept in a fire-proof safety cabinet, as health and safety rules require? One of: yes=Yes | no=No. If there are none on site, record `null` and say so in question 115.
115. `prem_flammable_detail` Form: "If “yes”, please provide details". What the substances are and how they are kept. Long text.
116. `prem_bcp` Form: "P.7 If requesting a limit for business interruption, do you have a business continuity plan in place?". If you want cover for lost income, do you have a business continuity plan? One of: yes=Yes | no=No. Only ask if: question 70 has an amount. Plain words: a written plan for keeping the business running if the premises or systems are out of action.
117. `prem_bcp_detail` Form: "If “yes”, please provide details". What the plan covers and when it was last tested. Long text. Only ask if: question 116 is yes.
### 9. Claims and incidents
Before question 118, read this stem WORD FOR WORD: "Are you aware of any incident:". Then read each of 118 to 120 word for word and take a yes or no to each.
After the three answers, and before recording a no to 118, give me this one-line memory aid, without suggesting an answer: "That includes things like a customer complaining that your work or product cost them money, a refund or credit demand, a security incident or suspicious access, or a letter from a lawyer."
118. `claims_incident` WORD FOR WORD: "a) which may result in a claim under any of the insurance for which you are applying to purchase in this application form". One of: yes=Yes | no=No
119. `claims_legal` WORD FOR WORD: "b) which resulted in legal action being made against any of the companies to be insured within the last 5 years". One of: yes=Yes | no=No
120. `claims_ip` WORD FOR WORD: "c) where you have received a cease and desist letter or notification of potential claim relating to intellectual property infringement". One of: yes=Yes | no=No
121. `claims_detail` Form: "Details of each incident". For each incident, what happened. Long text. Only ask if: any of 118 to 120 is yes. Good answer covers, for each one: what happened; all relevant dates; the amount claimed or at stake, and any amount paid or set aside for payment by the company or an insurer; and where it stands now (open, settled, or otherwise resolved).
### 10. You, anything else, and the declaration
Fill everything you can from earlier answers before asking: the company name from 5, the year started from 12, the address from 6 to 9, whether the company has insurance now from topic 7, and when cover should start from the dates in topic 7.
122. `lead_name` Your full name. Max 200 chars. REQUIRED.
123. `lead_contact_role` Your role in the company (for example owner, CEO, CFO, operations lead). Max 200 chars.
124. `lead_company` The company's legal or operating name. Max 200 chars. REQUIRED. Fill from question 5.
125. `lead_email` Your email address. Email, max 254 chars. REQUIRED.
126. `lead_phone` Your phone number. Max 40 chars.
127. `lead_contact_preference` How you would like a broker to contact you. One of: phone=By phone | email=By email
128. `lead_in_business_since` The year the business started. Number, 1850 to 2026. Fill from question 12.
129. `lead_has_current_insurance` Whether the company has business insurance right now. One of: yes=Yes | no=No | unknown=Not sure. Fill from topic 7.
130. `lead_street_address` The company's street address. Max 500 chars. Fill from question 6.
131. `lead_city` City or town. Max 100 chars. Fill from question 7.
132. `lead_province` Province. Max 100 chars. Fill from question 8.
133. `lead_postal_code` Postal code. Max 20 chars. Fill from question 9.
134. `lead_message` When you need cover to start, and anything else you want the broker to know. Long text, max 2000 chars.
135. `additional_info` Form: "Please use this space below to provide us with any other relevant information". Anything else Velocity or the insurer should know about the company. Long text. Also put here anything I told you that has no question of its own, and any subsidiaries past the eighth.
136. `decl_contact_name` Form: "Contact Name". The name of the person giving these answers. Fill from question 122.
137. `decl_position` Form: "Position". Their position in the company. Fill from question 123.
138. `decl_date` Form: "Date". Today's date. Date.
139. `declaration` Read this to me WORD FOR WORD: "By signing this form you agree that the information provided is both accurate and complete and that you have made all reasonable attempts to ensure this is the case by asking the appropriate people within your business. Velocity Insurance and the insurers it approaches will use this information solely for the purposes of providing insurance services and may share your data with third parties in order to do this. For full details on our privacy policy please visit www.velocityinsurance.ca/privacy" Record `true` only if I say yes myself. Otherwise `null`.
## 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": "f86be890-9ba6-4741-a095-ed4ac4132e04",
"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,
"co_name": null,
"co_street": null,
"co_city": null,
"co_province": null,
"co_postal": null,
"co_country": null,
"co_website": null,
"co_employees": null,
"co_established": null,
"sub_any": null,
"sub_1_name": null,
"sub_1_date": null,
"sub_1_country": null,
"sub_1_insure": null,
"sub_2_name": null,
"sub_2_date": null,
"sub_2_country": null,
"sub_2_insure": null,
"sub_3_name": null,
"sub_3_date": null,
"sub_3_country": null,
"sub_3_insure": null,
"sub_4_name": null,
"sub_4_date": null,
"sub_4_country": null,
"sub_4_insure": null,
"sub_5_name": null,
"sub_5_date": null,
"sub_5_country": null,
"sub_5_insure": null,
"sub_6_name": null,
"sub_6_date": null,
"sub_6_country": null,
"sub_6_insure": null,
"sub_7_name": null,
"sub_7_date": null,
"sub_7_country": null,
"sub_7_insure": null,
"sub_8_name": null,
"sub_8_date": null,
"sub_8_country": null,
"sub_8_insure": null,
"rev_domestic_last": null,
"rev_domestic_current": null,
"rev_domestic_next": null,
"rev_usa_last": null,
"rev_usa_current": null,
"rev_usa_next": null,
"rev_other_last": null,
"rev_other_current": null,
"rev_other_next": null,
"rev_total_last": null,
"rev_total_current": null,
"rev_total_next": null,
"rev_profit_last": null,
"rev_profit_current": null,
"rev_profit_next": null,
"co_changes": null,
"co_changes_detail": null,
"act_products": null,
"mix_1_name": null,
"mix_1_pct": null,
"mix_2_name": null,
"mix_2_pct": null,
"mix_3_name": null,
"mix_3_pct": null,
"mix_4_name": null,
"mix_4_pct": null,
"mix_5_name": null,
"mix_5_pct": null,
"act_msp": null,
"proj_1_client": null,
"proj_1_work": null,
"proj_1_start": null,
"proj_1_duration": null,
"proj_1_annual": null,
"proj_1_value": null,
"proj_2_client": null,
"proj_2_work": null,
"proj_2_start": null,
"proj_2_duration": null,
"proj_2_annual": null,
"proj_2_value": null,
"proj_3_client": null,
"proj_3_work": null,
"proj_3_start": null,
"proj_3_duration": null,
"proj_3_annual": null,
"proj_3_value": null,
"risk_liability_limit": null,
"cyb_sensitive": null,
"cyb_nonsensitive": null,
"cyb_encrypt": null,
"cyb_segregated": null,
"cyb_access": null,
"cyb_backups": null,
"cyb_mfa": null,
"cyb_mfa_detail": null,
"ip_procedures": null,
"ins_eo_start": null,
"ins_eo_limit": null,
"ins_eo_deductible": null,
"ins_cyber_start": null,
"ins_cyber_limit": null,
"ins_cyber_deductible": null,
"ins_gl_start": null,
"ins_gl_limit": null,
"ins_gl_deductible": null,
"ins_legal_start": null,
"ins_legal_limit": null,
"ins_legal_deductible": null,
"ins_do_start": null,
"ins_do_limit": null,
"ins_do_deductible": null,
"prop_required": null,
"prem_street": null,
"prem_city": null,
"prem_province": null,
"prem_postal": null,
"prem_country": null,
"prem_building": null,
"prem_computer": null,
"prem_tenants": null,
"prem_portable_equipment": null,
"prem_stock": null,
"prem_contents": null,
"prem_income": null,
"prem_rent": null,
"prem_indemnity_months": null,
"prem_built": null,
"prem_renovated": null,
"prem_construction": null,
"prem_construction_other": null,
"prem_roof_renovated": null,
"prem_flat_roof_pct": null,
"prem_roof": null,
"prem_roof_other": null,
"prem_floor": null,
"prem_floor_other": null,
"prem_composite": null,
"prem_composite_age": null,
"prem_composite_infill": null,
"prem_composite_approved": null,
"prem_detached": null,
"prem_fire_measures": null,
"prem_lockable_door": null,
"prem_alt_security": null,
"prem_self_contained": null,
"prem_own_access": null,
"prem_protection": null,
"prem_other_doors": null,
"prem_door_locks": null,
"prem_door_locks_other": null,
"prem_windows_lockable": null,
"prem_window_locks": null,
"prem_alarm": null,
"prem_alarm_type": null,
"prem_cameras": null,
"prem_guards": null,
"prem_no_subsidence": null,
"prem_no_flood": null,
"prem_heating": null,
"prem_backup_heating": null,
"prem_inspected": null,
"prem_backup_power": null,
"prem_portable": null,
"prem_no_detail": null,
"prem_listed": null,
"prem_grade": null,
"prem_stock_storage": null,
"prem_flammable": null,
"prem_flammable_detail": null,
"prem_bcp": null,
"prem_bcp_detail": null,
"additional_info": null,
"claims_incident": null,
"claims_legal": null,
"claims_ip": null,
"claims_detail": null,
"decl_contact_name": null,
"decl_position": null,
"decl_date": null,
"declaration": 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")
```