SahrulRamadhani29/portfolio

yuk-sehat

Public sourcePrototype

Prototype triase percakapan berbasis Mistral: prompt JSON, pertanyaan lanjutan, konteks riwayat, aturan tanda bahaya, dan dashboard.

Capaian proposal

Lolos proposal PKM-KC

Proposal yuk-sehat lolos pada tahap proposal PKM-KC, tetapi tidak lolos seleksi pendanaan.

Tidak lolos seleksi pendanaan
SoloAI Engineering/LLM, prompt JSON, rule triase, API/database, dan frontend percakapan
Poster prototype yuk-sehat: pemilihan profil, home dengan pengguna demo, dan layar awal chat. Tidak menampilkan hasil diagnosis atau inferensi AI.

Dari keluhan, ke percakapan. Prototype triase percakapan dengan pertanyaan lanjutan, kategori urgensi, dan riwayat. Prototype, bukan diagnosis klinis · cuplikan UI dengan profil demo

Tampilan aplikasi Pemilihan profil / Home pengguna demo / Layar awal chatPerbesar

Sorotan kontribusi saya

Baca seluruh 8 modul kontribusi
Daftar isi · 8 modul kontribusi

Gambaran alur utama

6 langkah

Prototype menggabungkan percakapan Mistral dengan aturan gejala. Jawaban lanjutan melengkapi konteks sebelum aplikasi menampilkan kategori urgensi dan ringkasan.

  1. 01Bangun konteks keluhan

    1. Pilih profil percakapan

      Pengguna & frontend React
    2. Kirim keluhan awal

      Pengguna & API FastAPI
  2. 02Lengkapi informasi dengan AI

    1. Baca keluaran terstruktur

      Mistral & backend
    2. Tentukan pertanyaan berikutnya

      Pengatur percakapan
  3. 03Gabungkan aturan dan hasil

    1. Petakan tingkat urgensi

      Aturan gejala & hasil model
    2. Tampilkan ringkasan percakapan

      Frontend & penyimpanan riwayat
Rincian proses dan percabangan
  1. Pilih profil percakapanPengguna & frontend React

    Masukkan identitas/profil yang digunakan prototype. Riwayat terkait dapat disertakan sebagai konteks percakapan berikutnya.

  2. Kirim keluhan awalPengguna & API FastAPI

    Keluhan, jawaban sebelumnya, durasi yang dikenali, serta ringkasan riwayat disusun menjadi konteks permintaan.

  3. Baca keluaran terstrukturMistral & backend

    Prompt berbahasa Indonesia meminta kategori, urgensi, alasan, dan kebutuhan follow-up dalam JSON yang diproses API.

  4. Tentukan pertanyaan berikutnyaPengatur percakapan

    Saring pertanyaan berulang dan batasi putaran. Pengguna menerima satu pertanyaan lanjutan pada satu waktu.

    Informasi masih perlu dilengkapi?

    • INCOMPLETE. Tampilkan pertanyaan; jawaban masuk kembali ke konteks dan proses AI di fase ini.
    • COMPLETE. Lanjut ke pemetaan aturan, kategori urgensi, dan hasil.
  5. Petakan tingkat urgensiAturan gejala & hasil model

    Pencocokan gejala, tanda bahaya, kelompok risiko, durasi, dan urgensi model digabungkan ke status merah, kuning, atau hijau.

  6. Tampilkan ringkasan percakapanFrontend & penyimpanan riwayat

    Tampilkan kategori dan alasan, lalu simpan riwayat. Rekomendasi berbasis gejala dipisahkan dari urgensi; rekomendasi OTC tidak ditampilkan pada status merah.

Prototype percakapan dan kategori urgensi berbasis LLM serta aturan gejala; hasilnya bukan diagnosis klinis.

CASE_STUDY.mdProduk & kontribusi saya

Tentang yuk-sehat

yuk-sehat adalah prototype percakapan keluhan kesehatan yang menggabungkan LLM Mistral dan aturan gejala. Pengguna mengisi profil, menyampaikan keluhan, menjawab pertanyaan lanjutan, lalu membaca kategori urgensi, alasan, rekomendasi yang terkait, dan riwayat percakapan.

Saya membangun frontend React, backend FastAPI, integrasi model, prompt JSON, aturan triase, penyimpanan riwayat, serta dashboard puskesmas. Fokus proyek ini adalah alur percakapan dan integrasi AI Engineering; kategori yang dihasilkan merupakan keluaran prototype, bukan diagnosis klinis.

Kontribusi saya

Halaman profil dan percakapan React

Saya mengembangkan halaman awal/profil, chat, loading pertanyaan, hasil kategori, alasan AI, rekomendasi, serta riwayat. React Router menghubungkan navigasi, sedangkan hook dan service Axios menghubungkan UI dengan backend. Saya memetakan status API agar layar menampilkan proses tanya-jawab atau ringkasan sesuai keadaan percakapan.

Integrasi Mistral dan migrasi provider

Saya mengganti integrasi model sebelumnya dengan Mistral chat completion. Saya mengerjakan pemanggilan SDK, pembacaan respons, dan pengubahan hasil menjadi bentuk yang digunakan endpoint aplikasi. Hubungan frontend, backend, dan model disusun agar keluaran AI dapat diteruskan ke alur percakapan yang sama.

Prompt Indonesia dan JSON terstruktur

Saya menyusun system prompt berbahasa Indonesia untuk kategori keluhan, tingkat urgensi, kebutuhan follow-up, pertanyaan, dan alasan. Saya menggunakan JSON object response serta memetakan field hasilnya ke schema API. Struktur tersebut membantu frontend membaca informasi yang diperlukan tanpa bergantung pada satu paragraf teks bebas dari model.

Konteks dan pengaturan pertanyaan lanjutan

Saya menggabungkan keluhan awal, jawaban sebelumnya, durasi yang dikenali, dan ringkasan riwayat sebagai konteks model. Saya menyaring pertanyaan berulang, menghindari slot yang sudah dijawab, dan membatasi putaran investigasi. Alur INCOMPLETE menampilkan satu pertanyaan pada satu waktu, sedangkan COMPLETE mengarahkan pengguna ke hasil.

Katalog gejala, tanda bahaya, dan fuzzy matching

Saya mengembangkan katalog serta rule yang mempertimbangkan tanda bahaya, kelompok risiko, dan durasi keluhan. Saya menghubungkan teks pengguna dengan pemetaan kata dan fuzzy matching melalui TheFuzz. Hasil pemetaan ini digunakan bersama keluaran model pada proses penentuan kategori urgensi aplikasi.

Kategori urgensi dan rekomendasi berbasis gejala

Saya menggabungkan rule, indikator manual, dan urgensi model menjadi status merah, kuning, atau hijau. Saya memisahkan jalur rekomendasi berbasis gejala dari penghitungan urgensi. Pada hasil merah, rekomendasi OTC tidak ditampilkan; frontend menampilkan kategori serta alasan yang dikembalikan oleh backend.

API FastAPI dan riwayat PostgreSQL

Saya menyusun schema input/output Pydantic, endpoint triase serta riwayat, model log SQLAlchemy, dan koneksi PostgreSQL. Riwayat terkait identitas yang dimasukkan dapat digunakan sebagai konteks percakapan berikutnya. Saya menghubungkan proses simpan dan baca tersebut dengan halaman riwayat pengguna.

Dashboard puskesmas dan penyajian hasil

Saya menambahkan dashboard untuk membaca entri berstatus merah serta menghubungkannya dengan query backend. Pada sisi pengguna, saya menyatukan tampilan hasil, alasan AI, rekomendasi, serta riwayat dengan data respons aplikasi. Halaman tersebut melengkapi perjalanan dari keluhan awal sampai pencatatan hasil percakapan.

Bidang & teknologi inti

Bidang proyek

AI EngineeringFull-stack WebBackend & APIData & Databases

Teknologi inti

ReactPythonFastAPIMistral AIPostgreSQLSQLAlchemyPydanticTailwind CSS

31 commit dalam 12 bulan terakhir

Semua branch
NovDesJanFebMarAprMeiJunJulAguSepOktNov
Minggu
Senin
Selasa
Rabu
Kamis
Jumat
Sabtu
Arahkan ke kotak untuk melihat tanggal.
SedikitBanyak
Streak saat ini0 hari
Streak terpanjang dalam periode3 hari
Hari aktif dalam periode4 hari
Data terverifikasi · pembaruan dijadwalkan tiap jam.
Cara perhitungan · 1 repo · 1 branch

Commit milik saya yang terjangkau dari seluruh branch remote saat sinkronisasi. Satu SHA dihitung sekali, termasuk jika ada di beberapa branch atau fork. Merge commit dikecualikan. Tanggal memakai waktu author dalam WIB, bukan waktu push. Streak saat ini tetap berjalan bila commit terakhir kemarin dan hari ini belum selesai.

Ini kalender commit dengan cakupan semua branch, sehingga angkanya dapat berbeda dari kalender contributions GitHub yang juga memiliki jenis aktivitas dan aturan branch sendiri. Kalender ini khusus untuk proyek yang sedang dibaca.

Riwayat kontribusi

31 commit non-merge milik saya · Seluruh branch · Data 3 November 2026.

Contoh commit public
Kembali ke semua proyek