Featured projectData Science/AnalyticsLoan analysis
Pythonscikit-learnXGBoostPandas
- Random Forest model accuracy
- 97.40%
- #1 feature in Random Forest and XGBoost
- Income
- LogReg after log transform + scaling
- +1.49 pp
- Problem
- Which customer attributes relate to personal-loan uptake, and how do classification approaches compare?
- My work
- Analyzed customer data and compared classification models, delivering a notebook, model artifacts and a written report.
- Result
- Random Forest recorded 97.40% accuracy. Tree-based feature importance ranked Income first in both Random Forest (56.34%) and XGBoost (39.72%). For Logistic Regression, applying a log1p transform with RobustScaler increased recorded accuracy from 88.72% to 90.21%, a +1.49 percentage-point improvement.
Featured projectML EngineeringMakemore
PythonPyTorchNeural Network ImplementationPaper ReadingNatural Language ProcessingDeep Learning
- parameters built and trained from scratch
- 10M+
- character context window
- 256
- Problem
- Understanding a language model requires more than calling an API. I wanted to follow the mathematics from a bigram baseline to a working GPT.
- My work
- Built a character-level GPT from scratch using PyTorch, implementing attention, training and Indonesian poetry generation.
- Result
- Delivered a configurable GPT module with six Transformer blocks, six attention heads per block and a 256-character context window, plus training/inference scripts and generated poetry examples.
Featured projectAI EngineeringDio the Chatbot
LangChainRAGRetrievalEmbeddingsTypeScriptNext.jsHybrid SearchQdrantBM25Redis
- to understand Hans quickly
- 1 chat
- Problem
- A recruiter should find relevant evidence without reading every portfolio page.
- My work
- A conversational RAG guide that answers questions across Hans’s projects, experience and source material.
- Result
- An interactive guide that lets visitors ask about Hans’s work and get source-backed answers without reading every portfolio page.
Data Science/AnalyticsMonelytics
PythonPandasscikit-learnNumPyMatplotlibSeabornStreamlitMachine LearningDeep LearningData VisualizationTeamworkCommunication
- analysis coverage
- 4 banks
- team modeling scope
- 9 approaches
- Problem
- Comparing forecasting approaches requires a consistent data pipeline and evaluation rather than a single prediction.
- My work
- Led EDA, preprocessing, feature engineering and LSTM implementation for a team stock-analysis application.
- Result
- Compared nine approaches for four Indonesian banks. The team delivered five modeling notebooks, four bank-specific LSTM files and a Streamlit application with RMSE/MAE comparisons.
ML EngineeringWhisper fine-tuning
PyTorchHugging Face TransformersPythonHugging FaceSpeech RecognitionFine-TuningDeep LearningNatural Language Processing
- relative WER reduction
- 25.62%
- German evaluation utterances
- 16,082
- Problem
- How does adapting a small speech model to a specific language change recognition?
- My work
- Adapted Whisper-Tiny to German speech, with reproducible training, evaluation and published model weights.
- Result
- The V2 notebook records word error rate falling from 43.49% to 32.35% across 16,082 German utterances: 11.14 percentage points, or 25.62% relative reduction. Published German and French model variants with training logs.
ML EngineeringResNet on CIFAR-10
PythonPyTorchConvolutional Neural NetworksImage ClassificationData AugmentationPaper ReadingComputer VisionDeep Learning
- reported test accuracy
- 87.92%
- gain across configurations
- ~12.92 pp
- Problem
- Understanding residual networks means testing how architecture and augmentation affect image classification.
- My work
- Built a configurable image classifier and compared architecture and augmentation choices on CIFAR-10.
- Result
- Reported 87.92% test accuracy on 10-class CIFAR-10, approximately 12.92 percentage points above the earlier ~75% configuration. Delivered training, evaluation, checkpoint and resume workflows.
OthersNarrative Nest
ReactSDXL LightningTypeScriptTailwindCSSGradioUI/UX DesignFront-End DevelopmentTeamworkCommunication
- storyboard capacity
- 9 frames
- generation configuration
- 8 steps
- Problem
- Filmmakers need a quick way to turn written scene ideas into storyboard frames.
- My work
- Led UI/UX, React frontend and AI integration for a shared-prompt storyboard creator.
- Result
- Delivered a nine-frame storyboard interface using 8-step SDXL-Lightning generation, with shared/per-frame prompts, editable shot notes and Firestore-backed generated-image records.
ML EngineeringNeuroCraft
PyTorchFlaskReactTypeScriptPythonTailwindCSSNeural NetworkDeep Learning
- MNIST and Fashion-MNIST
- 2 datasets
- network layer choices
- 5 controls
- Problem
- Beginners need to experiment with neural-network layers without building an entire training application.
- My work
- Built a visual interface for configuring, training and exporting small neural networks.
- Result
- Exposed two image datasets and five layer controls, backed by a Flask/PyTorch training API with CPU/CUDA selection and timestamped model export.
ML EngineeringMNIST from scratch
NumPyPyTorchPythonNeural Network ImplementationPaper ReadingDeep Learning
- recorded validation accuracy
- 90.08%
- trainable parameters
- 7,960
- Problem
- I wanted to understand the operations that turn handwritten pixels into a prediction.
- My work
- Implemented the mathematics of a digit classifier, from initialization to manual backpropagation.
- Result
- The later PyTorch tensor notebook records 90.08% validation accuracy on 16,800 images with 7,960 trainable parameters. Delivered original NumPy and GPU-capable tensor implementations.
Data Science/AnalyticsWorld Cup semifinal analysis
PythonPandasMatplotlibData analysis
- comparison scope
- 4 teams
- cleaned analysis outputs
- 3 datasets
- Problem
- A semifinal preview needs to connect team workload, attacking performance and player statistics into a readable comparison.
- My work
- Translated match and player statistics into a comparative semifinal-preview analysis.
- Result
- Compared four national teams and delivered three notebooks, three cleaned datasets, two exported charts and an editable presentation.
OthersLookSharp
GeminiCodexCursorNext.jsTypeScriptIndexedDBPrisma
AI-assisted build · Codex + Cursor
- eyewear reference inputs
- 3 paths
- default image upload limit
- 10 MB
- Problem
- Trying eyewear online needs a useful preview without losing the identity and context of the original portrait.
- My work
- Built a multimodal eyewear try-on app that connects image generation, validated uploads and a persistent gallery.
- Result
- Delivered three eyewear reference paths: catalog selection, custom upload and image URL. Added a 10 MB default upload cap, generation timing and an IndexedDB gallery with save/delete operations.
OthersIDRXY
TypeScriptCodexCursorNext.jsSupabaseData visualization
AI-assisted build · Codex + Cursor
- index + reference currencies
- 9 + 12
- snapshot cache duration
- 60 sec
- Problem
- Rupiah strength is often judged only against the US dollar. A basket-based view, similar in approach to DXY, helps show how the Rupiah moves against multiple currencies.
- My work
- Implemented a weighted Rupiah index dashboard with timestamped snapshots and explicit handling of missing chart data.
- Result
- Delivered a nine-currency weighted index and 12 additional FX references, with Supabase snapshot retrieval, 1,000-row pagination and a 60-second data cache.
OthersKrakatoa
Three.jsCodexCursorNext.jsReactTypeScriptPython
AI-assisted build · Codex + Cursor
- interactive 3D atlas
- 9 chapters
- reviewed automated suite
- 13 tests
- Problem
- Volcanic history, terrain and monitoring data are difficult to understand when scattered across disconnected sources.
- My work
- Built an interactive 3D field guide with public-data feeds, historical terrain states and resilient parsers.
- Result
- Delivered nine chapters, five historical states and six wind levels. Two APIs integrate three public-data sources; 13 automated tests and the reviewed test/build CI run passed.