001~/.profile

About

I'm a CS student at Queen's University on the AI stream, minoring in Economics. I work across the stack, building everything from applied ML models to the back end architecture that actually makes them usable. I really enjoy system design, specifically analyzing the architectural tradeoffs required to make complex applications run efficiently. Lately, I've just been building whatever interesting problem catch my eye. Currently, I'm a Software Developer at the Co-operators.

GETaryanahlawat.dev/
curl -L aryanahlawat.dev

200text/plain; charset=utf-8

npx is interactive

002~/.history

Experience

Co-operators
QMIND
Acetech
Queen's Knights Robotics
University of Toronto
    • Redesigned the public developer portal and made it update itself. A GitHub Actions job pulls the Postman collection, converts it to OpenAPI, and regenerates every docs page and the site navigation, so the docs partners read never drift from the actual API. Nobody edits them by hand anymore.
    • Wrote a static analyzer that finds dead code it's actually safe to delete. It reads 774 low-code modules, builds a reference graph across all of them, and narrows 41k components down to a 2% shortlist, behind a safety gate encoding every false positive I hit while calibrating it.
    • Built the end-to-end test suite for the live chatbot widget in Playwright and TypeScript, driving a full conversation in English and French. Every test reaches the widget through one semantic driver layer, so a DOM change on their end means I fix one file.
    • Built the memory layer that lets the RAG pipeline remember earlier turns instead of treating every question as the first. It stores past interactions as embeddings and drops near duplicates so the store doesn't bloat.
    • Made retrieval catch what a single search method misses, running BM25 keyword search and dense semantic search side by side in Pinecone and merging the rankings with reciprocal rank fusion.
    • Added a check that catches when retrieved evidence is too thin to answer on. When it fires, the system breaks the question into parts and runs another retrieval hop instead of answering anyway.
    • Predicted how long lab tests would take with MLP regression models in PyTorch, tuning hyperparameters to cut mean squared error 12% below the previous baseline.
    • Built the data pipeline feeding those models out of a large SQL dataset with Pandas and NumPy. Time of day and day of week go in as sine and cosine pairs so the model reads them as cyclical, categories as one-hot, plus outlier filtering and feature scaling.
    • Wrote the drive control firmware in C that keeps the robot accelerating smoothly and holding a target speed, using PID controllers.
    • Tightened the autonomous driving so the robot strayed off its intended path almost 20% less on competition runs.
    • Built economic simulations for the COBWEB project where every agent had its own OCEAN personality traits, memory of what happened before, and tolerance for risk.
    • Forced these agents into small markets under Prisoner's Dilemma rules, and watched groups that only cared about their own payoff work out cooperation and migration on their own.

003~/bin/builds

Recent Projects

CardIQ takes a month of spending and works out how to split it across your cards for the best return. Underneath it's a strict integer program solved with PuLP and CBC, handling constraints like utilization ceilings and signup bonuses in integer cents so nothing drifts the way floats do. Rather than build a rigid UI full of sliders for goal setting, I fine tuned a small language model on synthetic data, so you say what you want in plain English and it produces the exact solver weights.

Most RAG pipelines are stateless, so every question starts cold and you keep repeating context you already gave. On the QMIND design team I built the parts that fix that. Retrieval runs keyword and semantic search together in Pinecone and merges the two rankings with reciprocal rank fusion, then a cross encoder reranks the top results. An episodic memory module embeds past interactions into their own namespace, scores which ones matter to the current question, and injects them into the prompt without polluting the citations the user sees. It also filters out near identical records so the store doesn't fill up with the same thing.

VisualizeIt generates a texture and blends it onto whatever the camera is looking at, keeping it stuck in place while the subject moves. YOLOv8 finds the target fast and Mask R-CNN cuts out its exact shape. Tracking then splits in two depending on what it found: MediaPipe Holistic computes 3D rigid transforms for people, ORB feature matching computes 2D homographies for solid objects. Stable Diffusion makes the texture, and OpenCV warps it to the right perspective and alpha blends it onto the mask.

All projects →

004~/.forward

Contact