Hi! I’m Ujjwal, a software engineer drawn to the frontier of technology. I try to work on the hardest problems I can find.

Past

In college I got interested in distributed systems and blockchain, and was the primary author of an NSF-funded research paper, SYMBIOTIC, on a permissionless IoT data-sharing network built on Ethereum.

After college, I spent two and a half years as a full-stack engineer at Kubera, a personal wealth management platform. My favorite work there was re-architecting Fast Forward, Kubera’s fully client-side financial projection engine, and leading Kubera’s AI integration end to end: implementing the newest OAuth standards, and building a custom GPT and later an MCP server.

Now

In February 2026, I left Kubera. I had built on top of frontier models, now I wanted to go a level deeper. I was inspired to work on a problem that first bugged me five years ago: explaining the key ideas in a chess position in natural language. I taught myself transformers from scratch and the basics of reinforcement learning, and got to work.

My first attempt was distilling chess reasoning from a frontier model. I traced the field from the foundational papers to on-policy distillation, and investigated whether distillation can actually transfer chess reasoning. I wrote about that search in Distilling Reasoning: Exploring the Boundaries.

Distillation left me with a data problem: there is no dataset of high-quality chess explanations, and frontier models often miss the idea that actually matters in a position. I found a way to generate the training data I needed, and wrote about that process in Synthetic Data for Chess Explanation: Building Human-Relevant Reasoning Traces.

My ultimate goal is to train a multimodal model. I am still working out the architecture, but the general idea is an LLM grafted onto Chessformer, a transformer-based chess model, with the LLM acting as an interpretability layer: expressing the chess model’s internal spatial reasoning and calculation in terms a human can understand.