vertiq
Insurance

Insurance

Predict claims and policy lapses, estimate claim severity, and flag repeat claims for review.

Data mapping

Entity
policy
Group
agency
Profile
generic; configure time windows with verticals.register
SOURCE COLUMNSVERTIQ DATA CONTRACTPolice NrLoss DateClaim AmountAgenceCoverChannelEntity · identifierEvent · timestampEvent · valueEntity · groupEvent · attributes%d/%m/%Y
Vertiq LM can propose this mapping from the header and sample rows. Column names, value types and the date format are validated against the data before use.

Supported analyses

Reference implementation

from datetime import datetime, timedelta
from vertiq import plugins, rules
from vertiq.mapping import Mapping, apply, repair
from vertiq.tasks import predict_event, predict_value

# rows: the source export as a list of dicts, e.g. list(csv.DictReader(open("export.csv")))
mapping = Mapping.parse({"entity": "Police Nr", "time": "Loss Date", "type": None, "value": "Claim Amount", "group": "Agence", "attrs": ["Cover", "Channel"], "date_format": "%d/%m/%Y"})
m, notes = repair(mapping, rows)      # validates column names, value types and date format against the rows
ds, problems = apply(m, rows)         # rows that fail to load are reported, not imputed

@plugins.feature("insurance")
def claims_365(entity, before, cut):   # receives only events recorded before the cutoff
    return {"claims_365": sum(1 for e in before if e.at >= cut - timedelta(days=365))}

task = predict_event(ds, target="", window_days=90, pack="insurance")
print(task.status, task.report())     # "trained" only if the model outperformed the baseline on held-out entities
if task.status == "trained":
    print(task.score("POL482910"))  # probability with contributing factors

size = predict_value(ds, target="", window_days=365, pack="insurance")
print(size.status, size.report())

flags = rules.run(ds, [
    rules.repeat(14, key="Cover"),   # a second claim under the same cover within 14 days, for review
])
print(flags["summary"])

This code is executed by the test suite (tests/test_guides.py) against generated records with these column names.

Recommended plugin

claims_365: Recent claim frequency is a strong predictor of further claims.

Validation rules

  • rules.repeat(14, key="Cover"): a second claim under the same cover within 14 days, for review

Implementation notes

  • Flags support human review and are not used for automated denial.
  • Exclude protected attributes such as age, gender and religion from features.

Validation

  • Insurance tables, a domain excluded from Vertiq LM training
  • Every deployment: the evaluation gate measures each model on the organisation's own held-out records before promotion.
← Banking and financial servicesHealthcare and life sciences →