01 / 06

Project 01Sole AI Engineer · 2025

Agentic Customer Service

An end-to-end customer-service agent for Optik 150 K that recommends products, builds orders, requests staff approval for sensitive actions, and completes QRIS payments without losing conversation context.

Product demos

See the system in action

Choose a recording, then press play.

Context Recall
85.6%
Up from 73.6%
Answer Relevancy
92.16%
RAGAS evaluation
Product Catalog
200
Unique frames

System flow

From customer intent to a verified transaction

  1. 01UnderstandIntent and session context
  2. 02RetrieveGrounded catalog search
  3. 03Build orderValidated sales details
  4. 04Staff gateApprove, reject, or take over
  5. 05CompleteQRIS and webhook status

Challenge

Customer requests combine product discovery, eye-care needs, prescription details, pricing, store policy, and purchase intent. A static chatbot could not retain the required state or safely execute sensitive actions.

Approach

I designed a stateful LangGraph ReAct workflow with intent routing, MMR retrieval, structured sales slots, validation, confirmation gates, and Human-in-the-Loop approval or staff takeover.

System

FastAPI, DeepSeek-V3, Jina Embeddings v3, Qdrant, MySQL, Midtrans QRIS, dynamic webhooks, audit logging, and Langfuse observability work as one modular service.

Result

Context Recall improved from 73.6% to 85.6%, while Answer Relevancy reached 92.16%. The agent can transition to staff and resume automation without dropping conversation context.

LangGraphAgentic RAGFastAPIQdrantDeepSeek-V3MySQLMidtransLangfuseHITL
Project 02AI Engineer · Contract · 2025

Chat OPA

A production knowledge assistant for PT Riset Perkebunan Nusantara Bogor that turns 100+ unstructured commercial documents into searchable, memory-aware conversations.

Knowledge base
100+
Commercial documents
Ingestion
OCR + LLM
Unstructured content
Delivery
Live
Production product

Knowledge pipeline

From messy source files to a contextual answer

  1. 01IngestDocuments and visual content
  2. 02StructureOCR, cleaning, and context
  3. 03IndexReliable vector embeddings
  4. 04RetrieveLangChain agentic search
  5. 05RespondMemory-aware synthesis

Challenge

Commercial oil-palm knowledge lived across 100+ long, unstructured documents. OCR noise, mixed layouts, and visual material made reliable enterprise search difficult.

Approach

I engineered an OCR and LLM ingestion pipeline, then orchestrated LangChain agents to retrieve, synthesize, and retain the context needed for multi-turn questions.

System

Document parsers, OCR, LangChain, agentic retrieval, vector embeddings, vision-model context, a secure backend, Docker, and production deployment.

Result

OPA became a live internal knowledge assistant that makes domain documents easier to query while supporting contextual and multimodal conversations.

Open the live product
LangChainAgentic RAGOCRVector DatabaseVision LLMDockerProduction
Project 03Independent Agentic AI Project · 2026

Agentic Chess Arena

An evidence-driven Agentic AI system for evaluating ReAct workflows, typed tool calls, self-reflection, failure recovery, and reproducible DeepSeek decisions inside an authoritative chess environment.

Product demo

Human vs DeepSeek live arena

Interactive input, validated execution, and immutable replay evidence.

System flow

From bounded context to a verifiable move

  1. 01ContextProject authoritative state
  2. 02Reason & actSelect a typed action
  3. 03Use toolsInspect without mutation
  4. 04ValidateSchema, legality, and revision
  5. 05ReflectAccept or revise once
  6. 06CommitApply one verified move
  7. 07EvaluateReplay and score offline

Challenge

Agent demos can mix model output, application state, tool results, and hidden recovery logic. That makes it difficult to tell whether an agent followed its protocol or whether the application silently repaired the result.

Approach

I built a LangGraph workflow with bounded context projection, typed structured outputs, read-only inspection tools, one same-model reflection step, and strict failure states.

System

DeepSeek-V4-Flash proposes decisions, while Pydantic and python-chess enforce schema and game rules. Append-only JSONL, PGN, hashes, and replay artifacts preserve every transition. Stockfish 18 evaluates only after execution.

Result

The frozen experiment completed all 56 cases. ReAct committed 28/28; reflection committed 25/28 and revised no candidate. Three invalid proposals became typed protocol forfeits—never substituted moves or silent repairs.

Open the demo recording
Agentic AILangGraphReActTool CallingSelf-ReflectionStructured OutputsDeepSeek-V4-Flashpython-chessStockfish 18Strict ReplaySSE
Project 04Individual Machine Learning Project · 2026

Book Recommender

An end-to-end hybrid recommendation system that helps readers find similar books and personalized Top-N results while handling sparse feedback, cold start, and duplicate ISBN editions.

Product interface

Similar, collaborative, and hybrid discovery

The same verified model artifact powers the interface and API.

Book Recommender interface with catalog statistics, hybrid recommendation controls, and ranked book results
Hybrid recommendation Personalized Top-N results Each result exposes the strongest contributing signal.
Raw Books
271K
Catalog records
Raw Ratings
1.15M
Book-Crossing interactions
Ranking Signals
3
Content, collaborative, popularity

Recommendation pipeline

From sparse interactions to a verified ranking

  1. 01ValidateSchema, ratings, and identifiers
  2. 02CanonicalizeGroup equivalent ISBN editions
  3. 03Build candidatesTraining-only catalog
  4. 04RankContent, item CF, popularity
  5. 05ServeChecksum-verified artifact

Challenge

Book-Crossing contains a large but sparse preference signal. Rating 0 means no explicit score, new users lack history, and one literary work can appear under several ISBN editions—creating duplicate results and evaluation leakage.

Approach

I combined TF-IDF metadata similarity, adjusted-cosine item collaborative filtering, and popularity fallback in a weighted hybrid. Canonical-work identity removes equivalent editions and dynamic weights adapt to limited user history.

System

A shared Python pipeline keeps cleaning, training, evaluation, CLI, FastAPI, and Streamlit consistent. Training and serving load the same checksum-verified model bundle rather than rebuilding artifacts independently.

Result

The system supports similar-book search and personalized recommendations with cold-start fallback. A larger catalog produced a 17.9% higher NDCG@10 point estimate, but its adjusted confidence interval crossed zero, so I retained the smaller baseline.

Open the live demo View the GitHub repository
Hybrid RecommenderContent-BasedItem Collaborative FilteringCold StartTF-IDFFastAPIStreamlitDocker
Project 05Data Science · 2026

Customer Segmentation

A customer-analytics workflow that treats cancellations and returns as business signals rather than simply discarding them.

Challenge

Raw retail data contains missing customer IDs, cancellations, negative quantities, and customers whose gross spend hides a high return value.

Approach

I converted transactions into richer customer profiles, including recency, frequency, net monetary value, activity, product variety, and return ratios.

System

Python, pandas, feature validation, log transformation, standardization, K-Means, and cluster-profile analysis.

Result

Four segments were selected for clearer campaign actions: high value, active regular, low activity, and return-heavy customers.

Read the technical article
Customer AnalyticsK-MeansRFMFeature Engineering
Project 06Machine Learning contributor · Bangkit capstone C241-PS363

SootheMate

A mobile application for monitoring stress through personal data, BMI, and sleep patterns. Stress estimates, daily trends, and history help users understand their patterns and make more informed lifestyle choices.

Project objectives

Make stress patterns easier to understand

Challenge

Understanding stress requires more than a single reading. Users need a simple way to record relevant personal inputs and revisit how their estimated stress changes over time.

Approach

Our capstone team combined machine learning with a mobile experience for personal inputs, stress estimates, and history. My role was in the Machine Learning team.

System

The project separates mobile development, machine learning, and backend services into three repositories. The ML workflow uses Python, data preprocessing with scikit-learn, and TensorFlow/Keras neural networks.

Result

The team produced SootheMate with stress prediction, daily trends, history tracking, and account access. The app showcase and source repositories document the product and its implementation.

Project overview
PythonTensorFlow / Kerasscikit-learnpandasNumPy