Projects
A mix of coursework, hackathons, and personal projects. Some repos are private.
A RAG pipeline working through hybrid retrieval over 1000 arXiv AI/ML papers, combining OpenAI embedding search with BM25 and reciprocal rank fusion to aggregate keywords, and reranking a 24 candidate pool with a small local cross encoder to score relevance directly instead of through similarity. A five node LangGraph setup decomposes the query into focused subqueries, grades retrieved context for each on sufficiency, allows for reformulation and retries, and accumulates deduplicated context across passes. Compound queries batch every subquery embedding into a single OpenAI request where each retrieval and reranking path is run concurrently. Deployed as Dockerized FastAPI service on Hugging Face Spaces, loading prebuilt BM25 index and ChromaDB collection at startup rather than rebuilding on the deployed path.
Python · LangGraph · FastAPI · ChromaDB · OpenAI API · Pydantic · BM25A listening history and analytics tool for your listening data, built on Last.fm's API. Syncs all scrobble history data to PostgreSQL database, and runs background threads periodically to sync on new data, or on manual refresh. Uses ON CONFLICT checks and advisory locks to keep overlapping jobs retry safe. Contains 16 analytics endpoints that lean on common table expressions and window functions to gain key insights like streak and binge detection through SQL queries rather than processing full histories in Python app. Filters through user-generated genre tags through curated blacklist and vectorizes remaining tags to use in TF-IDF, cosine similarity based recommendation system, refreshing periodically with a 90 day recency limit for listening history based recommendations. Contains a test suite that runs against a disposable PostgreSQL instance on push and only deploys to live if it passes tests through GitHub Actions.
Python · FastAPI · PostgreSQL · Docker Compose · Amazon EC2 · GitHub ActionsAn open ended text based RPG with a CLI style TUI written in Python and Textual. Gives total narrative freedom by employing LLM as narrator and dungeon master, while giving full control over game state and mechanics to Python based engine. Genre agnostic, meaning you can prompt it for a default fantasy world, or ask for a setting of your choice. The mechanics are abstract. Uses Pydantic based OpenAI structured output schema to enforce response shape and types from LLM responses to seamlessly interface with engine. Context and history logging is built as a three tiered retrieval pipeline, including a verbatim retelling of the most recent "hot context" turns, a rolling summary of recent turns before that which is actively summarized in the background, and old "cold context" logs that have been summarized but moved back to avoid degrading quality through repetitive compaction. Features templates and instructions for engine to introduce pre-written random events, NPC personalities, and more. Includes a journal, character creation and importing/exporting, and a combat and quest system.
Python · OpenAI API · Pydantic · TextualOther Projects
Fullstack desktop and Android application for multi user photo organization. Designed with MVC architecture separating FXML views from controllers, custom Java Serialization persistence layer for local storage, and a central navigation system tracking session state across views. Core functionality ported to a native Android application. Built in a team of two as part of CS213 Software Methodology.
Full stack web app that reads an uploaded resume PDF, analyzes a job description with Google Gemini, and rewrites the resume for stronger alignment, with a validation layer that matches the output against the original resume data to catch hallucinated content and fabricated metrics. Built in 24 hours at HackRU Fall 2025 with two teammates.
An interpreter for a subset of OCaml called MicroCaml, written in OCaml: a regex based lexer, a recursive descent parser handling operator precedence and nested expressions, and a Hindley-Milner type inference engine using constraint generation and Robinson's unification algorithm. Built as part of CS314 Principles of Programming Languages.
This site, designed and built from scratch with no frameworks. Features a persistent fixed sidebar layout, a multi-theme system with local storage persistence and a custom color picker, responsive mobile layout, and smooth page transitions. Built to learn fundamentals and have some fun - try making your own custom theme! Design was inspired by Brittany Chiang's portfolio site.
Interactive visualization of Repeated Forward, Backward, and Adaptive A* pathfinding algorithms on randomly generated grids. Made to help understand foundational search algorithms. Built upon coursework from CS440 Intro to Artificial Intelligence.