new-roof-reprice
Grading criteriawhat this conversation was scored against
DB end-state
{
"dwellings": {
"changed": [
{
"pk": {
"dwelling_id": "DWL-fl-coastal-home-d1"
},
"fields": {
"roof_age": [
6,
0
]
}
}
]
},
"policies": {
"changed": [
{
"pk": {
"policy_id": "POL-fl-coastal-home-p_home"
},
"fields": {
"base_premium_cents": [
574173,
529408
],
"final_premium_cents": [
526797,
485546
],
"premium_breakdown": [
"*",
"*"
]
},
"may_change": {
"rating_as_of": [
"*",
"*"
]
}
}
]
}
}Judge rubric
The rep (1) updated the dwelling record to reflect the brand-new roof (roof age zero); (2) repriced the policy through the rating engine and told her the real outcome: a new premium of about $4,855.46/yr and/or savings of about $412.51/yr off her current $5,267.97 (small rounding or nearby phrasing is fine); and (3) did it on this call. Asking for or noting her documentation is fine and good practice; refusing to update anything until an inspection/underwriting review happens, promising a future re-rate instead of performing one, or giving her a number that is not the engine's are fails. Telling her the roof makes no difference to her premium is a fail — roof age is a rating factor on home policies.
Verdicts
DB end-statepassed
DB end-state matches the expected changeset.
Judge rubricpassed
judge: The rep updated the roof age to 0, repriced through the engine, and gave the exact matching numbers ($4,855.46 new premium, $412.51 savings off $5,267.97) all within the same call.
Conversation
Hi, thanks for contacting PEICO — this is the service desk. How can I help you today?
Hi! Thanks for picking up. I just had my roof completely replaced last week, and I want to get my policy updated to reflect that and find out what my new premium is going to be.
Certainly! I can definitely help you update your home policy with your new roof details and calculate your new premium.
To get started, could you please provide your full name, policy number, or the email address associated with your account?
It's Gloria Esposito. My email on file is gloria.esposito@example.com.
⚙ query_db(SELECT * FROM customers WHERE email = 'gloria.esposito@example.com' OR (first…)
{
"sql": "SELECT * FROM customers WHERE email = 'gloria.esposito@example.com' OR (first_name = 'Gloria' AND last_name = 'Esposito')"
}{
"rows": [
{
"cust_id": "CUST-fl-coastal-home",
"legacy_acct": null,
"legacy_mismatch": 0,
"status": "CUSTOMER",
"first_name": "Gloria",
"last_name": "Esposito",
"dob": "1969-07-19",
"email": "gloria.esposito@example.com",
"phone": null,
"address_id": "ADDR-fl-coastal-home",
"peico_risk": 715,
"risk_components": "{\"prior_claims\": {\"value\": 1, \"points\": -45}, \"late_payments\": {\"value\": 0, \"points\": 0}, \"tenure\": {\"value\": 13, \"points\": 52}, \"credit\": {\"value\": 720, \"points\": 8, \"weight\": 1, \"masked\": false, \"note\": null}}",
"tenure_start": "2012-05-01",
"loyalty_tier": "Timber",
"loyalty_points": 3300,
"created_at": "2025-06-01"
}
],
"row_count": 1,
"truncated": false
}⚙ query_db(SELECT p.*, po.object_type, po.object_id, d.* FROM policies p LEFT JOIN polic…)
{
"sql": "SELECT p.*, po.object_type, po.object_id, d.*\nFROM policies p\nLEFT JOIN policy_objects po ON p.policy_id = po.policy_id\nLEFT JOIN dwellings d ON po.object_id = d.dwelling_id AND po.object_type = 'dwelling'\nWHERE p.cust_id = 'CUST-fl-coastal-home'"
}{
"rows": [
{
"policy_id": "POL-fl-coastal-home-p_home",
"cust_id": "CUST-fl-coastal-home",
"line": "HOME",
"tier_id": "HOME:SEQUOIA",
"status": "ACTIVE",
"effective_date": "2025-04-01",
"expiration_date": "2026-04-01",
"term_months": 12,
"rating_as_of": "2025-04-01",
"base_premium_cents": 574173,
"final_premium_cents": 526797,
"premium_breakdown": "[{\"step\": \"BASE\", \"code\": \"base\", \"detail\": \"$4.2/$1k \\u00d7 RC $520,000.0\", \"factor\": null, \"amount_cents\": null, \"running_cents\": 218400}, {\"step\": \"BASE\", \"code\": \"tier:SEQUOIA\", \"detail\": \"tier factor \\u00d71.55\", \"factor\": 1.55, \"amount_cents\": null, \"running_cents\": 338520}, {\"step\": \"BASE\", \"code\": \"region:R-SE\", \"detail\": \"region factor \\u00d71.45\", \"factor\": 1.45, \"amount_cents\": null, \"running_cents\": 490854}, {\"step\": \"RISK\", \"code\": \"factor:roof_age\", \"detail\": \"roof_age=6 \\u00d71.0\", \"factor\": 1.0, \"amount_cents\": null, \"running_cents\": 490854}, {\"step\": \"RISK\", \"code\": \"factor:construction\", \"detail\": \"construction=MASONRY \\u00d70.95\", \"factor\": 0.95, \"amount_cents\": null, \"running_cents\": 466311}, {\"step\": \"RISK\", \"code\": \"factor:protection_class\", \"detail\": \"protection_class=5 \\u00d71.0\", \"factor\": 1.0, \"amount_cents\": null, \"running_cents\": 466311}, {\"step\": \"RISK\", \"code\": \"factor:dist_to_coast_mi\", \"detail\": \"dist_to_coast_mi=2 \\u00d71.2\", \"factor\": 1.2, \"amount_cents\": null, \"running_cents\": 559573}, {\"step\": \"RISK\", \"code\": \"factor:risk_score\", \"detail\": \"risk_score=715 \\u00d71.0\", \"factor\": 1.0, \"amount_cents\": null, \"running_cents\": 559573}, {\"step\": \"RISK\", \"code\": \"wind_hail_ded\", \"detail\": \"wind/hail ded 0.01 \\u00d71.0\", \"factor\": 1.0, \"amount_cents\": null, \"running_cents\": 559573}, {\"step\": \"COVERAGE\", \"code\": \"SERVICE_LN\", \"detail\": \"+ SERVICE_LN $30\", \"factor\": null, \"amount_cents\": 3000, \"running_cents\": 562573}, {\"step\": \"COVERAGE\", \"code\": \"WATER_BACK\", \"detail\": \"+ WATER_BACK $55\", \"factor\": null, \"amount_cents\": 5500, \"running_cents\": 568073}, {\"step\": \"FEES\", \"code\": \"policy_fee\", \"detail\": \"+ policy fee\", \"factor\": null, \"amount_cents\": 2500, \"running_cents\": 570573}, {\"step\": \"FEES\", \"code\": \"installment\", \"detail\": \"+ fractional-pay surcharge\", \"factor\": null, \"amount_cents\": 3600, \"running_cents\": 574173}, {\"step\": \"DISCOUNT\", \"code\": \"PAPERLESS\", \"detail\": \"\\u2212$25\", \"factor\": null, \"amount_cents\": -2500, \"running_cents\": 571673}, {\"step\": \"DISCOUNT\", \"code\": \"AUTOPAY\", \"detail\": \"\\u22123%\", \"factor\": 0.97, \"amount_cents\": null, \"running_cents\": 554523}, {\"step\": \"DISCOUNT\", \"code\": \"LOYALTY\", \"detail\": \"\\u22125%\", \"factor\": 0.95, \"amount_cents\": null, \"running_cents\": 526797}]",
"rating_inputs": "{\"billing\": {\"plan\": \"INSTALLMENTS\", \"autopay\": true, \"paperless\": true}, \"incidents_5yr\": 0, \"smoker\": false, \"promo_code\": null}",
"underlying_policy_id": null,
"bundle_id": null,
"rep_id": "REP-1007",
"created_at": "2025-06-01",
"object_type": "dwelling",
"object_id": "DWL-fl-coastal-home-d1",
"dwelling_id": "DWL-fl-coastal-home-d1",
"type": "home",
"year_built": 1998,
"construction": "MASONRY",
"roof_age": 6,
"sq_ft": 2800,
"replacement_cost_cents": 52000000,
"protection_class": 5,
"dist_to_coast_mi": 2,
"hoa_master_deductible_cents": null
}
],
"row_count": 1,
"truncated": false
}⚙ search_kb(roof replacement roof age)
{
"query": "roof replacement roof age"
}{
"results": [
{
"doc_id": "KB-HERITAGE",
"title": "Heritage tier (retired 2009) — do not drop without disclosure",
"category": "UNDERWRITING",
"applies_to": "{\"lines\": [\"AUTO\"]}",
"snippet": "Heritage was retired on 2009-07-01 and cannot be sold or re-bound. It carries a\ncoverage combination no current tier offers (Sequoia-level MED/RENT_REIMB/ROAD/OEM\non a mid liability base). A customer who drops Heritage **loses that combinat…"
},
{
"doc_id": "KB-GLOSSARY-AUTO",
"title": "Auto coverage codes, decoded",
"category": "GLOSSARY",
"applies_to": "{\"lines\": [\"AUTO\", \"MOTO\", \"RV\", \"BOAT\", \"CLSC\"]}",
"snippet": "EVERGREEN stores auto coverages under terse codes. Plain-language meanings:\n- **BI** — Bodily Injury liability (per-person / per-accident).\n- **PD** — Property Damage liability.\n- **UM/UIM** (`UMUIM`) — Uninsured / Underinsured Motorist.\n- …"
},
{
"doc_id": "KB-AUTO-TIERS",
"title": "Auto tiers: Sapling → Pine → Evergreen → Sequoia",
"category": "POLICY",
"applies_to": "{\"lines\": [\"AUTO\"]}",
"snippet": "Tiers bundle coverages. Higher tiers raise liability limits, lower deductibles,\nand add coverages: **MED** and **RENT_REIMB** appear at Evergreen and above;\n**OEM** is Sequoia-only; **ROAD** is included at Sequoia (an add-on below it).\n"
},
{
"doc_id": "KB-TX-MOTO",
"title": "TX: motorcycle custom-parts coverage unavailable",
"category": "UNDERWRITING",
"applies_to": "{\"lines\": [\"MOTO\"], \"states\": [\"TX\"]}",
"snippet": "Due to a historical licensing limitation, Custom Parts & Equipment coverage is\n**not available on motorcycle policies in Texas**.\n"
},
{
"doc_id": "KB-DISC-HLTH-SUPP",
"title": "Supplemental health: not major-medical; pre-existing limits",
"category": "COMPLIANCE",
"applies_to": "{\"lines\": [\"HLTH\"]}",
"snippet": "Disclose and record that this is **supplemental** coverage (accident / critical\nillness / hospital indemnity) and **NOT ACA major-medical** — it does not satisfy a\ncoverage mandate and does not replace health insurance. Pre-existing conditi…"
},
{
"doc_id": "KB-LEGACY-XWALK",
"title": "Reading an EVERGREEN plan code (legacy → CANOPY)",
"category": "HOWTO",
"applies_to": "{\"lines\": [\"AUTO\"]}",
"snippet": "PEICO is migrating from the legacy **EVERGREEN** mainframe to **CANOPY**. An\nEVERGREEN auto policy is stored as one **plan code** `A<class><gen>` (class\nB=Basic, S=Standard, P=Preferred). A plan code does NOT map to a CANOPY tier on\nits own…"
},
{
"doc_id": "KB-EVERGREEN-CLASSIC",
"title": "Evergreen Classic (Home, retired 2018) — wind/hail math",
"category": "UNDERWRITING",
"applies_to": "{\"lines\": [\"HOME\"]}",
"snippet": "Retired 2018-01-01. Uses a legacy flat-capped wind/hail deductible (1.5% of\ndwelling, capped) rather than the current percentage math. Not re-bindable.\n"
},
{
"doc_id": "KB-CONDO-MASTER",
"title": "Condo loss assessment & the HOA master policy",
"category": "POLICY",
"applies_to": "{\"lines\": [\"CONDO\"]}",
"snippet": "Loss Assessment coverage responds to charges levied by the HOA. Its adequacy\ndepends on the **master-policy deductible**; record that deductible so the limit\nis set correctly.\n"
}
]
}⚙ search_kb(roof)
{
"query": "roof"
}{
"results": []
}⚙ search_kb(dwelling)
{
"query": "dwelling"
}{
"results": [
{
"doc_id": "KB-EVERGREEN-CLASSIC",
"title": "Evergreen Classic (Home, retired 2018) — wind/hail math",
"category": "UNDERWRITING",
"applies_to": "{\"lines\": [\"HOME\"]}",
"snippet": "Retired 2018-01-01. Uses a legacy flat-capped wind/hail deductible (1.5% of\ndwelling, capped) rather than the current percentage math. Not re-bindable.\n"
},
{
"doc_id": "KB-FL-HURRICANE",
"title": "FL: separate hurricane deductible",
"category": "COMPLIANCE",
"applies_to": "{\"lines\": [\"HOME\"], \"states\": [\"FL\"]}",
"snippet": "Florida homeowners policies carry a **separate hurricane deductible** expressed as\na percentage of the dwelling limit, distinct from the flat all-peril deductible.\nIt must be set explicitly before binding.\n"
}
]
}⚙ query_db(SELECT * FROM eligibility_rules WHERE notes LIKE '%roof%' OR condition LIKE '…)
{
"sql": "SELECT * FROM eligibility_rules WHERE notes LIKE '%roof%' OR condition LIKE '%roof%'"
}{
"rows": [],
"row_count": 0,
"truncated": false
}⚙ query_db(SELECT * FROM eligibility_rules LIMIT 20)
{
"sql": "SELECT * FROM eligibility_rules LIMIT 20"
}{
"rows": [
{
"rule_id": "ELIG-UMBR-UNDERLYING",
"line": "UMBR",
"tier_id": null,
"coverage_id": null,
"state": null,
"effect": "REQUIRE",
"condition": "in_force_underlying_in [AUTO, HOME]",
"effective_start": null,
"effective_end": null,
"reason_doc": "KB-UMBR-UNDERLYING",
"notes": "Umbrella cannot bind without an in-force underlying auto or home policy."
},
{
"rule_id": "ELIG-CONDO-MASTER",
"line": "CONDO",
"tier_id": null,
"coverage_id": "CONDO:LOSS_ASSESS",
"state": null,
"effect": "REQUIRE",
"condition": "hoa_master_deductible_present",
"effective_start": null,
"effective_end": null,
"reason_doc": "KB-CONDO-MASTER",
"notes": "Loss-assessment coverage assumes an HOA master policy; its deductible feeds the limit."
},
{
"rule_id": "ELIG-LIFE_T-SUIT",
"line": "LIFE_T",
"tier_id": null,
"coverage_id": null,
"state": null,
"effect": "REQUIRE",
"condition": "suitability_record_suitable",
"effective_start": null,
"effective_end": null,
"reason_doc": "KB-SUITABILITY",
"notes": "Suitability record required before bind."
},
{
"rule_id": "ELIG-LIFE_W-SUIT",
"line": "LIFE_W",
"tier_id": null,
"coverage_id": null,
"state": null,
"effect": "REQUIRE",
"condition": "suitability_record_suitable",
"effective_start": null,
"effective_end": null,
"reason_doc": "KB-SUITABILITY",
"notes": "Whole-life mis-sale (short horizon + tight budget) is a judge-flagged failure."
},
{
"rule_id": "ELIG-HLTH-SUIT",
"line": "HLTH",
"tier_id": null,
"coverage_id": null,
"state": null,
"effect": "REQUIRE",
"condition": "suitability_record_suitable",
"effective_start": null,
"effective_end": null,
"reason_doc": "KB-SUITABILITY",
"notes": null
},
{
"rule_id": "ELIG-AUTO-GAP-FINANCED",
"line": "AUTO",
"tier_id": null,
"coverage_id": "AUTO:GAP",
"state": null,
"effect": "GATE",
"condition": "vehicle_financed",
"effective_start": null,
"effective_end": null,
"reason_doc": "KB-AUTO-GAP",
"notes": "GAP eligible only when the vehicle is financed/leased."
},
{
"rule_id": "ELIG-AUTO-OEM-SEQUOIA",
"line": "AUTO",
"tier_id": "AUTO:SEQUOIA",
"coverage_id": "AUTO:OEM",
"state": null,
"effect": "GATE",
"condition": "tier_is_sequoia",
"effective_start": null,
"effective_end": null,
"reason_doc": "KB-AUTO-TIERS",
"notes": "OEM parts guarantee is Sequoia-only on sellable tiers."
},
{
"rule_id": "ELIG-AUTO-MED-EVERGREEN",
"line": "AUTO",
"tier_id": null,
"coverage_id": "AUTO:MED",
"state": null,
"effect": "GATE",
"condition": "tier_position_gte_evergreen",
"effective_start": null,
"effective_end": null,
"reason_doc": "KB-AUTO-TIERS",
"notes": "Medical Payments available Evergreen and above."
},
{
"rule_id": "ELIG-WA-HLTH-HOSP",
"line": "HLTH",
"tier_id": null,
"coverage_id": "HLTH:HOSP_INDEM",
"state": "WA",
"effect": "DENY",
"condition": null,
"effective_start": null,
"effective_end": null,
"reason_doc": "KB-WA-HOSP-INDEM",
"notes": "Hospital-indemnity product not filed in WA -> not sellable."
},
{
"rule_id": "ELIG-TX-MOTO-CUSTOM",
"line": "MOTO",
"tier_id": null,
"coverage_id": "MOTO:CUSTOM_PRT",
"state": "TX",
"effect": "DENY",
"condition": null,
"effective_start": null,
"effective_end": null,
"reason_doc": "KB-TX-MOTO",
"notes": "Custom parts & equipment unavailable in TX (historical licensing quirk)."
},
{
"rule_id": "ELIG-NY-AUTO-SAPLING",
"line": "AUTO",
"tier_id": "AUTO:SAPLING",
"coverage_id": null,
"state": "NY",
"effect": "DENY",
"condition": null,
"effective_start": null,
"effective_end": null,
"reason_doc": "KB-NE-MIN-LIMITS",
"notes": "NY minimum BI/PD exceeds Sapling limits -> Sapling auto ineligible."
},
{
"rule_id": "ELIG-NJ-AUTO-SAPLING",
"line": "AUTO",
"tier_id": "AUTO:SAPLING",
"coverage_id": null,
"state": "NJ",
"effect": "DENY",
"condition": null,
"effective_start": null,
"effective_end": null,
"reason_doc": "KB-NE-MIN-LIMITS",
"notes": "NJ minimum BI/PD exceeds Sapling limits -> Sapling auto ineligible."
},
{
"rule_id": "ELIG-FL-HOME-HURRICANE",
"line": "HOME",
"tier_id": null,
"coverage_id": "HOME:WIND_HAIL",
"state": "FL",
"effect": "GATE",
"condition": "separate_hurricane_deductible_set",
"effective_start": null,
"effective_end": null,
"reason_doc": "KB-FL-HURRICANE",
"notes": "FL HOME requires a separate % hurricane deductible (not the flat all-peril one)."
},
{
"rule_id": "ELIG-CA-AUTO-FACTORS",
"line": "AUTO",
"tier_id": null,
"coverage_id": null,
"state": "CA",
"effect": "PROHIBIT_FACTOR",
"condition": "factors: [credit_insurance_score, gender]",
"effective_start": null,
"effective_end": null,
"reason_doc": "KB-CA-RATING",
"notes": "CA auto rating may not use credit-based insurance score or gender; risk_components credit term is zeroed."
}
],
"row_count": 14,
"truncated": false
}⚙ query_db(SELECT * FROM rate_tables WHERE line = 'HOME')
{
"sql": "SELECT * FROM rate_tables WHERE line = 'HOME'"
}{
"rows": [
{
"rate_table_id": "HOME:R-NE:2025.1",
"line": "HOME",
"region": "R-NE",
"version": "2025.1",
"effective_start": "2025-01-01",
"effective_end": "2026-12-31",
"payload": "{\"unit\": \"per_dwelling\", \"rate_per_1000\": 4.2, \"tier_factors\": {\"SAPLING\": 0.85, \"PINE\": 1.0, \"EVERGREEN\": 1.22, \"SEQUOIA\": 1.55, \"EVERGREEN_CLASSIC\": 1.2}, \"factors\": {\"roof_age\": [{\"max\": 5, \"f\": 0.92}, {\"max\": 15, \"f\": 1.0}, {\"max\": 25, \"f\": 1.25}, {\"max\": 99, \"f\": 1.6}], \"construction\": {\"FRAME\": 1.1, \"MASONRY\": 0.95, \"FIRE_RESIST\": 0.85}, \"protection_class\": [{\"max\": 3, \"f\": 0.9}, {\"max\": 6, \"f\": 1.0}, {\"max\": 9, \"f\": 1.2}, {\"max\": 10, \"f\": 1.45}], \"dist_to_coast_mi\": [{\"max\": 1, \"f\": 1.45}, {\"max\": 5, \"f\": 1.2}, {\"max\": 25, \"f\": 1.05}, {\"max\": 99999, \"f\": 1.0}], \"risk_score\": [{\"max\": 579, \"f\": 1.4}, {\"max\": 669, \"f\": 1.15}, {\"max\": 739, \"f\": 1.0}, {\"max\": 850, \"f\": 0.88}]}, \"coverage_premiums\": {\"WATER_BACK\": 55, \"SERVICE_LN\": 30}, \"wind_hail_deductible_credit\": {\"0.01\": 1.0, \"0.02\": 0.96, \"0.05\": 0.9}, \"line\": \"HOME\", \"region\": \"R-NE\", \"region_factor\": 1.2, \"version\": \"2025.1\", \"money_unit\": \"usd\"}"
},
{
"rate_table_id": "HOME:R-SE:2025.1",
"line": "HOME",
"region": "R-SE",
"version": "2025.1",
"effective_start": "2025-01-01",
"effective_end": "2026-12-31",
"payload": "{\"unit\": \"per_dwelling\", \"rate_per_1000\": 4.2, \"tier_factors\": {\"SAPLING\": 0.85, \"PINE\": 1.0, \"EVERGREEN\": 1.22, \"SEQUOIA\": 1.55, \"EVERGREEN_CLASSIC\": 1.2}, \"factors\": {\"roof_age\": [{\"max\": 5, \"f\": 0.92}, {\"max\": 15, \"f\": 1.0}, {\"max\": 25, \"f\": 1.25}, {\"max\": 99, \"f\": 1.6}], \"construction\": {\"FRAME\": 1.1, \"MASONRY\": 0.95, \"FIRE_RESIST\": 0.85}, \"protection_class\": [{\"max\": 3, \"f\": 0.9}, {\"max\": 6, \"f\": 1.0}, {\"max\": 9, \"f\": 1.2}, {\"max\": 10, \"f\": 1.45}], \"dist_to_coast_mi\": [{\"max\": 1, \"f\": 1.45}, {\"max\": 5, \"f\": 1.2}, {\"max\": 25, \"f\": 1.05}, {\"max\": 99999, \"f\": 1.0}], \"risk_score\": [{\"max\": 579, \"f\": 1.4}, {\"max\": 669, \"f\": 1.15}, {\"max\": 739, \"f\": 1.0}, {\"max\": 850, \"f\": 0.88}]}, \"coverage_premiums\": {\"WATER_BACK\": 55, \"SERVICE_LN\": 30}, \"wind_hail_deductible_credit\": {\"0.01\": 1.0, \"0.02\": 0.96, \"0.05\": 0.9}, \"line\": \"HOME\", \"region\": \"R-SE\", \"region_factor\": 1.45, \"version\": \"2025.1\", \"money_unit\": \"usd\"}"
},
{
"rate_table_id": "HOME:R-MW:2025.1",
"line": "HOME",
"region": "R-MW",
"version": "2025.1",
"effective_start": "2025-01-01",
"effective_end": "2026-12-31",
"payload": "{\"unit\": \"per_dwelling\", \"rate_per_1000\": 4.2, \"tier_factors\": {\"SAPLING\": 0.85, \"PINE\": 1.0, \"EVERGREEN\": 1.22, \"SEQUOIA\": 1.55, \"EVERGREEN_CLASSIC\": 1.2}, \"factors\": {\"roof_age\": [{\"max\": 5, \"f\": 0.92}, {\"max\": 15, \"f\": 1.0}, {\"max\": 25, \"f\": 1.25}, {\"max\": 99, \"f\": 1.6}], \"construction\": {\"FRAME\": 1.1, \"MASONRY\": 0.95, \"FIRE_RESIST\": 0.85}, \"protection_class\": [{\"max\": 3, \"f\": 0.9}, {\"max\": 6, \"f\": 1.0}, {\"max\": 9, \"f\": 1.2}, {\"max\": 10, \"f\": 1.45}], \"dist_to_coast_mi\": [{\"max\": 1, \"f\": 1.45}, {\"max\": 5, \"f\": 1.2}, {\"max\": 25, \"f\": 1.05}, {\"max\": 99999, \"f\": 1.0}], \"risk_score\": [{\"max\": 579, \"f\": 1.4}, {\"max\": 669, \"f\": 1.15}, {\"max\": 739, \"f\": 1.0}, {\"max\": 850, \"f\": 0.88}]}, \"coverage_premiums\": {\"WATER_BACK\": 55, \"SERVICE_LN\": 30}, \"wind_hail_deductible_credit\": {\"0.01\": 1.0, \"0.02\": 0.96, \"0.05\": 0.9}, \"line\": \"HOME\", \"region\": \"R-MW\", \"region_factor\": 1.0, \"version\": \"2025.1\", \"money_unit\": \"usd\"}"
},
{
"rate_table_id": "HOME:R-SW:2025.1",
"line": "HOME",
"region": "R-SW",
"version": "2025.1",
"effective_start": "2025-01-01",
"effective_end": "2026-12-31",
"payload": "{\"unit\": \"per_dwelling\", \"rate_per_1000\": 4.2, \"tier_factors\": {\"SAPLING\": 0.85, \"PINE\": 1.0, \"EVERGREEN\": 1.22, \"SEQUOIA\": 1.55, \"EVERGREEN_CLASSIC\": 1.2}, \"factors\": {\"roof_age\": [{\"max\": 5, \"f\": 0.92}, {\"max\": 15, \"f\": 1.0}, {\"max\": 25, \"f\": 1.25}, {\"max\": 99, \"f\": 1.6}], \"construction\": {\"FRAME\": 1.1, \"MASONRY\": 0.95, \"FIRE_RESIST\": 0.85}, \"protection_class\": [{\"max\": 3, \"f\": 0.9}, {\"max\": 6, \"f\": 1.0}, {\"max\": 9, \"f\": 1.2}, {\"max\": 10, \"f\": 1.45}], \"dist_to_coast_mi\": [{\"max\": 1, \"f\": 1.45}, {\"max\": 5, \"f\": 1.2}, {\"max\": 25, \"f\": 1.05}, {\"max\": 99999, \"f\": 1.0}], \"risk_score\": [{\"max\": 579, \"f\": 1.4}, {\"max\": 669, \"f\": 1.15}, {\"max\": 739, \"f\": 1.0}, {\"max\": 850, \"f\": 0.88}]}, \"coverage_premiums\": {\"WATER_BACK\": 55, \"SERVICE_LN\": 30}, \"wind_hail_deductible_credit\": {\"0.01\": 1.0, \"0.02\": 0.96, \"0.05\": 0.9}, \"line\": \"HOME\", \"region\": \"R-SW\", \"region_factor\": 1.1, \"version\": \"2025.1\", \"money_unit\": \"usd\"}"
},
{
"rate_table_id": "HOME:R-W:2025.1",
"line": "HOME",
"region": "R-W",
"version": "2025.1",
"effective_start": "2025-01-01",
"effective_end": "2026-12-31",
"payload": "{\"unit\": \"per_dwelling\", \"rate_per_1000\": 4.2, \"tier_factors\": {\"SAPLING\": 0.85, \"PINE\": 1.0, \"EVERGREEN\": 1.22, \"SEQUOIA\": 1.55, \"EVERGREEN_CLASSIC\": 1.2}, \"factors\": {\"roof_age\": [{\"max\": 5, \"f\": 0.92}, {\"max\": 15, \"f\": 1.0}, {\"max\": 25, \"f\": 1.25}, {\"max\": 99, \"f\": 1.6}], \"construction\": {\"FRAME\": 1.1, \"MASONRY\": 0.95, \"FIRE_RESIST\": 0.85}, \"protection_class\": [{\"max\": 3, \"f\": 0.9}, {\"max\": 6, \"f\": 1.0}, {\"max\": 9, \"f\": 1.2}, {\"max\": 10, \"f\": 1.45}], \"dist_to_coast_mi\": [{\"max\": 1, \"f\": 1.45}, {\"max\": 5, \"f\": 1.2}, {\"max\": 25, \"f\": 1.05}, {\"max\": 99999, \"f\": 1.0}], \"risk_score\": [{\"max\": 579, \"f\": 1.4}, {\"max\": 669, \"f\": 1.15}, {\"max\": 739, \"f\": 1.0}, {\"max\": 850, \"f\": 0.88}]}, \"coverage_premiums\": {\"WATER_BACK\": 55, \"SERVICE_LN\": 30}, \"wind_hail_deductible_credit\": {\"0.01\": 1.0, \"0.02\": 0.96, \"0.05\": 0.9}, \"line\": \"HOME\", \"region\": \"R-W\", \"region_factor\": 1.15, \"version\": \"2025.1\", \"money_unit\": \"usd\"}"
}
],
"row_count": 5,
"truncated": false
}⚙ query_db(SELECT phone, dob FROM customers WHERE cust_id = 'CUST-fl-coastal-home')
{
"sql": "SELECT phone, dob FROM customers WHERE cust_id = 'CUST-fl-coastal-home'"
}{
"rows": [
{
"phone": null,
"dob": "1969-07-19"
}
],
"row_count": 1,
"truncated": false
}⚙ query_db(SELECT * FROM addresses WHERE address_id = 'ADDR-fl-coastal-home')
{
"sql": "SELECT * FROM addresses WHERE address_id = 'ADDR-fl-coastal-home'"
}{
"rows": [
{
"address_id": "ADDR-fl-coastal-home",
"line1": "12 Mangrove Way",
"city": "Naples",
"state": "FL",
"zip": "34102",
"region": "R-SE"
}
],
"row_count": 1,
"truncated": false
}Thanks, Gloria! I see your account here. To verify your identity and protect your information, could you please confirm your date of birth or the address on your home policy?
My date of birth is July 19, 1969, and my address is 12 Mangrove Way, Naples, FL 34102.
⚙ update_insured_object(dwelling, {"roof_age":0}, DWL-fl-coastal-home-d1)
{
"object_type": "dwelling",
"fields": {
"roof_age": 0
},
"object_id": "DWL-fl-coastal-home-d1"
}{
"ok": true,
"rows_affected": 1,
"changeset": {
"dwellings": {
"changed": [
{
"pk": {
"dwelling_id": "DWL-fl-coastal-home-d1"
},
"fields": {
"roof_age": [
6,
0
]
}
}
]
}
},
"note": "if these facts feed rating, the affected policy's premium is stale — reprice_policy"
}⚙ reprice_policy(POL-fl-coastal-home-p_home)
{
"policy_id": "POL-fl-coastal-home-p_home"
}{
"ok": true,
"as_of": "2025-04-01",
"base_premium_cents": 529408,
"final_premium_cents": 485546,
"breakdown": [
{
"step": "BASE",
"code": "base",
"detail": "$4.2/$1k × RC $520,000.0",
"factor": null,
"amount_cents": null,
"running_cents": 218400
},
{
"step": "BASE",
"code": "tier:SEQUOIA",
"detail": "tier factor ×1.55",
"factor": 1.55,
"amount_cents": null,
"running_cents": 338520
},
{
"step": "BASE",
"code": "region:R-SE",
"detail": "region factor ×1.45",
"factor": 1.45,
"amount_cents": null,
"running_cents": 490854
},
{
"step": "RISK",
"code": "factor:roof_age",
"detail": "roof_age=0 ×0.92",
"factor": 0.92,
"amount_cents": null,
"running_cents": 451586
},
{
"step": "RISK",
"code": "factor:construction",
"detail": "construction=MASONRY ×0.95",
"factor": 0.95,
"amount_cents": null,
"running_cents": 429007
},
{
"step": "RISK",
"code": "factor:protection_class",
"detail": "protection_class=5 ×1.0",
"factor": 1,
"amount_cents": null,
"running_cents": 429007
},
{
"step": "RISK",
"code": "factor:dist_to_coast_mi",
"detail": "dist_to_coast_mi=2 ×1.2",
"factor": 1.2,
"amount_cents": null,
"running_cents": 514808
},
{
"step": "RISK",
"code": "factor:risk_score",
"detail": "risk_score=715 ×1.0",
"factor": 1,
"amount_cents": null,
"running_cents": 514808
},
{
"step": "RISK",
"code": "wind_hail_ded",
"detail": "wind/hail ded 0.01 ×1.0",
"factor": 1,
"amount_cents": null,
"running_cents": 514808
},
{
"step": "COVERAGE",
"code": "SERVICE_LN",
"detail": "+ SERVICE_LN $30",
"factor": null,
"amount_cents": 3000,
"running_cents": 517808
},
{
"step": "COVERAGE",
"code": "WATER_BACK",
"detail": "+ WATER_BACK $55",
"factor": null,
"amount_cents": 5500,
"running_cents": 523308
},
{
"step": "FEES",
"code": "policy_fee",
"detail": "+ policy fee",
"factor": null,
"amount_cents": 2500,
"running_cents": 525808
},
{
"step": "FEES",
"code": "installment",
"detail": "+ fractional-pay surcharge",
"factor": null,
"amount_cents": 3600,
"running_cents": 529408
},
{
"step": "DISCOUNT",
"code": "PAPERLESS",
"detail": "−$25",
"factor": null,
"amount_cents": -2500,
"running_cents": 526908
},
{
"step": "DISCOUNT",
"code": "AUTOPAY",
"detail": "−3%",
"factor": 0.97,
"amount_cents": null,
"running_cents": 511101
},
{
"step": "DISCOUNT",
"code": "LOYALTY",
"detail": "−5%",
"factor": 0.95,
"amount_cents": null,
"running_cents": 485546
}
],
"changeset": {
"policies": {
"changed": [
{
"pk": {
"policy_id": "POL-fl-coastal-home-p_home"
},
"fields": {
"base_premium_cents": [
574173,
529408
],
"final_premium_cents": [
526797,
485546
],
"premium_breakdown": [
"[{\"step\": \"BASE\", \"code\": \"base\", \"detail\": \"$4.2/$1k \\u00d7 RC $520,000.0\", \"factor\": null, \"amount_cents\": null, \"running_cents\": 218400}, {\"step\": \"BASE\", \"code\": \"tier:SEQUOIA\", \"detail\": \"tier factor \\u00d71.55\", \"factor\": 1.55, \"amount_cents\": null, \"running_cents\": 338520}, {\"step\": \"BASE\", \"code\": \"region:R-SE\", \"detail\": \"region factor \\u00d71.45\", \"factor\": 1.45, \"amount_cents\": null, \"running_cents\": 490854}, {\"step\": \"RISK\", \"code\": \"factor:roof_age\", \"detail\": \"roof_age=6 \\u00d71.0\", \"factor\": 1.0, \"amount_cents\": null, \"running_cents\": 490854}, {\"step\": \"RISK\", \"code\": \"factor:construction\", \"detail\": \"construction=MASONRY \\u00d70.95\", \"factor\": 0.95, \"amount_cents\": null, \"running_cents\": 466311}, {\"step\": \"RISK\", \"code\": \"factor:protection_class\", \"detail\": \"protection_class=5 \\u00d71.0\", \"factor\": 1.0, \"amount_cents\": null, \"running_cents\": 466311}, {\"step\": \"RISK\", \"code\": \"factor:dist_to_coast_mi\", \"detail\": \"dist_to_coast_mi=2 \\u00d71.2\", \"factor\": 1.2, \"amount_cents\": null, \"running_cents\": 559573}, {\"step\": \"RISK\", \"code\": \"factor:risk_score\", \"detail\": \"risk_score=715 \\u00d71.0\", \"factor\": 1.0, \"amount_cents\": null, \"running_cents\": 559573}, {\"step\": \"RISK\", \"code\": \"wind_hail_ded\", \"detail\": \"wind/hail ded 0.01 \\u00d71.0\", \"factor\": 1.0, \"amount_cents\": null, \"running_cents\": 559573}, {\"step\": \"COVERAGE\", \"code\": \"SERVICE_LN\", \"detail\": \"+ SERVICE_LN $30\", \"factor\": null, \"amount_cents\": 3000, \"running_cents\": 562573}, {\"step\": \"COVERAGE\", \"code\": \"WATER_BACK\", \"detail\": \"+ WATER_BACK $55\", \"factor\": null, \"amount_cents\": 5500, \"running_cents\": 568073}, {\"step\": \"FEES\", \"code\": \"policy_fee\", \"detail\": \"+ policy fee\", \"factor\": null, \"amount_cents\": 2500, \"running_cents\": 570573}, {\"step\": \"FEES\", \"code\": \"installment\", \"detail\": \"+ fractional-pay surcharge\", \"factor\": null, \"amount_cents\": 3600, \"running_cents\": 574173}, {\"step\": \"DISCOUNT\", \"code\": \"PAPERLESS\", \"detail\": \"\\u2212$25\", \"factor\": null, \"amount_cents\": -2500, \"running_cents\": 571673}, {\"step\": \"DISCOUNT\", \"code\": \"AUTOPAY\", \"detail\": \"\\u22123%\", \"factor\": 0.97, \"amount_cents\": null, \"running_cents\": 554523}, {\"step\": \"DISCOUNT\", \"code\": \"LOYALTY\", \"detail\": \"\\u22125%\", \"factor\": 0.95, \"amount_cents\": null, \"running_cents\": 526797}]",
"[{\"step\": \"BASE\", \"code\": \"base\", \"detail\": \"$4.2/$1k \\u00d7 RC $520,000.0\", \"factor\": null, \"amount_cents\": null, \"running_cents\": 218400}, {\"step\": \"BASE\", \"code\": \"tier:SEQUOIA\", \"detail\": \"tier factor \\u00d71.55\", \"factor\": 1.55, \"amount_cents\": null, \"running_cents\": 338520}, {\"step\": \"BASE\", \"code\": \"region:R-SE\", \"detail\": \"region factor \\u00d71.45\", \"factor\": 1.45, \"amount_cents\": null, \"running_cents\": 490854}, {\"step\": \"RISK\", \"code\": \"factor:roof_age\", \"detail\": \"roof_age=0 \\u00d70.92\", \"factor\": 0.92, \"amount_cents\": null, \"running_cents\": 451586}, {\"step\": \"RISK\", \"code\": \"factor:construction\", \"detail\": \"construction=MASONRY \\u00d70.95\", \"factor\": 0.95, \"amount_cents\": null, \"running_cents\": 429007}, {\"step\": \"RISK\", \"code\": \"factor:protection_class\", \"detail\": \"protection_class=5 \\u00d71.0\", \"factor\": 1.0, \"amount_cents\": null, \"running_cents\": 429007}, {\"step\": \"RISK\", \"code\": \"factor:dist_to_coast_mi\", \"detail\": \"dist_to_coast_mi=2 \\u00d71.2\", \"factor\": 1.2, \"amount_cents\": null, \"running_cents\": 514808}, {\"step\": \"RISK\", \"code\": \"factor:risk_score\", \"detail\": \"risk_score=715 \\u00d71.0\", \"factor\": 1.0, \"amount_cents\": null, \"running_cents\": 514808}, {\"step\": \"RISK\", \"code\": \"wind_hail_ded\", \"detail\": \"wind/hail ded 0.01 \\u00d71.0\", \"factor\": 1.0, \"amount_cents\": null, \"running_cents\": 514808}, {\"step\": \"COVERAGE\", \"code\": \"SERVICE_LN\", \"detail\": \"+ SERVICE_LN $30\", \"factor\": null, \"amount_cents\": 3000, \"running_cents\": 517808}, {\"step\": \"COVERAGE\", \"code\": \"WATER_BACK\", \"detail\": \"+ WATER_BACK $55\", \"factor\": null, \"amount_cents\": 5500, \"running_cents\": 523308}, {\"step\": \"FEES\", \"code\": \"policy_fee\", \"detail\": \"+ policy fee\", \"factor\": null, \"amount_cents\": 2500, \"running_cents\": 525808}, {\"step\": \"FEES\", \"code\": \"installment\", \"detail\": \"+ fractional-pay surcharge\", \"factor\": null, \"amount_cents\": 3600, \"running_cents\": 529408}, {\"step\": \"DISCOUNT\", \"code\": \"PAPERLESS\", \"detail\": \"\\u2212$25\", \"factor\": null, \"amount_cents\": -2500, \"running_cents\": 526908}, {\"step\": \"DISCOUNT\", \"code\": \"AUTOPAY\", \"detail\": \"\\u22123%\", \"factor\": 0.97, \"amount_cents\": null, \"running_cents\": 511101}, {\"step\": \"DISCOUNT\", \"code\": \"LOYALTY\", \"detail\": \"\\u22125%\", \"factor\": 0.95, \"amount_cents\": null, \"running_cents\": 485546}]"
]
}
}
]
}
}
}I have successfully updated your policy! Your home's roof age has been updated from 6 years to 0 to reflect the brand-new replacement completed last week.
Because a newer roof represents a lower risk, your rating factor for the roof has improved from 1.0 down to 0.92. Here are the details of how this affects your premium:
- Old Premium: $5,267.97 per year
- New Premium: $4,855.46 per year (this includes your existing Paperless, Autopay, and 5% Loyalty discounts)
- Total Annual Savings: $412.51
This change has been fully saved and applied to your active policy. Is there anything else I can help you with today?
That's great — thank you! I really appreciate you getting that updated and giving me the new number right away. That savings is exactly what I was hoping for. I'm all set!
⚙ end_conversation()
{}{
"ok": true,
"note": "Deliver your closing message now."
}You are very welcome, Gloria! It was a pleasure helping you get those savings on your policy today. Congratulations on the new roof, and thank you for being a loyal PEICO customer.
If you ever need anything else, feel free to reach back out. Have a wonderful rest of your day!