Projects

A selection of research and engineering projects. These descriptions are intentionally longer than resume bullets and focus on the technical problem, design choices, and current status.

Static Verification for PyTorch Tensor Programs

Python · Rust · Z3 · Protocol Buffers · In development

This project is a static type checker for PyTorch tensor dimensions. currently the project implements a basic "static linker", which I use lightly because Python by design can't support a proper static linker, I had to make some restrictive assumptions to make it work properly. So, the tool can resolve imports across multiple files, as long as imports are strictly at the top of the file, it doesn't support lazy imports yet (imports in functions...). As of this commit, the tool supports only a fraction of PyTorch operations, so look at it as more of a proof-of-concept rather than the one tool to solve every PyTorch problem one may encounter.

The tool is built in Python and Rust. I use Python because it provides me with a Python parser, and "ast" module, which makes creating a richer Python IR much, much faster than if done manually. Also, this guarantees no semantic errors are made since I don't have to parse Python myself. Rust acts as the backend of the language, it receives the protobuf messages, decodes them into a Rust IR which matches its Python counterpart exactly, and does all the heavy lifting. I used Rust because I was learning it at the time and its type safety is particularly suited for compiler work.

Rust performs cross-module import resolution and propagates tensor constraints through operations using the Z3 SMT solver. A shape inconsistency is reported only when the accumulated symbolic constraints become unsatisfiable. This avoids rejecting programs merely because a dimension is not yet known.

This project came to my mind after I spent a couple months working on a custom programming language (tokenizer, parser, interpreter) in Java, (very) loosely following Nydstrom's "Crafting Interpreters" book. I spoke to a professor who specializes in compilers at my faculty, and he advised me to make something which I can generate metrics for if I wanted to publish my work, so I thought this was a great project to do just that. A few months into the project, I discovered PyTea by Jhoo et al. (2021), which my pipeline almost exactly mimics. I decided to continue working on the project since it is teaching me a lot about the topic, and also, this tool uses Python's annotations, which PyTea doesn't AFAIK. This tool isn't meant to compete with the existing state of the art software, rather it just exists to demonstrate my interest in the field.

LLM-Assisted Maritime Autonomy Platform

Python · C++ · MOOS-IvP · vLLM · M.Sc. thesis · In development

My thesis investigates how language-model reasoning can be introduced into an autonomous surface vessel without giving up deterministic low-level control. In other words, I developed a multi-agent framework for agents to control a ship in a simulation.

I developed a C++ and Python interface that streams vessel state, including AIS contacts, radar information, and navigation context, into an LLM reasoning pipeline. A ReAct-style navigation agent interprets this state and selects COLREG-aware actions through a constrained tool interface. The ship also can act upon human speech, if you ask it to stop or to give you its intentions, it will decide whether to comply with your commands or not. This is all made possible via local agents, and Whisper for the communications API.

To improve structured command generation, I created synthetic maritime navigation data in simulation and fine-tuned open-weight models, including Mistral-7B and Qwen-8B. The system supports concurrent local model execution through vLLM and is designed to grow into separate navigation, communication, and mission-planning agents.

The central research question is not whether an LLM can steer a vessel directly, but how probabilistic reasoning can be placed safely above a deterministic autonomy stack.

Production Forecasting Research at Amazon

Python · SQL · Amazon Redshift · Statistical forecasting

During my internship with Amazon's QuBIT Midas team, I extended a production forecasting system used for inbound fulfillment-center volume planning in North America.

I owned three research initiatives covering bootstrap-based uncertainty estimation, recurring-event modeling, and operational-disruption modeling. The work required designing statistically distinct overlays, integrating additional operational data, and evaluating changes using Weighted Absolute Percentage Error.

A multiprocessing implementation accelerated large-scale bootstrap inference by up to 4.7×. Separate holiday and yard-closure models reduced WAPE by up to 6.8% on evaluation datasets through configurable historical weighting and warehouse-specific calibration.

I documented the methodology and experiments in an internal research paper and presented the recommendations to scientists and engineers.

EUDR Commodity Classification for PwC

Python · Large language models · Information Retrieval

I developed a proof-of-concept classification pipeline for mapping product descriptions to four-digit Combined Nomenclature commodity codes in support of EU Deforestation Regulation compliance.

Early experiments compared embedding-based semantic retrieval with frontier language models. After evaluating their relative performance, I moved to a two-stage inference design in which a second independent model validated the initial classification.

The validation stage improved recall from 80% to 88% on the internal evaluation set. The final work included deployment recommendations that accounted for enterprise infrastructure and hardware constraints.

Quantum Technology Collaboration Analysis

Python · Network science

This research studies global quantum-technology development through publications, patents, funding, and collaboration networks.

I designed the collaboration analysis using more than 25,000 scientific publications and 9,000 standardized institutions. A major challenge was resolving inconsistent affiliation records, so I built an institution canonicalization pipeline combining LLM-assisted normalization, rule-based processing, and manual validation.

I then constructed weighted research graphs and applied measures including betweenness centrality, Newman edge weighting, and network efficiency to identify structural patterns in the international research ecosystem.

Cisco ACIBILIZER

Python · Ansible · Open source

ACIBILIZER converts Cisco Application Centric Infrastructure configurations into reproducible Ansible automation. The project is aimed at making existing network configuration easier to inspect, version, and redeploy. This project was my first "professional" software development experience, I learned quite a lot about writing cleaner code, and solved a real problem for the first time. The project is entirely deterministic, does not use LLMs, so if you have config files, you can use this tool to convert them into playbooks. IIRC I stopped contributing to the tool after it reached 2 out of 7 (?) supported classes. Development seemingly stopped because LLMs solved this issue entirely not much after.