SNB: Debt Recovery Sprint

Initial Thinking on Process Automation

Portfolio Input
SNB provides debtor records with basic identification and contact information
input: debtor_records[]
format: CSV formatted to JSON | batch_size: 10000 per sprint (TBD)
Data Validation Layer
Multi-source validation and enrichment through integrated APIs
National Address API
Location verification
SIMAH API
Credit status
Absher API
Identity validation
Telecoms API
Contact verification
QIWA API
Employment check
SAMAH API
Asset verification
Validation Decision
Route based on data quality and completeness
if (address.valid && contact.verified && status.active) {
  route → recovery_engine
} else if (partial_data.available) {
  route → alternative_methods
} else {
  route → manual_investigation
}
Validated
Recovery Engine
Automated multi-method recovery process
Invalid
Manual Queue
Human investigation and intervention
Recovery Engine Start
Initialize automated recovery sequence with priority scoring
debtor.priority_score = calculate_priority(debt_amount, validation_score)
recovery_sequence = get_optimal_method_sequence(debtor)
Method Selection Logic
Intelligent method routing based on debtor profile and previous interactions
if (contact.phone.verified && response_history.voice > 0.3) {
  method = "ai_voice_agent"
} else if (contact.whatsapp.active && age < 40) {
  method = "whatsapp_messaging"
} else if (address.verified && previous.digital_failed) {
  method = "physical_delivery"
} else {
  method = "sms_gateway"
}
Method Execution Matrix
Parallel execution channels with real-time monitoring and adaptive switching
AI Voice Agents
Max 3 attempts
Call initiation
NLP conversation
Payment negotiation
WhatsApp Messaging through Netaq
Max 4 attempts
Message delivery
Response tracking
Follow-up sequence
Physical Delivery
Max 2 attempts
Address verification
SPL fleet dispatch
Letter delivery
Legal Escalation
Final stage
Case preparation
Legal notice
Saudi EC filing
Method Result Evaluation
Real-time response analysis and adaptive method switching
while (attempts < max_attempts && !success) {
  result = execute_method(current_method, debtor)
  if (result.response == "positive") {
    route_to_payment_processing()
    break
  } else if (result.contact_invalid) {
    return_to_validation_layer()
  } else {
    current_method = get_next_method()
    attempts++
  }
}
System Output Classification
Comprehensive outcome analysis with automated reporting and next-action recommendations
Positive Outcomes
RECOVERED
Full payment received
NEGOTIATED
Installment plan agreed
Active Cases
IN_PROGRESS
Ongoing negotiations
PARTIAL_PAYMENT
Partial amount received
Unsuccessful
NO_CONTACT
All methods exhausted
REFUSED
Debtor declined payment
Next Actions
LEGAL_READY
Prepared for legal action
RE_VALIDATE
Data refresh required
Recovery Rate
Real-time calculation
Cost per Recovery
Method efficiency analysis
Time to Resolution
Performance tracking
Data Quality Score
Validation accuracy