🚀 Project Portfolio: Enterprise AI Knowledge Portal (GYS Portal)
📖 Project Overview
Mengembangkan platform AI terpusat untuk perusahaan (Garuda Yamato Steel) yang mengintegrasikan berbagai sumber data internal (Smartsheet, OneDrive, SharePoint) dengan kemampuan Large Language Models (LLM). Platform ini berfungsi sebagai "Single Source of Truth" di mana karyawan dapat berinteraksi dengan data perusahaan, menganalisa kontrak legal, dan memantau status proyek melalui antarmuka chat yang intuitif.
🛠️ Tech Stack
Frontend:
* React.js (Vite): Membangun antarmuka SPA (Single Page Application) yang responsif.
* Tailwind CSS: Styling modern untuk UI Chat, Sidebar, dan Admin Dashboard.
* React Markdown & Remark GFM: Merender respon AI menjadi format yang rapi (Tabel, List, Code Block).
* Axios: Manajemen request HTTP ke backend.
Backend:
* Node.js & Express.js: Server utama dengan arsitektur RESTful API.
* MongoDB & Mongoose: Database NoSQL untuk menyimpan User, Chat History, Konfigurasi Bot, dan Logs.
* Multer: Middleware untuk menangani upload file (PDF, Excel, Word, Images).
* Libraries: pdf-parse (PDF text extraction), mammoth (Word extraction), xlsx (Excel processing).
AI & Integrations:
* OpenAI API (GPT-4o): Engine utama untuk analisa teks dan reasoning.
* Kouventa AI (Flowise/Langflow Runner): Integrasi custom agent eksternal via API Runner.
* Smartsheet API: Mengambil data real-time status proyek dan budget.
* Microsoft Graph API: Integrasi ke OneDrive/SharePoint untuk pencarian dan pembacaan dokumen perusahaan.
DevOps & Security:
* Docker & Docker Compose: Containerization aplikasi (Frontend, Backend, Database) untuk deployment yang mudah dan konsisten.
* JWT & Session Auth: Sistem autentikasi aman untuk User dan Admin.
✨ Key Features (Fitur Unggulan)
1. Multi-Agent System (Modular Bots)
Sistem tidak hanya memiliki satu bot, melainkan banyak bot spesialis yang dapat dikonfigurasi secara dinamis:
General Assistant: Menggunakan OpenAI untuk tugas umum.
Project Analyst (Smartsheet Bot): Terhubung ke Smartsheet untuk menjawab pertanyaan seperti "Project mana yang overdue?" atau "Tampilkan dashboard IoT".
Document Search (OneDrive Bot): Mencari dan membaca isi file di folder OneDrive perusahaan tanpa user perlu membuka file satu per satu.
Legal/Sign Bot: (MekariSign) Untuk tracking status dokumen legal.
2. Dynamic Admin Dashboard (CMS for AI)
Membangun dashboard admin yang powerful untuk mengelola "otak" AI tanpa menyentuh kodingan (Hardcode-free):
* Bot Configuration: Admin bisa membuat bot baru, mengubah System Prompt (persona), dan mengatur API Key/Endpoint via UI.
* Starter Questions (Chips): Mengatur tombol pertanyaan cepat (quick reply) untuk setiap bot.
* User Management: Mengatur hak akses user dan bot apa saja yang boleh diakses user tertentu.
* Chat Monitoring & Export: Admin bisa memantau log percakapan dan melakukan export CSV bulanan untuk audit.
3. Advanced Document Analysis (RAG-Lite)
Mengimplementasikan fitur Retrieval-Augmented Generation sederhana namun efektif:
Universal File Reader: Mampu membaca dan menganalisa isi file PDF (hingga 200.000 karakter), Word, Excel, dan Gambar.
Context Injection: Menggabungkan data dari file yang diupload atau data dari API (Smartsheet/OneDrive) ke dalam prompt AI, sehingga AI bisa menjawab berdasarkan data faktual perusahaan.
Visual Data Extraction: Prompt engineering khusus agar AI mampu membaca data tabel/harga yang berupa screenshot di dalam dokumen Word.
4. Smart AI Routing
Mengembangkan AICoreService di backend yang bertindak sebagai "Otak Pusat":
- Mendeteksi jenis bot yang dipilih user.
- Menentukan apakah request harus dikirim ke OpenAI (dengan System Prompt lokal) atau ke Kouventa Runner (yang memiliki brain sendiri).
- Menangani fallback konfigurasi antara Database dan Environment Variables (.env).
💡 Challenges & Solutions (Studi Kasus Teknis)
Challenge 1: AI tidak bisa membaca Lampiran (Annex) di halaman belakang Kontrak PDF tebal.
Solution: Menemukan bahwa library parsing awal membatasi karakter. Saya meningkatkan limit buffer pembacaan teks menjadi 200.000 karakter di backend dan mengoptimalkan prompt agar AI fokus mencari data di bagian akhir dokumen.
Challenge 2: Integrasi dengan Platform AI Pihak Ketiga (Kouventa) yang memiliki format API berbeda.
Solution: Membuat Service Adapter khusus yang mengubah format pesan standar menjadi format JSON input_value / message yang dibutuhkan oleh endpoint Runner Kouventa, serta menangani sesi memori (threadId).
Challenge 3: Menampilkan format Markdown (Tabel/List) yang berantakan di Frontend.
Solution: Mengimplementasikan konfigurasi custom renderer pada komponen ReactMarkdown menggunakan Tailwind CSS untuk memastikan tabel, list, dan heading terformat dengan hierarki visual yang jelas dan profesional.
📸 Visual Portfolio
Halaman Chat: Menunjukkan Sidebar History, Pilihan Bot, dan Input Textarea.

Admin Dashboard: Menunjukkan form edit Bot dengan konfigurasi Smartsheet/Kouventa/OneDrive.

Analisa Dokumen: Screenshot saat AI berhasil menjawab pertanyaan tentang "Total Price" dari file PDF/Word.
