## Inspiration

While attending Hack the 6ix, our team had a chance to speak to Advait from the Warp team. We got to learn about terminals and how he got involved with Warp, as well as his interest in developing something completely new for the 21st century. Through this interaction, my team decided we wanted to make an AI-powered developer tool as well, which gave us the idea for Code Cure!

## What it does

Code Cure can call your python file and run it for you. Once it runs, you will see your output as usual in your terminal, but if you experience any errors, our extension runs and gives some suggestions in a pop-up as to how you may fix it.

## How we built it

We made use of Azure's OpenAI service to power our AI code fixing suggestions and used javascript to program the rest of the logic behind our VS code extension.

## Accomplishments that we're proud of

We were able to develop an awesome AI-powered tool that can help users fix errors in their python code. We believe this project will serve as a gateway for more people to learn about programming, as it provides an easier way for people to find solutions to their errors.

## What's next for Code Cure

As of now, we are only able to send our output through a popup on the user's screen. In the future, we would like to implement a stylized tab where we are able to show the user different suggestions using the most powerful AI models available to us.
We were inspired to create a tool that would make it easier for people to understand and learn from code, regardless of their experience level.
What it does:

Code Assistant is a Firefox extension that uses AI to provide simple, easy-to-understand explanations of any code you come across. With just a few clicks, you can select any piece of text and get a clear explanation of what it does and how it works.
How we built it:

We used a combination of natural language processing and machine learning techniques to analyze and understand code. The extension was built using JavaScript and is compatible with Firefox.
Challenges we ran into:

One of the biggest challenges we faced was developing an AI that could accurately understand and explain code in a way that was accessible to users of all experience levels. Additionally, we encountered challenges in integrating our AI with the Firefox extension.
Accomplishments that we're proud of:

We're proud of the fact that Code Assistant is able to provide clear, accurate explanations of code that are easy for anyone to understand. We're also proud of the user-friendly interface we've created.
What we learned:

We learned a lot about natural language processing and machine learning techniques, as well as the process of building a Firefox extension.
What's next for Code Assistant:

We plan to continue improving and updating the AI behind Code Assistant and to make it compatible with other browsers. We also hope to add new features such as code snippets and examples in the future.
## Inspiration

All of us have gone through the painstaking and difficult process of onboarding as interns and making sense of huge repositories with many layers of folders and files. We hoped to shorten this or remove it completely through the use of Code Flow.

## What it does

Code Flow exists to speed up onboarding and make code easy to understand for non-technical people such as Project Managers and Business Analysts. Once the user has uploaded the repo, it has 2 main features. First, it can visualize the entire repo by showing how different folders and files are connected and providing a brief summary of each file and folder. It can also visualize a file by showing how the different functions are connected for a more technical user. The second feature is a specialized chatbot that allows you to ask questions about the entire project as a whole or even specific files. For example, "Which file do I need to change to implement this new feature?"

## How we built it

We used React to build the front end. Any folders uploaded by the user through the UI are stored using MongoDB. The backend is built using Python-Flask. If the user chooses a visualization, we first summarize what every file and folder does and display that in a graph data structure using the library pyvis. We analyze whether files are connected in the graph based on an algorithm that checks features such as the functions imported, etc. For the file-level visualization, we analyze the file's code using an AST and figure out which functions are interacting with each other. Finally for the chatbot, when the user asks a question we first use Cohere's embeddings to check the similarity of the question with the description we generated for the files. After narrowing down the correct file, we use its code to answer the question using Cohere generate.

## Challenges we ran into

We struggled a lot with narrowing down which file to use to answer the user's questions. We initially thought to simply use Cohere generate to reply with the correct file but knew that it isn't specialized for that purpose. We decided to use embeddings and then had to figure out how to use those numbers to actually get a valid result. We also struggled with getting all of our tech stacks to work as we used React, MongoDB and Flask. Making the API calls seamless proved to be very difficult.

## Accomplishments that we're proud of

This was our first time using Cohere's embeddings feature and accurately analyzing the result to match the best file. We are also proud of being able to combine various different stacks and have a working application.

## What we learned

We learned a lot about NLP, how embeddings work, and what they can be used for. In addition, we learned how to problem solve and step out of our comfort zones to test new technologies.

## What's next for Code Flow

We plan on adding annotations for key sections of the code, possibly using a new UI so that the user can quickly understand important parts without wasting time.