Curvestone

Insurance

FCA ICOBS, Solvency II — Insurance claims and underwriting

Quick Reference

minimal.py
python
result = agent.check(
case_type="motor_claim",
depth="standard_review",
documents=[open("claim_form.pdf", "rb")],
reference="CLM-2026-00812",
)

Case Types

NameAPI IDDescription
Motor Claimsmotor_claimVehicle accident, theft, and damage claims
Property Claimsproperty_claimBuildings and contents insurance claims
Liability Claimsliability_claimProfessional indemnity and public liability claims

Modifiers

NameAPI IDApplies ToDescription
High Valuehigh_valuemotor_claim, property_claimClaims above £50k threshold — adds enhanced documentation requirements
Cross-Bordercross_borderAll case typesClaims involving multiple jurisdictions — adds cross-jurisdiction regulatory checks
Subrogationsubrogationmotor_claim, liability_claimThird-party recovery — adds subrogation opportunity assessment

Depths

NameAPI IDDurationScoringPriceDescription
Triagetriage~30spass_fail£0.50Document presence, basic eligibility, obvious red flags
Standard Reviewstandard_review~2 minrag£3.00Full claims handling compliance, reserve adequacy, fraud indicators
Deep Auditdeep_audit~3 minrag£8.00Standard review + cross-claim pattern analysis, network-level fraud detection

Scoring Modes

pass_fail

Used by triage. Each check returns pass or fail. The overall result is pass if all checks pass, or fail if any check fails.

rag

Used by standard_review and deep_audit. Each check returns green (compliant), amber (review recommended), or red (non-compliant or fraud indicator). Amber and red findings include descriptions and remedial actions. The overall triage is the worst-case result across all checks.

Worked Example

Motor claim at standard_review depth.

Request

request.py
python
from curvestone import Agent
agent = Agent()
result = agent.check(
case_type="motor_claim",
depth="standard_review",
documents=[
open("claim_form.pdf", "rb"),
open("incident_report.pdf", "rb"),
],
reference="CLM-2026-00812",
)

Response

response.json
json
1{
2 "id": "job_9pLm3xRtK7",
3 "type": "check",
4 "status": "completed",
5 "triage": "amber",
6 "reference": "CLM-2026-00812",
7 "processing_time": "118s",
8 "scoring": "rag",
9 "checks": [
10 { "name": "Claims Handling Compliance", "triage": "green" },
11 { "name": "Reserve Adequacy", "triage": "amber" },
12 { "name": "Fraud Indicators", "triage": "green" },
13 { "name": "Subrogation Opportunity", "triage": "green" }
14 ],
15 "findings": [
16 {
17 "severity": "amber",
18 "check": "Reserve Adequacy",
19 "finding": "Initial reserve of £4,200 is below the model estimate of £6,800 for this claim type and severity. Historical claims with similar characteristics have settled at an average of £7,100.",
20 "remedial_action": "Review the reserve estimate against comparable claims data. Consider increasing the reserve to at least £6,800 to align with actuarial guidance for this claim category."
21 }
22 ],
23 "cost": "£3.00"
24}

Ask

Use POST /ask to ask natural-language questions about a completed insurance job, a document, or claims data.

Example questions

  • Why was this claim flagged for potential fraud?
  • What comparable claims data supports the current reserve estimate?
  • Is the subrogation recovery opportunity viable based on the policy terms?
  • Summarise the compliance issues found in this batch of claims.
  • What are the key risk indicators in the motor claims portfolio?

Questions can reference a job_id for context-aware answers grounded in the original documents and findings. £0.05 per turn.

Monitor

Use POST /monitor to set up recurring watches relevant to the insurance cluster.

Monitor typeWhat it watchesTypical schedule
regulation_changeFCA ICOBS updates and Solvency II changesweekly
portfolio_driftClaims portfolio for emerging patterns or anomaliesdaily
website_changeBroker and claims handler websites for complianceweekly

Monitors can trigger downstream actions via on_finding — e.g. automatically re-run a check when lender criteria change. £15/month per monitor.

See also