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.