πŸ€– Autonomous Information Systems & Edge Intelligence

S1 Sistem Informatika - FSTT ISTN Jakarta | Semester Ganjil 2025/2026

βš™οΈ Materi 4: Konsep Rule-Based Automation

🎯 Pendahuluan

Rule-Based Automation adalah metode membuat sistem yang bisa mengambil keputusan otomatis dengan mengikuti serangkaian aturan logika (rules) yang sudah didefinisikan sebelumnya.

Berbeda dengan AI/Machine Learning yang "belajar" dari data, rule-based system menggunakan aturan eksplisit yang dibuat oleh manusia dalam format IF-THEN.

πŸ’­ Analogi Sederhana: Traffic Light

Lampu lalu lintas adalah contoh sempurna rule-based system:

  • IF lampu merah β†’ THEN kendaraan berhenti
  • IF lampu kuning β†’ THEN kendaraan bersiap berhenti
  • IF lampu hijau β†’ THEN kendaraan jalan

Aturan ini sederhana, pasti, dan tidak berubah-ubah. Sistem tidak perlu "belajar" dari jutaan data kecelakaan untuk tahu kapan harus berhenti!

🧩 Struktur Dasar Rule-Based System

Komponen Fungsi Contoh
Rule (Aturan) Menjelaskan hubungan IF-THEN antara kondisi dan aksi "IF user login dari lokasi baru β†’ THEN kirim OTP"
Facts (Fakta) Data atau kondisi nyata yang terjadi saat ini Lokasi login user = Jakarta (biasanya Bandung)
Inference Engine Otak sistem yang membaca rules dan memutuskan tindakan Engine mengevaluasi semua aturan dan eksekusi yang match
Knowledge Base Tempat penyimpanan semua aturan dan fakta Database berisi 100+ rules untuk berbagai skenario

πŸ”„ Cara Kerja Rule-Based System

  1. Input data (facts): Sistem menerima data dari pengguna atau sensor
  2. Evaluasi aturan (rules): Inference engine memeriksa aturan mana yang cocok dengan kondisi data
  3. Eksekusi aksi (action): Jika ada aturan yang terpenuhi, sistem menjalankan perintahnya
  4. Simpan hasil: Sistem menyimpan hasil untuk tracking dan audit

πŸ“ Format Penulisan Aturan (Rules)

1. Simple Rule (Aturan Sederhana)

IF jumlah_pembelian > 1,000,000
THEN berikan_diskon = 10%

2. Compound Rule (Aturan Majemuk dengan AND)

IF (jumlah_pembelian > 500,000) AND (membership = "Gold")
THEN berikan_diskon = 15% AND gratis_ongkir = true

3. Multiple Conditions (Aturan dengan OR)

IF (user_tidak_aktif > 30_hari) OR (cart_ditinggalkan > 24_jam)
THEN kirim_email_reminder AND berikan_voucher_10k

4. Nested Rules (Aturan Bersarang)

IF user_type == "NEW":
    IF first_purchase_value > 200000:
        THEN give_voucher_50k AND assign_membership_silver
    ELSE:
        THEN give_voucher_20k
ELSE IF user_type == "RETURNING":
    IF inactive_days > 90:
        THEN send_winback_campaign
    ELSE IF total_purchases > 10:
        THEN upgrade_to_gold_membership

πŸ“± Studi Kasus 1: Sistem Promo Otomatis E-Commerce

🎯 Objektif

Tokopedia ingin membuat sistem yang secara otomatis memberikan promo, diskon, atau notifikasi kepada pengguna berdasarkan perilaku mereka, tanpa perlu manual intervention dari tim marketing.

1. Identifikasi Skenario Bisnis

Skenario Kondisi Aksi yang Diinginkan
User Baru Belum pernah membeli Berikan voucher welcome Rp50,000
Pembelian Besar Total belanja > Rp1,000,000 Diskon 10% + Free shipping
User Loyal Transaksi β‰₯ 10x dalam 3 bulan Upgrade ke Gold member
Cart Abandonment Item di cart > 24 jam belum checkout Kirim reminder + voucher 5%
Inactive User Tidak login > 30 hari Email "We miss you" + voucher Rp30,000

2. Implementasi Rules Engine

# Python Implementation - Rule-Based Promo System

class PromoRuleEngine:
    def __init__(self):
        self.rules = []
        self.actions_log = []
    
    def add_rule(self, name, condition, action, priority=1):
        """Menambahkan aturan baru ke sistem"""
        self.rules.append({
            'name': name,
            'condition': condition,
            'action': action,
            'priority': priority
        })
        # Sort by priority (higher first)
        self.rules.sort(key=lambda x: x['priority'], reverse=True)
    
    def evaluate(self, user_data):
        """Evaluasi semua aturan terhadap data user"""
        actions_taken = []
        
        for rule in self.rules:
            if rule['condition'](user_data):
                result = rule['action'](user_data)
                actions_taken.append({
                    'rule': rule['name'],
                    'action': result
                })
                self.actions_log.append({
                    'user_id': user_data['id'],
                    'rule': rule['name'],
                    'timestamp': datetime.now()
                })
        
        return actions_taken

# Initialize engine
engine = PromoRuleEngine()

# RULE 1: Welcome Voucher untuk User Baru
def condition_new_user(data):
    return data['total_transactions'] == 0

def action_new_user(data):
    return "🎁 Kirim voucher Rp50,000 untuk pembelian pertama"

engine.add_rule("Welcome New User", condition_new_user, action_new_user, priority=5)

# RULE 2: Diskon untuk Pembelian Besar
def condition_big_purchase(data):
    return data['cart_value'] > 1000000

def action_big_purchase(data):
    discount = int(data['cart_value'] * 0.10)
    return f"πŸ’° Berikan diskon 10% = Rp{discount:,} + Free shipping"

engine.add_rule("Big Purchase Discount", condition_big_purchase, action_big_purchase, priority=4)

# RULE 3: Upgrade Gold Member untuk Loyal User
def condition_loyal_user(data):
    return data['total_transactions'] >= 10

def action_loyal_user(data):
    return "⭐ Upgrade ke Gold membership dengan benefits eksklusif"

engine.add_rule("Gold Membership Upgrade", condition_loyal_user, action_loyal_user, priority=3)

# RULE 4: Cart Abandonment Reminder
def condition_cart_abandoned(data):
    return data['cart_items'] > 0 and data['hours_since_cart'] > 24

def action_cart_abandoned(data):
    return "πŸ”” Kirim notifikasi reminder + voucher diskon 5%"

engine.add_rule("Cart Reminder", condition_cart_abandoned, action_cart_abandoned, priority=4)

# RULE 5: Reactivation Campaign untuk Inactive User
def condition_inactive(data):
    return data['days_since_login'] > 30 and data['total_transactions'] > 0

def action_inactive(data):
    return f"πŸ’Œ Kirim email 'Kami Rindu Kamu' + voucher Rp30,000"

engine.add_rule("Reactivation Campaign", condition_inactive, action_inactive, priority=4)

# Test with sample users
test_users = [
    {
        'id': 1,
        'name': 'Budi',
        'total_transactions': 0,
        'cart_value': 0,
        'cart_items': 0,
        'hours_since_cart': 0,
        'days_since_login': 1
    },
    {
        'id': 2,
        'name': 'Ani',
        'total_transactions': 15,
        'cart_value': 1500000,
        'cart_items': 3,
        'hours_since_cart': 2,
        'days_since_login': 5
    },
    {
        'id': 3,
        'name': 'Citra',
        'total_transactions': 5,
        'cart_value': 450000,
        'cart_items': 2,
        'hours_since_cart': 30,
        'days_since_login': 10
    }
]

for user in test_users:
    print(f"\nπŸ‘€ Evaluasi untuk: {user['name']}")
    actions = engine.evaluate(user)
    if actions:
        for action in actions:
            print(f"  βœ“ [{action['rule']}] {action['action']}")
    else:
        print("  ℹ️ Tidak ada aksi untuk user ini")
		

3. Hasil Implementasi

πŸ“Š Business Impact Setelah 6 Bulan

Metrik Before After Improvement
New User Conversion 12% 28% +133%
Cart Abandonment Rate 68% 42% -38%
User Reactivation 15% 34% +127%
Average Order Value Rp 485,000 Rp 720,000 +48%
Marketing Team Workload 100% 35% -65%

πŸ’‘ ROI: Marketing automation menghemat 200 jam kerja/bulan dan meningkatkan revenue 45%

βš–οΈ Rule-Based vs AI/Machine Learning

Aspek Rule-Based System AI/Machine Learning
Cara Kerja Berdasarkan logika dan aturan eksplisit yang dibuat manusia Belajar pola dari data historis secara otomatis
Fleksibilitas Kaku - perlu update manual jika kondisi berubah Adaptif - otomatis adjust berdasarkan data baru
Kecepatan Implementasi ⚑ Cepat (beberapa hari) 🐌 Lambat (beberapa minggu/bulan)
Data Requirement ❌ Tidak perlu data training βœ… Butuh data besar (ribuan/jutaan records)
Transparansi βœ… Sangat jelas - bisa lihat exact rules ❌ "Black box" - sulit explain keputusannya
Maintainability ⚠️ Sulit jika rules terlalu banyak (hundreds) βœ… Lebih mudah - model auto-update
Akurasi Depends on quality of rules (60-80%) Bisa sangat tinggi dengan data cukup (85-95%)
Cost πŸ’° Low (hanya development time) πŸ’°πŸ’°πŸ’° High (data, compute, ML expertise)
Best For β€’ Logika bisnis yang jelas dan pasti
β€’ Compliance & regulation
β€’ MVP/prototype
β€’ Decision yang simple
β€’ Pola kompleks dan dinamis
β€’ Personalisasi mendalam
β€’ Prediksi berbasis historical patterns
β€’ Large-scale recommendations

πŸ’‘ Kapan Menggunakan Mana?

Gunakan Rule-Based JIKA:

  • Logika bisnis jelas dan sudah pasti (contoh: discount policy, validation rules)
  • Perlu transparansi penuh dalam keputusan (untuk audit, compliance)
  • Tidak ada data historis yang cukup
  • Budget terbatas dan perlu implementasi cepat
  • Domain expertise tersedia (tahu persis aturan bisnisnya)

Gunakan AI/ML JIKA:

  • Pola terlalu kompleks untuk di-capture dalam rules
  • Ada data historis yang banyak dan berkualitas
  • Perlu personalisasi yang sangat mendalam
  • Kondisi berubah cepat dan unpredictable
  • Budget dan resources memadai

🎯 Best Practice: HYBRID APPROACH

Kombinasikan keduanya! Gunakan rules untuk business logic yang pasti, dan ML untuk personalisasi yang adaptif.

🏦 Studi Kasus 2: Fraud Detection System di Banking

🎯 Objektif

Bank BCA ingin mendeteksi transaksi yang mencurigakan (potential fraud) secara real-time dan mengambil tindakan preventif otomatis.

1. Identifikasi Red Flags (Indikator Fraud)

Red Flag Threshold Risk Level
Transaksi dari lokasi baru Negara berbeda dalam 24 jam ⚠️ Medium
Jumlah transaksi tidak biasa > 3x rata-rata transaksi bulanan πŸ”΄ High
Multiple failed attempts > 3 PIN salah dalam 1 jam πŸ”΄ High
Transaksi di merchant berisiko Merchant dengan fraud rate > 5% ⚠️ Medium
Rapid consecutive transactions > 5 transaksi dalam 10 menit πŸ”΄ High

2. Rule-Based Decision Tree

# Fraud Detection Rules def evaluate_transaction(transaction, user_profile): risk_score = 0 alerts = [] # RULE 1: Location Anomaly if transaction['country'] != user_profile['usual_country']: if hours_since_last_transaction(user_profile) < 24: risk_score += 30 alerts.append("Impossible travel detected") # RULE 2: Amount Anomaly avg_transaction = user_profile['avg_monthly_amount'] if transaction['amount'] > (avg_transaction * 3): risk_score += 40 alerts.append("Unusually large transaction") # RULE 3: Failed Authentication recent_failures = count_failed_auth(user_profile, hours=1) if recent_failures >= 3: risk_score += 50 alerts.append("Multiple failed authentication attempts") # RULE 4: Rapid Transactions recent_count = count_recent_transactions(user_profile, minutes=10) if recent_count > 5: risk_score += 35 alerts.append("Rapid consecutive transactions") # RULE 5: High-Risk Merchant if transaction['merchant_fraud_rate'] > 0.05: risk_score += 25 alerts.append("Transaction at high-risk merchant") # Decision based on total risk score if risk_score >= 80: action = "BLOCK_TRANSACTION" notification = "Transaction blocked - suspected fraud" elif risk_score >= 50: action = "REQUIRE_2FA" notification = "Additional verification required" elif risk_score >= 30: action = "FLAG_FOR_REVIEW" notification = "Transaction flagged for manual review" else: action = "APPROVE" notification = "Transaction approved" return { 'action': action, 'risk_score': risk_score, 'alerts': alerts, 'notification': notification } # Example transaction evaluation transaction = { 'amount': 15000000, # Rp 15 juta 'country': 'Singapore', 'merchant': 'Online Gaming', 'merchant_fraud_rate': 0.08, 'timestamp': '2025-01-15 02:30:00' } user_profile = { 'avg_monthly_amount': 3000000, # Rp 3 juta 'usual_country': 'Indonesia', 'last_transaction_time': '2025-01-15 01:00:00', 'failed_auth_count_1h': 2 } result = evaluate_transaction(transaction, user_profile) print(f"Action: {result['action']}") print(f"Risk Score: {result['risk_score']}/100") print(f"Alerts: {', '.join(result['alerts'])}")

3. Hasil Implementasi

πŸ“Š Performance Metrics (6 Bulan)

  • Fraud Detection Rate: 87% (naik dari 65% manual review)
  • False Positive Rate: 8% (turun dari 25%)
  • Response Time: < 200ms (real-time blocking)
  • Prevented Losses: Rp 12.5 miliar dalam 6 bulan
  • Customer Satisfaction: 92% (legitimate transactions tidak terganggu)

πŸ’‘ Key Success Factors

  • Layered Defense: Multiple rules yang saling complement
  • Risk Scoring: Bukan binary (block/allow), tapi graduated response
  • Real-time Processing: Decision dalam milliseconds
  • User Experience: Minimize false positives untuk legitimate users
  • Continuous Tuning: Rules di-update setiap bulan based on new fraud patterns

βš–οΈ Kelebihan dan Kekurangan Rule-Based Automation

βœ… Kelebihan

  • Mudah dipahami dan diimplementasikan - Developer dan business user bisa collaborate
  • Tidak membutuhkan data besar - Bisa langsung jalan tanpa training data
  • Transparan dan explainable - Setiap keputusan bisa di-trace ke rule spesifik
  • Deterministik - Input yang sama selalu menghasilkan output yang sama (predictable)
  • Cocok untuk compliance - Mudah di-audit untuk regulatory requirements
  • Fast to market - Bisa production-ready dalam hitungan hari
  • Resource efficient - Tidak perlu GPU atau infrastructure mahal

❌ Kekurangan

  • Sulit handle kompleksitas tinggi - Jika ada ratusan rules, jadi susah maintain
  • Tidak belajar dari data - Harus manual update jika kondisi berubah
  • Rentan terhadap edge cases - Bisa ada kondisi yang tidak ter-cover oleh rules
  • Scalability issues - Performance turun jika rules terlalu banyak
  • Maintenance overhead - Perlu regularly review dan update rules
  • Conflict resolution - Bisa ada rules yang saling bertentangan
  • Requires domain expertise - Perlu deep understanding of business logic

πŸ’‘ Best Practices dalam Rule-Based Automation

1. Keep Rules Simple and Modular

❌ Bad: Satu rule giant dengan 10+ conditions

βœ… Good: Pecah jadi beberapa rules kecil yang focused

# Bad - Complex monolithic rule IF (user_age > 25 AND income > 5000000 AND city == "Jakarta" AND has_credit_card == True AND transaction_count > 10 AND avg_transaction > 500000 AND last_login < 7_days): THEN send_premium_offer # Good - Modular rules IF user_segment == "HIGH_VALUE": THEN send_premium_offer # Separate rule to determine segment IF (transaction_count > 10 AND avg_transaction > 500000): THEN user_segment = "HIGH_VALUE"

2. Use Priority Levels

Tidak semua rules sama penting. Assign priority untuk handle conflicts:

  • Priority 1 (Critical): Security & fraud detection rules
  • Priority 2 (High): Business-critical automations
  • Priority 3 (Medium): Marketing & engagement rules
  • Priority 4 (Low): Nice-to-have enhancements

3. Implement Logging and Monitoring

Track setiap rule execution untuk:

  • Debugging ketika ada issues
  • Analytics: rules mana yang paling sering triggered
  • Audit trail untuk compliance
  • Performance monitoring (slow rules)

4. Regular Review and Maintenance

Setup schedule untuk review rules:

  • Monthly: Review rules yang sering triggered atau tidak pernah triggered
  • Quarterly: Validate rules masih relevant dengan business needs
  • Annually: Major review dan cleanup deprecated rules

5. Version Control dan Testing

Treat rules seperti code:

  • Store rules di version control (Git)
  • Write unit tests untuk setiap rule
  • Staging environment untuk test rules sebelum production
  • Rollback mechanism jika rule baru menyebabkan issues

6. Combine dengan Machine Learning (Hybrid)

Best of both worlds:

  • Rules: Handle business logic yang fixed (compliance, pricing rules)
  • ML: Handle personalization dan pattern recognition
  • Rules + ML: ML predict, rules validate and override jika needed

Contoh Hybrid:

1. ML model predict user akan churn (90% confidence)

2. Rule check: IF prediction_confidence > 80% AND user_value > "high"

3. THEN send personalized retention offer

4. Rule override: IF user already got offer in last 30 days, THEN skip

🎯 Kesimpulan Materi 4

πŸ“š Poin-Poin Penting:

  • Rule-Based Automation menggunakan logika IF-THEN eksplisit untuk keputusan otomatis
  • 4 komponen utama: Rules, Facts, Inference Engine, Knowledge Base
  • Kelebihan: Simple, transparan, cepat implementasi, tidak perlu data besar
  • Kekurangan: Kaku, sulit maintain jika complex, tidak adaptive
  • Best for: Business logic yang clear, compliance, MVP/prototype
  • Studi kasus menunjukkan improvement 30-130% dalam conversion dan efficiency
  • Hybrid approach (rules + ML) seringkali optimal solution

πŸ’­ Pertanyaan Refleksi

  • Sistem apa di aplikasi yang Anda gunakan yang mungkin menggunakan rule-based automation?
  • Jika Anda harus build sistem promo otomatis, rules apa yang akan Anda buat?
  • Kapan sebaiknya upgrade dari rule-based ke ML-based system?
  • Bagaimana cara menangani conflict antar rules?

πŸ“ Tugas Praktikum

Tugas 1: Design Rule-Based System (Individual)

Scenario: Universitas ISTN ingin sistem otomatis untuk memberikan beasiswa kepada mahasiswa

Instruksi:

  1. Identifikasi minimal 5 kriteria untuk pemberian beasiswa (IPK, penghasilan ortu, prestasi, dll)
  2. Buat minimal 8 rules dalam format IF-THEN
  3. Assign priority ke setiap rule
  4. Buat flowchart decision process
  5. Test dengan 5 sample mahasiswa (tabel data)
  6. Buat laporan 3-4 halaman

Deliverables:

  • Document with rules specification
  • Flowchart diagram
  • Test results table
  • Analysis dan recommendations

Tugas 2: Rule-Based vs ML Comparison (Kelompok 4-5 orang)

Topik: "Kapan Menggunakan Rule-Based vs Machine Learning"

  1. Pilih 3 use cases berbeda (contoh: credit scoring, product recommendation, fraud detection)
  2. Untuk setiap use case, analisis:
    • Apakah lebih cocok rule-based atau ML?
    • Kenapa? (berikan reasoning)
    • Atau mungkin hybrid? Bagaimana kombinasinya?
  3. Buat comparison matrix
  4. Presentasi 15 menit

Deadline: 2 minggu (presentasi minggu depan)

πŸ“š Referensi dan Bacaan Lanjutan

πŸ“– Buku:

  • Russell, S., & Norvig, P. (2021). Artificial Intelligence: A Modern Approach. Pearson. (Chapter on Rule-Based Systems)
  • Negnevitsky, M. (2011). Artificial Intelligence: A Guide to Intelligent Systems. Pearson.
  • Luger, G. F. (2008). Artificial Intelligence: Structures and Strategies for Complex Problem Solving.

🌐 Online Resources:

  • IBM: Business Rules Management Systems (BRMS)
  • Drools: Open-source Rule Engine documentation
  • Martin Fowler: Rules Engines artikel

Β© 2025 ISTN Jakarta - Fakultas Sains Terapan dan Teknologi

Dosen: Oni Bibin Bintoro, Riadi Marta Dinata