# Model Contract Documentation ## Overview The FraudSimulator-AI system implements a strict model contract to ensure consistency, reliability, and auditability across all fraud detection decisions. ## Model Identity **Model Name**: `fraud-risk-agent` **Version**: `1.0.0` **Type**: Decision Intelligence Agent **Domain**: Insurance Fraud Detection **Decision Output**: `investigate | allow` ## Input Contract ### Required Fields ```json { "claim_id": "string (required)", "amount": "float (required)", "type": "string (required)", "claimant_id": "string (required)", "days_since_policy_start": "integer (required)" } ``` ### Optional Fields ```json { "average_claim_amount": "float (default: 5000)", "claimant_history": { "claim_count": "integer (default: 0)", "avg_amount": "float (default: 5000)", "total_paid": "float (default: 0)" }, "document_consistency_score": "float 0.0-1.0 (default: 1.0)", "linked_suspicious_entities": "integer (default: 0)" } ``` ### Input Validation Rules - `amount` must be > 0 - `days_since_policy_start` must be ≥ 0 - `document_consistency_score` must be between 0.0 and 1.0 - `linked_suspicious_entities` must be ≥ 0 - `claim_id` must be unique - `type` must be one of: ["auto", "property", "health", "life", "other"] ## Output Contract (STRICT) ### Mandatory Fields The model MUST return exactly these fields: ```json { "fraud_score": "float (0.0-1.0, 3 decimal places)", "risk_band": "string (low | medium | high)", "top_indicators": "array of strings", "recommended_action": "string (investigate | allow)", "confidence": "float (0.0-1.0, 3 decimal places)", "explainability": { "signals": "array of objects", "weights": "object (indicator -> weight mapping)" } } ``` ### Field Specifications #### fraud_score - **Type**: Float - **Range**: 0.0 to 1.0 - **Precision**: 3 decimal places - **Description**: Overall fraud risk score #### risk_band - **Type**: String (enum) - **Values**: "low" | "medium" | "high" - **Mapping**: - "high": fraud_score ≥ 0.7 - "medium": 0.4 ≤ fraud_score < 0.7 - "low": fraud_score < 0.4 #### top_indicators - **Type**: Array of strings - **Max Length**: 5 - **Description**: Top fraud indicators ranked by contribution - **Possible Values**: - "amount_deviation" - "high_frequency" - "early_claim" - "document_mismatch" - "entity_linkage" #### recommended_action - **Type**: String (enum) - **Values**: "investigate" | "allow" - **Logic**: - "investigate" if fraud_score ≥ 0.65 - "allow" if fraud_score < 0.65 #### confidence - **Type**: Float - **Range**: 0.0 to 1.0 - **Precision**: 3 decimal places - **Description**: Confidence in the decision #### explainability - **Type**: Object - **Required Fields**: - `signals`: Array of signal objects - `weights`: Object mapping indicators to weights **Signal Object Structure**: ```json { "indicator": "string (indicator name)", "value": "float (0.0-1.0, 3 decimal places)", "description": "string (human-readable explanation)" } ``` **Weights Object Structure**: ```json { "amount_deviation": 0.25, "high_frequency": 0.20, "early_claim": 0.15, "document_mismatch": 0.25, "entity_linkage": 0.15 } ``` ### Output Example ```json { "fraud_score": 0.742, "risk_band": "high", "top_indicators": [ "early_claim", "amount_deviation", "entity_linkage", "document_mismatch" ], "recommended_action": "investigate", "confidence": 0.856, "explainability": { "signals": [ { "indicator": "early_claim", "value": 1.000, "description": "Claim filed shortly after policy inception" }, { "indicator": "amount_deviation", "value": 0.667, "description": "Claim amount significantly differs from average" } ], "weights": { "amount_deviation": 0.25, "high_frequency": 0.20, "early_claim": 0.15, "document_mismatch": 0.25, "entity_linkage": 0.15 } } } ``` ## Model Behavior Guarantees ### Determinism - Same input MUST produce same output (given same model version) - No randomness in decision logic - Reproducible for audit purposes ### Performance - **Latency**: < 100ms per prediction (p95) - **Throughput**: > 1000 predictions/second - **Availability**: 99.9% uptime ### Accuracy - **Precision**: ≥ 75% (validated on test set) - **Recall**: ≥ 80% (validated on test set) - **F1 Score**: ≥ 0.77 ### Explainability - 100% of decisions include explainability payload - All signals have human-readable descriptions - Weights sum to 1.0 ## Error Handling ### Input Validation Errors ```json { "error": "INVALID_INPUT", "message": "Detailed error description", "field": "Field name that failed validation", "value": "Invalid value provided" } ``` ### Model Errors ```json { "error": "MODEL_ERROR", "message": "Internal model error", "model_version": "1.0.0", "timestamp": "ISO 8601 timestamp" } ``` ## Versioning ### Version Format `MAJOR.MINOR.PATCH` - **MAJOR**: Breaking changes to input/output contract - **MINOR**: New features, backward compatible - **PATCH**: Bug fixes, no contract changes ### Version History **1.0.0** (2026-01-01) - Initial release - Core fraud detection logic - Five fraud indicators - Binary decision output (investigate | allow) ### Deprecation Policy - Major versions supported for 12 months after new major release - Minor versions supported for 6 months after new minor release - Deprecation warnings provided 3 months in advance ## Testing & Validation ### Unit Tests - Input validation - Indicator calculation - Score calculation - Decision logic - Explainability generation ### Integration Tests - End-to-end prediction flow - Error handling - Performance benchmarks ### Validation Dataset - 10,000 labeled claims - Balanced fraud/legitimate split - Diverse claim types and amounts - Regular updates with new fraud patterns ## Compliance This model contract complies with: - **BDR-Agent-Factory**: Registered in capability registry - **IFRS 17**: Actuarial soundness - **AML Standards**: Fraud pattern detection - **Explainability Requirements**: Full XAI support - **Audit Standards**: Complete traceability ## Support For model contract questions: - **Documentation**: See DECISION_LOGIC.md and GOVERNANCE.md - **Technical Support**: data-science@bdr-ai.com - **Contract Changes**: Submit RFC to architecture team