Youtube Video Summarizer - Project Recapt

Experience an interactive and efficient way to digest long YouTube videos with Project Recapt. Through the ingenious processing of closed captions using ChatGPT, we enable insightful conversations about the content.

In recent years, long-form videos have gained immense popularity for their ability to delve deeper into topics and reach a global audience. These videos hold a wealth of collective knowledge, but verbal communication's limited information rate can't compete with written forms. Our solution, developed during the 2023 BCS Hackathon, addresses this challenge by facilitating faster information sharing and offering an immersive experience for content creators and their audience.

To accomplish this, we harnessed the power of the YouTube Transcript API (PyPI, GitHub) to extract information in text form. Leveraging OpenAI's API (OpenAI Documentation, GitHub), we fed this text as an initial prompt to ChatGPT. The backend, powered by Flask and Python, offers a seamless RESTful API experience for user interactions.

The frontend is integrated as a Chrome Extension, harmonizing with the YouTube layout. Upon clicking the extension button, an interactive window appears, allowing users to engage with the video's summarized content. I spearheaded the frontend implementation and API integration, contributing to our second-place victory at the hackathon.

Take a look at a demo of the project featuring a popular Lex Fridman podcast with Sam Altman. We first request the extension to summarize the video and then follow up with a more specific question about the safety features in GPT-4.

Tab Split Extension

Introducing Tab Split, a game-changing Chrome extension that empowers users to split their current tab into two halves for independent scrolling.

This ingenious project originated during a Software Construction course at UBC when a teammate faced a frustrating challenge. The course used PrairieLearn for assessments, and one particular assessment required students to analyze a long Java program and locate specific bugs. However, the constant back-and-forth scrolling between the prompt and the code caused unnecessary frustration and hindered the core purpose of the assessments.

To address this pain point, I developed the Tab Split Chrome extension, offering vertical or horizontal splits for the current tab. Inspired by popular IDEs, where such features are expected, Tab Split aims to enhance user productivity and readability.

Additionally, the extension brings the added advantage of enabling users to read long texts on websites that support iframe windows, such as Wikipedia and Wall Street Journal. This feature proves invaluable when processing large volumes of dense information without juggling multiple windows.

Tab Split is now available on the Chrome Store (Tab Split), and I plan to introduce automatic resizing of the secondary screen to fill the entire screen in the next update.

Experience the power of Tab Split in action with the demo below:

Parking Airbnb - Project Beeno

Introducing Beeno, the innovative Parking Airbnb web app that revolutionizes how users can post and book available parking spots for vanlifers, travelers, or local commuters.

Our inspiration for this project came from a teammate's challenging experience while traveling in a van during the summer of 2022. Faced with a lack of suitable parking infrastructure, we developed Beeno as part of the nwHacks 2023 Hackathon project.

I collaborated with a partner to create the backend using Flask and Python, establishing a robust RESTful API and an SQL database.

Beeno boasts an array of impressive features:
• Create a personal account to manage your bookings and parking spot offerings
• Streamlined user authentication for secure login
• Conveniently search for available bookings based on your selected location and date
• Book a parking stall with a single click for seamless planning
• Easily view all your booked parking spots and offered parking stalls, along with booking details
• Effortlessly add new parking stall offerings with images, descriptions, and locations

Witness the magic of Beeno in action with the following demo. See how a user registers an account, books an available parking spot, and receives a concise summary of all their information in a separate tab:


Battlesnake is a multiplayer programming game where each player utilizes snake AI to compete against others. This project uses Python 3 and leverages Flask to receive board state and return game input via REST API. I utilized n-step ahead forecasting to enable the snakes to look ahead several permutations ahead and make the best decision. As part of the project, I wrote 2 variants of the snake apt for its environment: 1) multiplayer battle snake and 2) solo survival snake.

Multiplayer Battle Snake

Battle snake is optimized to most efficiently operate while accounting for other snakes' possible moves. It prefers staying lean and avoiding unnecessary risks. Due to additional snakes and forecast time constraint, it is limited to only 2 moves of forecasts.

The following are the observations from the video:
• Turn 75 shows the snake turning away as getting within the 1 block radius of the snake's next head position carries certain risk.
• This is different from turn 99 when it takes the food with confidence knowing it is an advantageous position before the enemy snake can make the turn.
• On turn 100, it pivots up to avoid further exploring too close to the enemy snake.

Solo Survival Snake

Solo survival snake is optimized to increase the depth considered and add more incentive to consume food. Added depth consideration is unlocked by the absence of other snakes to permute into the future. The snake is also given leniency to consume food as there are less uncertainty in the next turns.

The following are the observations from the video:
• The food seeking behavior is more obvious than the battle optimized snake from the start.
• Turn 156 is exemplifies awareness of further steps ahead and preference for empty space by turning away from the tail.
• After the short detour before chasing the tail again in seeking the next food.
• Similar observation is made at turn 178.
• Starting Turn 220, it gets stuck as any additional food consumption would lead to its own demise.