Production-Grade Use Cases
PyRulesEngine is built to govern complex validation pipelines across diverse business domains. Below are comprehensive examples highlighting production-grade schemas utilizing the Pythonic JDM definitions for multiple industries.
1. E-Commerce (Dynamic Discount Pipeline)
Scenario: Calculate a dynamic discount based on user region, loyalty score, purchase history, and real-time telemetry.
JDM Configuration (YAML):
- WorkflowName: "DiscountWorkFlow"
Version: "1.0.0"
Rules:
- RuleName: "Tier1DiscountCheck"
Operator: "AndAlso"
SuccessEvent: "Give15Percent"
Rules:
- RuleName: "IsEligibleRegion"
Expression: "basicInfo['country'] in ['US', 'UK', 'CA']"
- RuleName: "HasHighLoyalty"
Expression: "basicInfo['loyaltyFactor'] >= 4"
- RuleName: "SignificantHistory"
Expression: "basicInfo['totalPurchasesToDate'] >= 10000"
- RuleName: "ActiveShopper"
Expression: "telemetryInfo['noOfVisitsPerMonth'] >= 5"
- RuleName: "TierFailureFallback"
RuleExpressionType: "LambdaExpression"
Expression: "basicInfo['country'] == 'Unknown'"
ErrorMessage: "User origin unverifiable; apply 0% discount."
Execution Context (Input Payload):
inputs = {
"basicInfo": {
"country": "US",
"loyaltyFactor": 5,
"totalPurchasesToDate": 12000
},
"telemetryInfo": {
"noOfVisitsPerMonth": 10
}
}
# Output: `Give15Percent` Success Event
2. FinTech (Fraud Detection & Risk Management)
Scenario: When a user initiates a peer-to-peer funds transfer, validate if the transaction exhibits fraudulent traits, triggering a risk-block mechanism.
JDM Configuration (YAML):
- WorkflowName: "FraudDetectionPipeline"
Version: "1.0.0"
Rules:
- RuleName: "HighRiskTransfer"
Operator: "OrElse"
SuccessEvent: "FraudDetected_BlockTransfer"
Rules:
- RuleName: "AmountExceedsSafetyNet"
Expression: "transaction['amount'] > 50000"
- RuleName: "SuspiciousDeviceOrVelocity"
Operator: "AndAlso"
Rules:
- RuleName: "NewDevice"
Expression: "security['is_recognized_device'] == False"
- RuleName: "HighVelocity"
Expression: "security['transfers_last_hour'] > 5"
- RuleName: "SanctionedCountry"
Expression: "transaction['dest_country'] in ['North Korea', 'Iran', 'Syria']"
Actions:
OnSuccess:
Name: "ExecuteWorkflow"
Context:
WorkflowName: "AccountLockdownOperations"
Execution Context (Input Payload):
inputs = {
"transaction": {
"amount": 2000,
"dest_country": "UK"
},
"security": {
"is_recognized_device": False,
"transfers_last_hour": 7
}
}
# Output: `FraudDetected_BlockTransfer` (Triggers AccountLockdownOperations because of new device + high velocity)
3. Healthcare (Insurance Claim Validation)
Scenario: Scrutinize medical claims. Ensure the patient is active, the ICD-10 code aligns with covered policies, and the billing amount does not exceed the annual max coverage limits.
JDM Configuration (JSON):
[
{
"WorkflowName": "AutoAdjudicateClaim",
"Version": "1.0.0",
"Rules": [
{
"RuleName": "ClaimApprovalGate",
"Operator": "AndAlso",
"SuccessEvent": "ClaimApproved",
"ErrorMessage": "Claim denied due to policy violations.",
"Rules": [
{
"RuleName": "PolicyIsActive",
"Expression": "patient['policy_status'] == 'Active'"
},
{
"RuleName": "CoveredProcedure",
"Expression": "claim['icd_10_code'] in ['J01.90', 'E11.9', 'I10']"
},
{
"RuleName": "SufficientRemainingLimit",
"Expression": "(policy['annual_limit'] - policy['used_limit']) >= claim['billing_amount']"
}
]
}
]
}
]
Execution Context (Input Payload):
inputs = {
"patient": { "policy_status": "Active" },
"claim": { "icd_10_code": "E11.9", "billing_amount": 1500 },
"policy": { "annual_limit": 50000, "used_limit": 49000 }
}
# Output: False (ExceptionMessage: Claim denied due to policy violations. limit remaining is 1000, claim is 1500).
4. Cybersecurity (IAM Access Control policies)
Scenario: A robust Zero-Trust model evaluating if an employee can mount an S3 production bucket.
JDM Configuration (JSON):
[
{
"WorkflowName": "S3ProductionMountAcl",
"Version": "1.0.0",
"Rules": [
{
"RuleName": "DenyUnmanagedDevices",
"RuleExpressionType": "LambdaExpression",
"ErrorType": "Error",
"Expression": "device['is_mdm_enrolled'] == False",
"ErrorMessage": "Access Denied: Device not managed by IT."
},
{
"RuleName": "RequireEngineeringOrDevOps",
"RuleExpressionType": "LambdaExpression",
"Expression": "Linq.any(user['groups'], \"g => g in ['devops_prod', 'senior_eng']\")",
"SuccessEvent": "Authorized",
"ErrorMessage": "Access Denied: Missing mandated IAM groups."
}
]
}
]
Execution Context (Input Payload):