Blog
Thoughts on AI, engineering, and building products.
Credit Risk Assessment When the Data Was Never Built for It
A credit model assumes a feature matrix and a column of labels. An operational loan warehouse hands you neither. The real work is manufacturing both: reconstructing features from scattered tables, building the target label out of servicing history, and keeping a strict line between what is knowable at application time and what only the future reveals.
Scoring Motorcycle Condition from Inspection Videos
A multi-modal pipeline that fuses engine-sound audio, a Thai-language note, and a categorical checklist to grade a used motorcycle, and why the right move was to stop predicting an exact score and judge it as a pass/fail instead.
A Full-Lifecycle MLOps System for Credit Default, Part 2: Why Accuracy Is the Wrong Goal for a Lender
A credit model outputs a probability; one threshold turns it into an approve/reject decision. Choosing that number by simulated profit-and-loss instead of accuracy was worth a 30% profit lift on out-of-sample data.
Routing Customer Feedback with Few-Shot Retrieval
Turning a multi-label text-classification problem into structured LLM generation grounded by retrieved examples, with a human-in-the-loop that improves routing without ever retraining a model.
A Full-Lifecycle MLOps System for Credit Default, Part 1: From Messy Data to a Self-Updating Model
How to take a raw, real-world credit dataset all the way to a self-retraining model: pluggable preprocessing, an MLflow experiment matrix, and blue-green model promotion orchestrated by Prefect.
Building a Bilingual Semantic Product Search Engine
Replacing keyword-only product search on a second-hand marketplace with hybrid lexical/semantic search, fed by a real-time PostgreSQL change-data-capture pipeline, and the relevance tuning that decided whether any of it was trustworthy.