Vectorless vs. Vector Retrieval for Legal Documents
Vectorless vs. Vector Retrieval for Legal Documents
2026Undergraduate thesis comparing vectorless LLM reasoning against dense vector retrieval on Qdrant for locating provisions across 308 Indonesian regulations, tested with paired randomization tests over 10,000 permutations and Holm-Bonferroni correction.
MAP@10: 0.88 (vector) vs. 0.95 (vectorless)
PythonQdrantHugging FaceBM25LLM Evaluation
Sokratech Fraud Risk Automation
2025Built a fraud risk platform with a 7-person team for Sokratech, migrating its dashboard from Django to Next.js and Bun and adding FastAPI-based Weight of Evidence scoring.
Next.jsBunFastAPISupabaseDockerPrometheusGrafanaWeight of Evidence (WoE)
Multimodal Image Search Engine
Multimodal Image Search Engine
2026Combined BM25 lexical and CLIP semantic retrieval with reciprocal rank fusion over 31,783 captioned images, adding Rocchio pseudo-relevance feedback and Gemini query expansion, then replaced brute-force FAISS search with an HNSW approximate index for faster retrieval.
31,783 images indexed
PythonFastAPIFAISSCLIPGemini
CV-to-Job Matching Platform
CV-to-Job Matching Platform
2025Built the AI matching service for a 5-person team on a Dockerized FastAPI backend on AWS EC2 with private S3 storage and Lambda PDF extraction, applying prompt engineering to Gemini 2.5 Flash for structured match scores, summaries, and skill gaps.
PythonFastAPIGeminiAWSDocker
Diffusion-Based Image Inpainting
Diffusion-Based Image Inpainting
2025Adapted RePaint diffusion inpainting to emoji restoration, training a denoising diffusion probabilistic model from scratch on 3,440 triplets over 100 epochs at 256x256 resolution, evaluated with PSNR, SSIM, and LPIPS against ground truth.
12.65s per image at 100 diffusion steps
PyTorchDiffusersDDPMComputer Vision
Political Sentiment Analysis on YouTube
Political Sentiment Analysis on YouTube
2025Collected 115,187 comments from 1,257 videos via the YouTube Data API, normalized Indonesian slang and political terms, then extended the InSet sentiment lexicon with contextual negation handling to correct its negative bias.
115,187 comments classified
PythonNLPYouTube Data APIPandas
Biomedical Organ Classification from CT Scans
Biomedical Organ Classification from CT Scans
2025Trained a ResNet-34 from scratch to classify 11 organ types across 61,486 CT scans with class-weighted loss, affine augmentation, and Optuna hyperparameter search, then isolated the effect of residual connections through an ablation study.
0.974 validation F1
PyTorchResNet-34OptunaDeep Learning
Anomaly Detection in Customer Purchasing Patterns
2025Mined association rules across 541,909 retail transactions and helped package a 7-person team's segmentation, rule-mining, and anomaly-detection pipeline into Streamlit.
541,909 transactions analyzed
PythonStreamlitScikit-learnPandasK-Means ClusteringFP-GrowthIsolation ForestCRISP-DM
wahyuht
2025Responsive portfolio website built with Next.js and TypeScript, featuring light and dark themes and restrained motion with Framer Motion.
Next.jsReactTypeScriptTailwind CSSFramer Motion
Letterbookd
2023Full-stack social platform for book enthusiasts with a Django web app and Flutter mobile app, enabling profile management, search, and real-time data sync.
DjangoFlutterDartBootstrapSQLREST API