A showcase of my solo and group work
Project Sponsored by Office for Students with Disabilities A Flutter-based AR application that uses computer vision to detect walls, pillars, and obstacles in real time, while estimating their distance, size, and orientation. The system promotes detected objects to known landmarks (such as the campus Golden Eagle statue) by cross-referencing a custom GeoJSON landmark database. Built with ARCore/ARKit depth data, TensorFlow Lite segmentation, and integrated voice + haptic feedback for blind and low-vision navigation. Designed as a modular foundation to later integrate with routing and accessible campus navigation.
This interactive art project invites visitors to create their very own unique fish through a web-based generator hosted on AWS. Using a React-powered interface, each guest entry is logged into a Google Spreadsheet, where a Python program actively scans for new submissions. The program then generates custom fish textures and metadata, bringing each creation to life. These digital fish are seamlessly imported into a Unity-powered ocean simulation, where they join a living ecosystem alongside sharks modeled after real whale shark behavior. The result is a dynamic, evolving underwater world—built collaboratively by the audience—where art, code, and nature-inspired AI merge into an immersive experience. *Showcased in NYC climate week*
Michi is a conversational assistant designed to feel more like a friend than a standard virtual helper. It integrates short-term and long-term memory, combining a vector database for contextual recall with MySQL storage for persistent facts and emotional states tied to each person it interacts with. Michi not only handles tools and actions through inline commands but also maintains dynamic emotional awareness, adjusting its responses based on user sentiment and past interactions. Over time, it evolves its mood and tone uniquely toward each person, creating more natural and personalized conversations. The project uses local LLMs for dialogue, OpenAI APIs for structured fact extraction, and a modular tool system to extend capabilities (e.g., time lookup, external APIs). With conversation logging, mood tracking, and memory-driven context injection, MichiAI blends functionality and personality into a single evolving companion.
Dark Current is a 2-player co-op survival horror game where players must work together to survive in a haunted warehouse plagued by a relentless ghost. One player searches for cursed notes to burn while the other maintains a fragile generator that powers the lights, with survival hinging on keeping it alive. The game features momentum-based parkour movement (vaulting, wall-running, sliding), an escalating ghost AI that grows stronger as progress is made, and randomized spawns for replayability. Built in Unity over four months with a small team, Dark Current emphasizes atmospheric horror, cooperative strategy, and high-intensity escapes.
The Meeting Summarizer is a custom Discord bot that streamlines remote collaboration by transforming raw voice channel transcripts into clear, professional meeting notes. With a simple /summarize slash command, the bot gathers all daily transcriptions from a channel, automatically removes boilerplate text, and leverages OpenAI’s GPT-4.1-mini to generate structured summaries. Each report highlights key topics, decisions, action items (with assignees and deadlines), open questions, notable quotes, and participation stats, making it easy for teams to stay aligned and productive without sifting through lengthy logs.
This project is a smart plant care system using a Raspberry Pi 4 that automates watering, nutrient feeding, and daily monitoring for outdoor plants. It combines soil moisture and temperature sensors with live weather data from online APIs to decide when and how much to water. A camera takes daily photos, which are sent to a Discord bot where users can request plant updates. To make it more adaptive, the system also leverages computer vision analysis of plant images to detect stress (like yellowing or wilting) when sensors alone aren’t enough, allowing it to better estimate water and nutrient needs.
This project is a computer vision–based mouse control system that allows users to move the cursor and perform basic mouse actions using hand gestures instead of traditional input devices. Built with Python, it leverages OpenCV for real-time video capture and a hand-tracking library to detect and track hand landmarks with high accuracy. By mapping the relative position of the user’s index finger to screen coordinates, the program translates natural hand movements into cursor motion. Additional gestures, such as pinching or tapping fingers together, are recognized as mouse clicks or scrolling actions.
A Python-based tool that combines Google Maps APIs and OpenWeatherMap to deliver accurate, real-time weather information for any location. Users can type natural queries like “la”, “bay area”, or “my dorm near UCLA”, and the program intelligently resolves the input into a precise city using geocoding and alias handling. It then retrieves live weather data such as temperature, humidity, wind, and conditions, presenting results in a clean, structured format along with a human-readable description. The program features robust error handling, support for unit preferences (imperial/metric), and easily extensible alias mapping.
This is a dynamic personal portfolio website hosted on AWS, leveraging S3 buckets for static asset storage and EC2 for backend hosting. The site is built with Spring Boot and JTE templating, providing a clean and efficient way to showcase both current and past projects. Project information is stored in lightweight JSON files on the EC2 instance to reduce costs, rather than relying on Amazon’s managed RDS service. For more detailed write-ups, the site serves static HTML pages, enabling in-depth exploration of select projects while maintaining a cost-effective and scalable architecture.
This program is a lightweight desktop app that lets you download high-quality MP3 files from both YouTube and Spotify, supporting individual songs as well as full playlists. It automatically detects the type of link you provide, uses yt-dlp for YouTube and spotdl for Spotify to fetch the best audio, and converts it to MP3 using FFmpeg. All downloads are saved to a single downloads/ folder, with real-time status updates shown in the built-in log window, making it an easy, all-in-one tool for building your personal music library.
This project is a Discord bot that delivers a daily Word of the Day in Tagalog, complete with definitions, example sentences, and explanations. Every 24 hours, the bot automatically generates a new word, ensuring a fresh learning experience for users. To avoid repetition, all previously used words are stored in a JSON file. The bot leverages OpenAI to intelligently source and explain new Tagalog words, blending language learning with AI-powered content generation.
This is a typing test application built with Python that combines real-time performance tracking with AI-powered sentence generation. It uses multithreading to handle time tracking, input monitoring, and live stat updates smoothly, ensuring a responsive experience. Tkinter provides the GUI, displaying progress and results in real time. Sentences are dynamically generated through GPT-4o (OpenAI API) with a specified word count, while FuzzyWuzzy handles accuracy scoring by comparing user input against the target text. Together, these features create an interactive and adaptive typing test that measures speed, accuracy, and consistency.
This project is a recreated and enhanced version of the school’s portal page, designed to unify and streamline its scattered features into a single cohesive interface. Unlike the original portal, which is cluttered and fragmented, this custom build focuses on simplicity, usability, and efficiency, bringing all the essential tools and information together in one well-structured page.
This is a demo search engine system that processes video data from a CSV file and stores it as structured Video objects in an ArrayList. Implemented a Markov Chain to model relationships between videos and used fuzzy string matching to enable flexible search by title or tags. Designed a custom relevance ranking formula that combines video statistics (views, likes, comments, dislikes) with Markov probabilities, producing smarter search results. Also generated a normalized probability matrix to visualize video-to-video recommendation pathways.
This project is a Dungeons & Dragons–style adventure game built on top of a procedurally generated maze created with a maze generation algorithm. As players navigate the labyrinth, they can encounter treasures, spells, potions, and enemies, with combat mechanics closely modeled after traditional D&D gameplay. The primary objective is to escape the maze, but exploration is key — players can only see their immediate surroundings and available movement directions from their current position. This limited visibility forces them to map out the maze manually and keep track of their progress, adding a layer of strategy and immersion to the experience.
Blackjack Game This is a Python-based Blackjack card game featuring a simple graphical user interface and an automated dealer system. Players can gamble with virtual currency, place bets, and play against the dealer in classic Blackjack style. The game includes basic animations to enhance the experience, simulating card dealing and gameplay flow. Although it is no longer maintained or functioning as intended, it demonstrates early work in combining Python, UI design, and game logic to recreate a casino-style card game.
A simple application that tracks accidents within a specified area. Users can pin a location using latitude and longitude, set a radius, and view the most recent accidents reported within that range.
This is an old clicker game i made inspired by a horror short story i read a long time ago.