## Inspiration

It's too hard to tell if a job aligns with what you want when searching on job boards and internship sites, so it would be nice if there was a tool to rank the jobs automatically based on your preferences. This way, we can save effort from applying to irrelevant and suboptimal jobs.

## What it does

SuitYourJob uses several different APIs to curate a collection of internship opportunities, then asks the user for a list of positive and negative phrases. It then uses Cohere API to apply natural language processing to the job descriptions, ranking the jobs based on how closely the description aligns to the user's desires semantically.

## How we built it

We used tools such as Serp API and web scraping to query job sites for positions, then used the embed endpoint of the Cohere API to analyze the job description. We take two lists of strings from the user as input, a list of positives and a list of negatives. By comparing the embeddings of each string in these lists with the description with cosine similarity, we can use natural language processing to understand how much the description matches with each of the user's criteria. We use these results to produce a rank, and display the highest ranked jobs to the user for easy application.

## Challenges we ran into

We had trouble with processing the embeddings to produce the results we want. At first, we used Euclidean distance to calculate the degree of similarity between embeddings, but this often matched positive and negative descriptions of the same category, for example "supportive environment" and "stressful environment", as highly similar. After some advice from the representatives of Cohere, we decided to use cosine similarity instead and tweak our ranking formula to reduce this issue.

Another issue was faced was finding a suitable endpoint to collect job data from.
Well-known job websites like indeed and glassdoor 'supposedly' had API endpoints. However, the necessary endpoints were proven non-existent after several hours of research. Spotty documentation and deprecation eventaully led our team to turn to Serp API, which allowed us to utilize google's job search data for job queries in the site.

## Accomplishments that we're proud of

We are proud of building a fullstack web application that has genuine utility to anyone seeking jobs and particularly students seeking internships.

## What we learned

We learned how to use RESTful APIs and link them to the frontend of our application. As well we came to understand the theory of how natural language processing works and what an embedding actually represents. This allowed us to produce an effective formula to rank job descriptions according to an user's preferences.

## What's next for SuitYourJob / JobSuiter

SuitYourJob is a project that we will unquestionably continue working on. We found a lot of fun doing something helpful for our student's environment. We would like to improve all solution and release a fully operational version soon. In particular, we hope to use a finetuned classification model with cohere to be able to categorize and highlight key phrases in job descriptions. Another next step is saving each user's preference in a database and allow them to access their account after authentification. Finally, we hope to use APIs to automatically direct the user to the application link of a job they are interested in so our site can become a proper job portal.
## Inspiration

The idea for devDucky came from the classic rubber duck debugging technique, where programmers explain their code to a rubber duck to find solutions. We thought: What if the duck could talk back? Imagine a duck that not only listens but also warns you about errors, suggests optimizations, and acts as a knowledgeable pair programmer. This led us to envision a smart duck powered by a fine-tuned LLM that combines hardware and software, constantly monitoring your code - it's even proven better than Copilot!

## What it does

devDucky is your intelligent duck friend & IDE that sits on your desk observing your codebase. It gives you suggestions, diagnostics, fixes and anything else you might need!

## How we built it

We built devDucky from the ground up - literally! We fine-tuned the brains behind devDucky using Unsloth, used a MERN stack to create the frontend, along with Python and Flask for the backend. Here's a breakdown of what everything does.

* Unsloth: We used Unsloth to fine-tune and quantize our model. We fine-tuned three different models (llama3.1 @ 375 steps, tinyllama @ 1 epoch, phi3 @ 375 steps) before settling on phi3 due to hardware constraints. We utilized the alpaca-cleaned 52k dataset by Yahma, and quantized all of our models to Q4\_K\_M.
* Express: Our Express implementation forms the backbone of our API architecture, handling backend logic for audio recording and data analysis/cleaning processes.
* Node: We used Node to power our server-side operations, providing a fast and scalable foundation for our backend.
* Vite: This is the main piece of our frontend. Vite is a key factor in enabling rapid UI implementation and efficient routing across our interface.
* Flask: We ran Flask as a dedicated microservice, managing our Python-based backend components, mainly the Ollama integration.
* Ollama: We used the Ollama python library along with the Ollama cli and desktop instance to run inference on our model.
* Mongoose: This streamlines our database operations, storing critical backend information, LLM responses, and user transcripts with efficiency and reliability.

## Challenges we ran into

We had originally planned to use an RP2040 to give devDucky some ears, but it turns out there was no compatible microphone hardware. Luckily, we had an Arduino nano with a built-in mic, and 8 hours of troubleshooting later - it was working! Except, there was tons of static interference... So, our final option was to use a USB microphone, which worked perfectly!
We also ran into issues with our laptops not being powerful enough to run our heavily fine-tuned models, forcing us to adapt and fine-tune phi3, a lightweight model, at the last minute.

## Accomplishments that we're proud of

We're very proud of devDucky's efficiency compared to other code assistants like Copilot. When compared to Copilot, devDucky's base model is approximately 15% more efficient (without RAG or fine-tuning). With fine-tuning and RAG in the picture, expect that figure to be closer to 35%! We're also very proud of the fact that NONE of your data gets sent to a third party - devDucky's model is fully local! It's free, private, and fast - what more could you ask for?

## What we learned

Throughout the development of devDucky, everyone on the team learned a lot. Everyone stuck to parts of the project that fit their own expertise - the biggest thing that came from this was proper file handling of file structure. Surprisingly, we barely had any merge conflicts, mainly due to us having a few different branches open at once. We also learned the importance of testing hardware before implementing it, because you never know if a component will be faulty, and we could have saved at least 8 hours of troubleshooting a faulty microphone. Lastly, find an idea you all agree with - we mulled over ideas for a while, but in the end it was worth it because we ended up finding something that we were all passionate about.

## What's next for devDucky

The next steps for devDucky are moving model hosting to servers which would enable us to use even bigger models like codegeex4-all-9b as well as run inference faster, leading to an all around smoother experience. Aside from that, integrating the app with something like Datadog to enable a higher level of observability is another high priority. We have many small tweaks to make as well, but those are the main things!
## Inspiration

There should be an effective way to evaluate company value by examining the individual values of those that make up the company.

## What it does

Simplifies the research process of examining a company by showing it in a dynamic web design that is free-flowing and easy to follow.

## How we built it

It was originally built using a web scraper that scraped from LinkedIn which was written in python. The web visualizer was built using javascript and the VisJS library to have a dynamic view and aesthetically pleasing physics. In order to have a clean display, web components were used.

## Challenges we ran into

Gathering and scraping the data was a big obstacle, had to pattern match using LinkedIn's data

## Accomplishments that we're proud of

It works!!!

## What we learned

Learning to use various libraries and how to setup a website

## What's next for Yeevaluation

Finetuning and reimplementing dynamic node graph, history. Revamping project, considering it was only made in 24 hours.