L’interface est localisée ; les présentations et documents des Skills sont traduits automatiquement par IA dans votre langue. Le code, les commandes, chemins et termes techniques restent en version originale, et le document de l’auteur fait foi.
Explorer les Skills
Documents · SKILL.md

quote

quote

Generate a client insurance quote page from a PDF. Parses policy details and creates an HTML carrier comparison page ready for tiiny.host. Handles carrier vs carrier, full coverage vs liability-only, or single carrier scenarios.

Independent GitHub snapshot · Automated classification · Original documentation governs

Documentation de la Skill

GitHub

name: quote description: Generate a client insurance quote page from a PDF. Parses policy details and creates an HTML carrier comparison page ready for tiiny.host. Handles carrier vs carrier, full coverage vs liability-only, or single carrier scenarios. disable-model-invocation: true argument-hint: "[path-to-pdf]"

/quote — Generate Client Quote Page from PDF

Instructions

When invoked, follow these steps exactly:

Step 1: Parse the PDF

Read the PDF at the provided path using the Read tool or mcp__PDF_Tools_-_Analyze__Extract__Fill__Compare__read_pdf_content tool. Extract:

  • Client name (full name of the named insured)
  • Client address (street, city, NC ZIP)
  • Vehicles (year, make, model for each vehicle)
  • Per-vehicle premiums (liability premium and comp/collision premium per vehicle, per option)
  • Per-vehicle usage (commute, pleasure, business — from "Primary use of the vehicle" field)
  • Carrier names (e.g., Dairyland, National General, Safeco, Progressive)
  • For each carrier/option: liability limits, comp deductible, collision deductible, rental amount, towing amount, paid-in-full price, down payment, monthly payment after down, 6-month term total
  • Driver info (name, relationship, years licensed, DOB if available)
  • Driver history (look for discount keywords like "Safe Driving", "Accident Free", or any accident/violation entries — determine if each driver has a clean record or has incidents)

If the PDF contains data for more than 2 carriers, ask the user which two to compare.

Step 2: Detect the scenario

Based on the parsed data, determine which of these 3 scenarios applies:

Scenario A — Carrier vs Carrier (default) Two different carriers, both with similar coverage levels. This is the standard comparison.

  • Detected when: Two different carrier names with comparable coverage (both full coverage or both liability-only)

Scenario B — Full Coverage vs Liability-Only Same or different carriers, one option has comp+collision and the other has liability only.

  • Detected when: One quote includes comp/collision deductibles and the other does not (or shows "N/A" / $0 / "None")
  • Hero intro: "{Name}, full coverage vs liability-only for your {vehicles}. See what the extra protection costs."
  • Key Difference card: Explain what full coverage adds (comp+collision) and the cost difference
  • Best Value label changes to "Full Protection" on the full coverage card
  • Secondary card label: "Budget Option" instead of "Option A"

Scenario C — Single Carrier Quote Only one carrier/option in the PDF.

  • Detected when: Only one set of carrier data found in the PDF
  • Hero intro: "{Name}, here's your {Carrier} quote for your {vehicles}."
  • Section 2 becomes a single centered card (no side-by-side comparison)
  • No savings callout, no Key Difference section (section 3 removed — page has 5 sections)
  • Daily cost card still shows below the single card
  • Form carrier dropdown has only the one carrier pre-selected
  • Mobile sticky CTA: "{Carrier} — BIND NOW / ${down} DOWN"

If unsure which scenario, ask the user.

Step 3: Calculate derived data

For Scenario A (Carrier vs Carrier):

  • Savings: Higher 6-month total minus lower 6-month total
  • Best Value: Carrier with lower 6-month total
  • Daily cost: Best Value 6-month total ÷ 182, rounded to 2 decimals
  • Key Difference: The ONE meaningful coverage difference (usually comp deductible or a coverage gap)

For Scenario B (Full Coverage vs Liability):

  • Cost difference: Full coverage 6-month total minus liability-only 6-month total
  • Daily cost: Full coverage 6-month total ÷ 182, rounded to 2 decimals
  • Key Difference: What comp+collision covers (damage to YOUR car) and the price gap. Bold the dollar amounts.

For Scenario C (Single Carrier):

  • Daily cost: 6-month total ÷ 182, rounded to 2 decimals
  • No savings or comparison calculations needed

Step 4: Confirm data with user

Scenario A confirmation table:

Client: {name}
Address: {address}
Vehicles: {vehicle1}, {vehicle2}, ...
Scenario: Carrier vs Carrier

        Carrier A           Carrier B (Best Value)
Name:   {name}              {name}
Liab:   {limits}            {limits}
Comp:   ${ded}              ${ded}
Coll:   ${ded}              ${ded}
Rental: ${amt}/day          ${amt}/day
Towing: ${amt}              ${amt}
Down:   ${amount}           ${amount}
Mo:     ${amount}/mo        ${amount}/mo
6-Mo:   ${amount}           ${amount}
Saves:  —                   ${savings} vs {other}
Daily:  —                   ${daily}/day

Per-Vehicle Premiums (Carrier A / Carrier B):
  {vehicle1}: ${liab_A} / ${liab_B} (comp ded: ${ded_A} / ${ded_B})
  {vehicle2}: ${liab_A} / ${liab_B} (comp ded: ${ded_A} / ${ded_B})

Drivers:
  {driver1} — {relationship}, {yrs} yrs licensed, {Clean Record / Has Incidents}
  {driver2} — {relationship}, {yrs} yrs licensed, {Clean Record / Has Incidents}

Scenario B confirmation table:

Client: {name}
Address: {address}
Vehicles: {vehicle1}, {vehicle2}, ...
Scenario: Full Coverage vs Liability-Only

        Liability-Only      Full Coverage
Carrier:{name}              {name}
Liab:   {limits}            {limits}
Comp:   None                ${ded}
Coll:   None                ${ded}
Rental: ${amt}/day          ${amt}/day
Towing: ${amt}              ${amt}
Down:   ${amount}           ${amount}
Mo:     ${amount}/mo        ${amount}/mo
6-Mo:   ${amount}           ${amount}
Extra:  —                   +${difference} for full coverage
Daily:  —                   ${daily}/day

Per-Vehicle Premiums (Liability / With Comp):
  {vehicle1} ({usage}): ${liab} / ${comp} (comp ded: ${ded})
  {vehicle2} ({usage}): ${liab} / ${comp} (comp ded: ${ded})

Drivers:
  {driver1} — {relationship}, {yrs} yrs licensed, {Clean Record / Has Incidents}
  {driver2} — {relationship}, {yrs} yrs licensed, {Clean Record / Has Incidents}

Scenario C confirmation table:

Client: {name}
Address: {address}
Vehicles: {vehicle1}, {vehicle2}, ...
Scenario: Single Carrier Quote

Carrier: {name}
Liab:    {limits}
Comp:    ${ded}
Coll:    ${ded}
Rental:  ${amt}/day
Towing:  ${amt}
Down:    ${amount}
Mo:      ${amount}/mo
6-Mo:    ${amount}
Daily:   ${daily}/day

Per-Vehicle Premiums:
  {vehicle1} ({usage}): ${premium} (comp ded: ${ded})
  {vehicle2} ({usage}): ${premium} (comp ded: ${ded})

Drivers:
  {driver1} — {relationship}, {yrs} yrs licensed, {Clean Record / Has Incidents}
  {driver2} — {relationship}, {yrs} yrs licensed, {Clean Record / Has Incidents}

Ask: "Does this data look correct? Should I generate the quote page?"

Step 5: Generate the HTML

Build a self-contained HTML file following the Bill Layne Quote Template v3 design exactly. The template uses:

Tech stack: Self-contained HTML/CSS/JS, no external JS libraries Fonts: Google Fonts — Inter (prices), Outfit (body), Plus Jakarta Sans (headings) Icons: Font Awesome 6.5.1 CDN Favicon: https://fav.farm/🛡️

Agency constants (never change):

Social links (footer):

Color system (CSS variables):

  • --slate-950: #020617 (page bg)
  • --red-600: #dc2626 (primary accent, best value border, CTA buttons)
  • --emerald-400: #34d399 (money/savings text)
  • --emerald-500: #10b981 (checkmarks)
  • --amber-500: #f59e0b (stars, warnings)
  • --blue-400: #60a5fa (info icon)
  • Glass cards: rgba(255,255,255,0.03) bg, backdrop-filter blur(12px), border 1px rgba(255,255,255,0.08)

Design rules:

  • Best Value card: red border (2px solid --red-600), red glow shadow, larger price font, red CTA button
  • Secondary card: default glass card, slate CTA button
  • "Call me ASAP" = default contact time
  • Recommended carrier = default in carrier dropdown
  • Vehicle cards: glass card with red-tinted icon (fa-truck for trucks, fa-car for sedans, fa-car-side for SUVs/wagons), vehicle name in white, usage in slate-500, premium columns with comp/collision deductible labeled (e.g., "+ COMP ($100 DED)")
  • Driver cards: glass card centered, green shield icon (fa-user-shield), name in white, relationship + years licensed in slate-500, green pill badge "Clean Record" (emerald border+bg) or amber "Has Incidents" if applicable
  • Mobile footer padding: @media (max-width: 767px) { footer { padding-bottom: 7rem !important; } } — ensures social links clear the sticky CTA bar

Page structure by scenario:

Scenario A — Carrier vs Carrier (8 sections):

  1. Hero — Logo top-left (height:3.5rem), dark car hero image, "YOUR QUOTE" title, one-line intro
  2. Carrier Comparison — Two side-by-side cards + daily cost card below
  3. Key Difference — Single card, one paragraph, under 50 words
  4. Your Vehicles — Grid of glass cards (one per vehicle). Each card shows: vehicle icon, year/make/model, usage type, and per-carrier annual premiums with comp/collision deductible noted (e.g., "+ COMP ($100 DED)"). Footnote: "Annual per-vehicle premiums shown"
  5. Your Drivers — Two-column grid of glass cards. Each card shows: shield icon, driver name, relationship + years licensed, and a green "Clean Record" pill badge (or incidents if applicable). Footnote: discount details (e.g., "5-Year Accident Free • 3-Year Safe Driving discount applied")
  6. What Happens Next — 3 red-numbered steps
  7. Bind Form — Pre-filled name, carrier dropdown (best value default), contact time, mailto fallback
  8. Testimonial + Footer — 5-star review, Bill's photo, phone, email, social links, both offices

Scenario B — Full Coverage vs Liability (8 sections):

  1. Hero — Same layout, intro: "{Name}, full coverage vs liability-only for your {vehicles}."
  2. Coverage Comparison — Two side-by-side cards: "Budget Option" (liability) vs "Full Protection" (full coverage, red border). Full coverage card gets the red CTA. Show cost difference instead of savings.
  3. Key Difference — Explain what comp+collision covers: "Full coverage includes comprehensive and collision — if your car is damaged, stolen, or totaled, you're covered. Liability-only means you pay out of pocket. The difference is ${amount}/month."
  4. Your Vehicles — Same grid as Scenario A but columns show "Liability" vs "+ Comp (${ded} ded)" premiums per vehicle
  5. Your Drivers — Same as Scenario A
  6. What Happens Next — Same 3 steps
  7. Bind Form — Dropdown shows both options with coverage level labels
  8. Testimonial + Footer — Same as Scenario A

Scenario C — Single Carrier (7 sections):

  1. Hero — Same layout, intro: "{Name}, here's your {Carrier} quote for your {vehicles}."
  2. Your Quote — Single centered card (max-width:28rem, margin:auto) with carrier logo, coverage checklist, payment breakdown, red CTA button. Daily cost card below.
  3. Your Vehicles — Same grid with single premium column per vehicle, showing comp/collision deductible
  4. Your Drivers — Same as Scenario A
  5. What Happens Next — Same 3 steps
  6. Bind Form — Carrier dropdown has only the one carrier, pre-selected
  7. Testimonial + Footer — Same as Scenario A

Mobile sticky CTA — Fixed red bar at bottom (<768px):

  • Scenario A: "{Best Value Carrier} — BIND NOW / ${down} DOWN"
  • Scenario B: "Full Coverage — BIND NOW / ${down} DOWN"
  • Scenario C: "{Carrier} — BIND NOW / ${down} DOWN"

Includes: OG meta tags, Schema.org JSON-LD, smooth scroll, form with Google Sheets placeholder + mailto fallback

Step 6: Save the file

Save to: C:\Users\bill\My Drive (Bill@billlayneinsurance.com)\Client Folders\{Client Name}\Bill-Layne-Quote-{FirstName}-{LastName}-v3.html

Create the client folder if it doesn't exist.

Step 7: Preview and verify

Copy the file to the worktree as preview-quote.html, start the dev server with preview_start, and take a screenshot to show the user the result. Verify:

  • Logo visible and properly sized
  • Card(s) render with correct numbers
  • Daily cost shows correct $/day
  • Vehicle cards show all vehicles with per-option premiums and deductibles
  • Driver cards show all drivers with clean record / incidents badges
  • Form pre-fills correctly
  • Mobile sticky CTA present
  • Social links visible in footer (not hidden behind sticky CTA on mobile)

Tell the user: "Quote page saved to {path}. Upload to tiiny.host and text the link to {client name}."

Reference templates

  • Scenario B (with vehicles + drivers sections): C:\Users\bill\My Drive (Bill@billlayneinsurance.com)\Client Folders\THOMAS DEBOYACE\Bill-Layne-Quote-Thomas-Deboyace-v3.html
  • Scenario A (carrier vs carrier): C:\Users\bill\My Drive (Bill@billlayneinsurance.com)\Client Folders\Tremayne Buchanon\Bill-Layne-Quote-Tremayne-Buchanon-v3.html (note: does not have vehicles/drivers sections — use Deboyace as primary reference)
Skills enregistrées