BAB 31. AI MATCHING ARCHITECTURE
Pendahuluan
AI Matching merupakan inti kecerdasan TemuBelajar yang bertugas mempertemukan siswa yang membutuhkan bantuan dengan tutor sebaya atau guru yang paling sesuai berdasarkan data nyata (evidence-based), bukan hanya klaim kemampuan pengguna.
Tujuan utama AI Matching:
- Mempercepat pencarian tutor
- Meningkatkan peluang masalah terselesaikan
- Mendistribusikan beban tutor secara adil
- Membangun reputasi berdasarkan kontribusi nyata
Prinsip Arsitektur
| Prinsip | Implementasi |
|---|---|
| Evidence Based | Menggunakan histori aktivitas nyata, bukan klaim |
| Explainable | Skor dapat dijelaskan kepada pengguna |
| Deterministic | Hasil konsisten untuk input yang sama |
| Modular | Mudah diganti ke ML di masa depan |
| Scalable | Mendukung ribuan request secara bersamaan |
Arsitektur Komponen
flowchart LR
A["📝 Request Bantuan"] --> B["🔍 Candidate\nGenerator"]
B --> C["⚙️ Scoring\nEngine"]
C --> D["📊 Ranking\nEngine"]
D --> E["📲 Notification\nEngine"]
E --> F["✅ Tutor\nTerpilih"]
style A fill:#4f63d2,color:#fff
style C fill:#7c3aed,color:#fff
style F fill:#059669,color:#fff
Detail Komponen
🔍 Candidate Generator
Menghasilkan daftar tutor yang memenuhi syarat dasar sebelum memasuki proses scoring.
Filter awal:
- Berada di sekolah yang sama
- Status akun aktif
- Tidak diblokir oleh sistem
- Bukan siswa yang membuat request (diri sendiri)
- Memiliki skill yang relevan dengan request
⚙️ Scoring Engine
Menghitung skor kesesuaian untuk setiap kandidat tutor berdasarkan multi-faktor dengan bobot yang telah ditentukan.
📊 Ranking Engine
Mengurutkan seluruh kandidat berdasarkan skor dari tertinggi ke terendah, dengan penyesuaian fairness.
📲 Notification Engine
Mengirim push notification ke tutor berdasarkan urutan prioritas secara bertahap (cascade notification).
Data Input AI Matching
| Data | Sumber |
|---|---|
| Mata pelajaran | Request dari siswa |
| Materi spesifik | Request dari siswa |
| Skill tutor | Academic Portfolio siswa |
| Rating historis | Tabel ratings |
| Histori keberhasilan | Tabel meetings |
| Jadwal ketersediaan | Tabel bookings |
| Lokasi | Meeting location request |
| Beban aktif saat ini | Active bookings |
| Response time rata-rata | Booking history |
Output AI Matching
| Output | Deskripsi |
|---|---|
| Tutor Prioritas | Tutor dengan matching score tertinggi |
| Matching Score | Nilai numerik 0–100 |
| Confidence Level | Tingkat keyakinan sistem terhadap rekomendasi |
| Recommendation Reason | Alasan pemilihan tutor yang dapat ditampilkan |
Alur Lengkap AI Matching
flowchart TD
A["📝 Request Baru Dibuat"] --> B["🔀 Dispatch MatchingJob ke Queue"]
B --> C["🔍 Candidate Generator\n— Filter awal —"]
C --> D{{"Kandidat\nTersedia?"}}
D -->|Tidak| E["⚠️ Notifikasi siswa:\nTutor tidak tersedia"]
D -->|Ya| F["⚙️ Scoring Engine\n— Hitung skor —"]
F --> G["📊 Ranking Engine\n— Urutkan —"]
G --> H["⚖️ Fairness Adjustment"]
H --> I["📲 Cascade Notification\nTutor #1 → #2 → #3"]
I --> J{{"Tutor\nMenerima?"}}
J -->|Ya| K["✅ Booking Aktif"]
J -->|Tidak (semua)| E
style A fill:#4f63d2,color:#fff
style K fill:#059669,color:#fff
style E fill:#dc2626,color:#fff