Back to blog

Utsav Darlami

I build machine learning models and get them into production.

[email protected] GitHub

Industry

Machine Learning Engineer, Docsumo

Sep 2021 – Apr 2025

Production document AI for enterprise clients. Every model below ran in production.

LLM extraction package
As lead developer, built the Python package behind the company’s automated extraction API, with LiteLLM routing, Pydantic validation, retries, and Langfuse tracing. Benchmarked GPT-4o, Mixtral-8x7B, and Llama 3.1 for table extraction (about 75% accuracy with GPT-4o) across 300+ documents on average for two enterprise clients.
LayoutLM and variants
Fine-tuned for key-value pair extraction from business documents. Worked on part of the single-GPU training pipeline and ran quantization benchmarks weighing accuracy against inference speed and memory.
YOLO
Fine-tuned to find the parts of a bank cheque, including MICR lines, amounts, dates, and signatures.
Random Forest and XGBoost
Worked on the featurization-to-training pipeline that turns OCR tables into features for spotting column labels and valid rows. Cut featurization time by 60%.
FastText and spaCy
Built and deployed a text classification API on FastAPI and GCP that four downstream services rely on.

Python, PyTorch, Transformers, YOLO, scikit-learn, XGBoost, FastText, spaCy, LiteLLM, Langfuse, Pydantic, FastAPI, GCP

Agents and LLM tools

CanvasChat

Arranges charts and data on a shared canvas from plain-language commands. A four-stage agent pipeline (extraction, context assembly, intent to plan, layout execution) turns each request into a plan you can review, synced live over WebSockets.

TypeScript, React, Python, Gemini, Google ADK, WebSockets

CReview

Code review that feeds static analysis linter output to an LLM for context-aware feedback.

Python, LLMs, linters

Agent starter template

A starting point for Google ADK agents with state management and tool calling set up.

Python, Google ADK

Vision and deep learning

Sandstone segmentation

Labels each pixel of a sandstone micrograph as quartz, pore, or clay, using Gaussian, Sobel, and Gabor filter features and a Random Forest. 95% F1 (Dice).

Python, OpenCV, scikit-learn

Microplastic detection

YOLO detection of microplastic particles in soil-sample microscope images, behind the co-authored paper in Microplastics (2026). I built the training notebook and an inference app with single-image and bulk analysis, nano to medium model sizes, a results database, and a ground-truth versus prediction viewer.

Repository hosted by a co-author.

Python, YOLO, Streamlit, SQLite

K-means color quantization | Live demo

K-means written from scratch in C++ and used to shrink an image’s palette. Compiled to WebAssembly, so it runs in your browser on your own photos.

C++, WebAssembly (Emscripten)

Nepali license plate recognition

Finds plates in video with YOLOv2, splits characters with Otsu thresholding, and reads Devanagari characters with a custom CNN at 96% accuracy.

Python, YOLOv2, Keras, OpenCV

Learning PyTorch

Models written from scratch, including variational, conditional, and adversarial autoencoders on MNIST and CelebA, graph attention networks, and the basics underneath (autograd, perceptron, Adaline).

Python, PyTorch, PyTorch Geometric

Classical ML and optimization

Evolutionpy

A packaged Python library of evolutionary optimizers for problems without gradients, designed so custom fitness functions slot in easily.

Python, NumPy

BreakfastScoop

A Flask app that scrapes live news from Nepali sites and sorts it into 10 topics with Naive Bayes at 81% F1.

Python, BeautifulSoup, Flask, scikit-learn

Web

CreoV2 and Django-Creo

An image, video, and art sharing platform. I built the Django backend API and database schema.

JavaScript, Django, Python

Publications and talks