Hello

Toik.

2025 – 2026 / selected work

Selected projects.

Team projectDeployed
01 / 12

2026 / Web + ML

SIPEDULI

Crime reporting portal with AI risk scoring

Citizens submit reports; an Indonesian-language NLP model scores how urgent each one is, and administrators triage from a dashboard with a map and a per-report explanation.

How it flows

  1. 2,413 news articles
  2. K-Means risk labels
  3. TF-IDF + 7 signals
  4. Tree-ensemble regressor
  5. SHAP explanation
  6. FastAPI + Next.js admin

What I did

  • Built the labels without manual annotation: K-Means clustering over 2,413 news articles produced a risk score for each.
  • Features are a 3,000-term TF-IDF vector plus 7 hand-built text signals; hyperparameters tuned with Optuna (30 trials) and runs tracked in MLflow.
  • Every prediction ships with a SHAP explanation so an administrator can see why a report ranked high.
  • FastAPI REST API, Next.js admin dashboard with an incident map, and a four-service Docker Compose setup.

Results

0.958R² (held-out)
4.21RMSE

Scored against the K-Means-derived risk score, which is a proxy label and not human-annotated.

Stack

Pythonscikit-learnOptunaMLflowSHAPFastAPINext.jsDocker
SIPEDULI interface
Team of 4ML engineer
02 / 12

2026 / Mobile + AI

GALERIA

Art marketplace and auction with visual search

A marketplace for paintings where buyers can photograph an artwork and find similar ones. I built the Visual Search feature end to end, from model training to the camera screen in the app.

How it flows

  1. Painting dataset
  2. ConvNeXt fine-tuning
  3. ONNX export
  4. FastAPI + pgvector
  5. Flutter camera search

What I did

  • Fine-tuned ConvNeXt in PyTorch and tuned it with Optuna.
  • Exported to ONNX and checked that outputs match the PyTorch model to within 1e-4.
  • Similarity search over embeddings in PostgreSQL with pgvector, behind a FastAPI service.
  • Integrated the camera flow into the Flutter app.

Results

0.78Macro-F1
0.80Accuracy
0.81Recall@1 (style)

Stack

PyTorchConvNeXtOptunaONNXFastAPIpgvectorFlutter
Preview coming soon
Coursework
03 / 12

2026 / Recommender

APBD Jawa Timur

Budget allocation recommendation system

A decision-support dashboard that groups East Java regencies by spending profile and predicts the Human Development Index (IPM) so planners can test allocation changes.

How it flows

  1. 38 regencies and cities
  2. K-Means clusters
  3. Random Forest per cluster
  4. IPM prediction
  5. React what-if dashboard

What I did

  • Clustered all 38 regencies and cities with K-Means.
  • Trained one Random Forest per cluster to predict IPM.
  • React dashboard with a what-if simulation: change an allocation and see the predicted effect.

Stack

Pythonscikit-learnK-MeansRandom ForestReact
Preview coming soon
FreelancePrivate
04 / 12

2026 / Freelance

PSI & MOC Portal

Process safety documents and change approvals

A document portal and Management of Change approval workflow for a regional terminal network, built for Pertamina Patra Niaga Regional Jatimbalinus.

How it flows

  1. Excel SOP + risk formula
  2. App workflow (8 stages)
  3. Role-based access
  4. Word / PDF export
  5. Archive migration

What I did

  • Covers 38+ terminals, with about 19 API routes and role-based access.
  • Translated the client’s 8-stage MOC procedure and its Excel risk formula into an application workflow with Word and PDF export.
  • Migrated about 2,980 archive files (9.2 GB) to cloud storage.
  • Fixed N+1 queries: in a local stress test with 120 users, failed requests dropped from 98.3% to 0%.

Stack

Next.jsTypeScriptPostgreSQLCloudflare R2

Client work: no public repository.

PSI & MOC Portal interface
Coursework
05 / 12

Data engineering

Big Data & Data Warehouse

Hadoop pipeline and Pentaho star schema

Two practicums: a Dockerized big data pipeline from a relational database to analytics, and an ETL that loads a retail star schema.

How it flows

  1. MySQL
  2. Sqoop
  3. HDFS
  4. Hive
  5. PySpark
  6. Airflow schedule

What I did

  • Dockerized Hadoop stack with Sqoop ingestion, Hive tables, PySpark jobs and Airflow orchestration.
  • Pentaho ETL into a star schema with a fact table of 437,724 rows.

Stack

DockerHadoopHivePySparkAirflowPentahoMySQL

Repository not public yet.

Preview coming soon
Team of 5P2MW 2025
06 / 12

2025 / Mobile

SampahKU+

Subscription waste pickup app prototype

A prototype for a subscription-based household waste pickup service, submitted to the Program Pembinaan Mahasiswa Wirausaha (P2MW). It passed campus-level selection.

How it flows

  1. Customer subscribes
  2. Driver is assigned
  3. Pickup is confirmed
  4. Admin monitors

What I did

  • Three roles in one app: customer, driver and admin.
  • Passed the campus selection stage; the funding stage was not secured.

Stack

FigmaMobile prototype
Preview coming soon
FreelanceLive
07 / 12

2026 / Freelance

Sunrise Tour & Travel

Booking website for an inter-city shuttle service

A booking site for an inter-city shuttle service in East Java. Passengers pick a route, date and seat count, and the business gets an automatic revenue recap.

How it flows

  1. Route search
  2. Booking form
  3. Order to the operator
  4. Revenue recap in Google Sheets

What I did

  • Booking form with route, date and passenger count.
  • Automatic revenue recap in Google Sheets.

Stack

JavaScriptHTMLTailwind CSSGoogle Apps ScriptGoogle SheetsVercel
Sunrise Tour & Travel interface
FreelanceLive
08 / 12

2026 / Freelance

Seporsi Catalog

Catalog and ordering site for a frozen meal brand

A catalog and ordering site for a frozen home-cooked meal brand: customers browse the menu, fill the cart and send the order over WhatsApp.

How it flows

  1. Catalog
  2. Cart
  3. Checkout form
  4. WhatsApp order

What I did

  • Product catalog and a preparation guide for each item.
  • Shopping cart and a checkout form that sends the order to WhatsApp.

Stack

JavaScriptHTMLCSSVercel
Seporsi Catalog interface
09 / 12

Sentiment analysis

Sentiment Banking

Sentiment analysis of banking customer reviews

Classifies banking customer reviews as positive, negative or neutral using NLP and machine learning, with a dashboard to explore the results.

Stack

Python
Preview coming soon
Live
10 / 12

Web + ML

EduPass

SNBP admission-chance predictor

A web system that estimates the chance of a student passing the SNBP selection for Indonesian state universities, using machine learning on school, university and passing-grade data.

What I did

  • Django backend on PostgreSQL, moved over from MongoDB through the Django ORM.
  • Data management for schools, universities, passing grades and capacity, loaded from CSV files with an import script.
  • Frontend deployed on Vercel.

Stack

PythonDjangoPostgreSQLTypeScriptVercel
EduPass interface
11 / 12

AI

AI Interview Simulation

Job interview practice with automatic feedback

A job interview simulator: it generates interview questions automatically and gives feedback, to prepare for real interviews.

Stack

Python
Preview coming soon
12 / 12

ML

Used Car Price Prediction

Price prediction for used cars

A machine learning model that predicts used-car prices from features such as brand, year and mileage, with a small web app packaged in Docker.

Stack

Pythonscikit-learnDocker
Preview coming soon